Pour les développeurs HGB^

J'ai développé CiDess avec Visual Basic 5. Dans cette page je vous donne quelques codes sources.

Vous trouverez aussi les structures détaillées des formats de fichiers utilisés par CiDess. Vous pouvez ainsi utiliser les données des fichiers générés par CiDess dans vos applications.

Les procédures de sauvegarde au format GIF utilisent le code écrit par Arkadiy Olovyannikov (ark@fesma.ru).

Sources de l'éditeur de fichiers LNG
Structures des fichiers utilisés par CiDess
        Fichiers *.CID
        Fichiers *.CID V2
        Fichiers *.CIT
        Fichier CiDess.DAT
        Fichier CiDess.DIP
        Fichier CiDess.LND
        Fichier CiDess.LND V2
        Fichier CiDess.LND V3
        Fichier CiDess.WSP
        Fichiers *.BMP.TXT
        Fichiers *.MAC
        Fichiers *.OUT
        Fichier CiDess.USI
Sources de la visualisation en 3D

 Sources de l'éditeur de fichiers LNG HGB<>^

Le système de support multi langue que j'ai mis au point pour CiDess convient particulièrement pour ajouter le support de langues étrangères à des logiciels déjà terminés.

L'éditeur de fichiers LNG existe en deux versions :
- une complète pour les programmeurs
- une réduite pour les traducteurs

La version complète vous permet d'ajouter le support de langues étrangères à un projet VB existant en automatisant un grand nombre de tâches.

La version réduite, qui est celle disponible dans la page Pour les traducteurs, permet à des tiers, même s'ils n'ont aucune compétence en programmation, de traduire le logiciel dans la langue de leur choix.

Cliquez ici pour télécharger les sources de l'éditeur de fichiers LNG (dernière mise à jour : 22/12/2014).

Décompressez l'archive dans un répertoire de votre choix ; toutes les explications se trouvent dans les fichiers _LisezMoi.html et _ReadMe.html.

 Structures des fichiers utilisés par CiDess HGB<>^

! Je mets à disposition ces informations pour que vous puissiez exploiter des données issues de CiDess avec vos propres applications.
Même si cela est possible, je vous déconseille fortement de bricoler ces fichiers avec un éditeur de texte. CiDess risque de ne plus fonctionner correctement et d'endommager vos fichiers CID. Si un de vos fichiers est corrompu, n'essayez pas de le réparer vous-même; restaurez le bon fichier en téléchargeant à nouveau CiDess
Pour vos expérimentations, je vous recommande d'installer une deuxième copie de CiDess réservée à cet usage dans un autre répertoire.

        Structure des fichiers *.CID
        Structure des fichiers *.CID V2
        Structure des fichiers *.CIT
        Structure du fichier CiDess.DAT
        Structure du fichier CiDess.DIP
        Structure du fichier CiDess.LND
        Structure du fichier CiDess.LND V2
        Structure du fichier CiDess.LND V3
        Structure du fichier CiDess.WSP
        Structure des fichiers *.BMP.TXT
        Structure des fichiers *.MAC
        Structure des fichiers *.OUT
        Structure du fichier CiDess.USI

Structure des fichiers *.CID HGB<>^

Ce format de fichier est celui utilisé par les anciennes versions (1 et 2).

C'est au format *.CID que vos circuits imprimés sont sauvegardés.

Voici la structure d'un fichier *.CID :

Ce qui est noir doit être saisi tel quel
Ce qui est bleu est une chaine de caractère quelconque
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière

"CIDESS","CID",Version_Format_CID
Longueur_Auteur

Auteur
Longueur_Mail
Mail
Longueur_Organisation
Organisation
Longueur_URL
URL
Longueur_Adresse
Adresse
Longueur_Nom_Projet
Nom_Projet
Longueur_Nom_Carte
Nom_Carte
Longueur_Date
Date
Longueur_Version
Version
Longueur_Commentaire_Nomenclature
Commentaire_Nomenclature
Longueur_Commentaire_Typon
Commentaire_Typon
Longueur_Commentaire_Realisation
Commentaire_Realisation
Taille_Totale_Du_Circuit_X,Taille_Totale_Du_Circuit_Y
Marge_Gauche,Marge_Haute,Marge_Droite,Marge_Basse
Nombre_De_Composants
Composant1_Categorie_FR,Composant1_ID_FR
Composant1_X1,Composant1_Y1
Composant1_X2,Composant1_Y2
Composant1_Angle
Composant1_Face

Composant1_Ref
Composant1_Valeur

Composant1_Coef_Pastilles
... même chose pour chaque composant ...
Nombre_De_Pistes
Piste1_Largeur
Piste1_Face
Piste1_Nombre_de_noeuds
Piste1_Noeud1_X
,Piste1_Noeud1_Y
... même chose pour chaque noeud ...
... même chose pour chaque piste ...


Quelques explications :

La taille totale enregistrée dans le fichier correspond à la taille du circuit + les marges

Ce sont les Catégories et les ID en Français qui sont utilisés comme clef. Cela ne pose absolument aucun problème avec les types de composants monolingue (où les ID et catégories Françaises et Anglaises sont identiques).

Pour un composant, face peut prendre 4 valeurs : 1, 2, 3 et 4. On peut voir à quoi cela corresponds sur l'image suivante :


Pour une piste, face ne peut prendre que 2 valeurs : 1 et 2. Sur l'image précédente, une piste en face 1 serait noire, une piste en face 2 bleue clair.

Lorsque l'on dessine un circuit en simple face, on ne peut tracer que des composants dont la face est 1, 2 ou 4 et que des pistes en face 1.

La position des composants classiques est définie par la postions du centre X1, Y1 et l'angle. X2 et Y2 ne sont pas utilisés et doivent être nuls.
La position des composants étirables est définie par la position de chacune des deux pastilles X1, Y1 et X2, Y2. L'angle n'est pas utilisé et doit rester nul.
Les coordonnées sont définies par rapport au coin supérieur gauche de l'écran, sans tenir compte des marges. L'axe des Y est dirigé vers le bas.

Un coefficient de pastille de 1000 équivaut à une taille de 100%

Les unités sont en mil (1 mil = 0,001 pouce soit 0,0254 mm)

Voici maintenant un exemple :



Ce fichier exemple est constitué :
- d'un condensateur C1 dont les pastilles ont étés grossies de 50%
- d'une résistance R1 étirable
- d'un transistor T1 monté côté cuivre
- d'un circuit IC1 CMS monté en surface côté composant
- d'un circuit IC2 CMS monté en surface côté cuivre
- d'un circuit IC3 CMS incliné de 30
- d'une piste côté cuivre (noire)
- d'une piste côté composant (bleue)

"CIDESS","CID",1
10
Rémy LUCAS
0

0

28
http://www.remylucas.fr
14
25000 Besançon
28
Projet exemples pour le site
22
Exemple de fichier CID
10
12/09/2005
3
1.1
101
Procurez-vous les composants avant de réaliser la carte.

Vous aurez peut-être à modifier le typon.
102
Commencez par les straps, ensuite les résistances, condensateurs, et terminez par les semi-conducteurs.
39
Utilisez de préférence la photogravure.
2500,1500
300,200,400,250
6
"Condos radiaux","d500 e200"
600,500
0,0
0
1
"C1"
"220f"
1500
"Resistances","h250 d90"
1050,500
1500,900
0
1
"R1"
"4,7K"
1000
"SOIC","DIL 10"
1850,550
0,0
0
3
"IC1"
""
1000
"SOIC","DIL 10"
1850,900
0,0
360
4
"IC2"
""
1000
"SOIC","DIL 10"
1050,950
0,0
30
3
"IC3"
""
1000
"Actifs 3 pins debouts","TO5"
600,1000
0,1400
0
2
"T1"
"2N1711"
1000
2
50
1
2
700,500
1050,500
30
2
3
1750,450
1100,450
1050,500


Structure des fichiers *.CID V2 HGB<>^

Ce format de fichier est celui utilisé par la version III.

C'est au format *.CID que vos circuits imprimés sont sauvegardés.

Voici la structure d'un fichier *.CID :

Un fichier CID V2 est un fichier CID V1 avec des informations supplémentaires liées aux nouvelles fonctionnalités rajoutées à la fin.

Ce qui est noir doit être saisi tel quel
Ce qui est bleu est une chaine de caractère quelconque
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est violet est une valeur booléenne

"CIDESS","CID",Version_Format_CID
Longueur_Auteur

Auteur
Longueur_Mail
Mail
Longueur_Organisation
Organisation
Longueur_URL
URL
Longueur_Adresse
Adresse
Longueur_Nom_Projet
Nom_Projet
Longueur_Nom_Carte
Nom_Carte
Longueur_Date
Date
Longueur_Version
Version
Longueur_Commentaire_Nomenclature
Commentaire_Nomenclature
Longueur_Commentaire_Typon
Commentaire_Typon
Longueur_Commentaire_Realisation
Commentaire_Realisation
Taille_Totale_Du_Circuit_X,Taille_Totale_Du_Circuit_Y
Marge_Gauche,Marge_Haute,Marge_Droite,Marge_Basse
Nombre_De_Composants
Composant1_Categorie_FR,Composant1_ID_FR
Composant1_X1,Composant1_Y1
Composant1_X2,Composant1_Y2
Composant1_Angle
Composant1_Face

Composant1_Ref
Composant1_Valeur

Composant1_Coef_Pastilles
... même chose pour chaque composant ...
Nombre_De_Pistes
Piste1_Largeur
Piste1_Face
Piste1_Nombre_de_noeuds
Piste1_Noeud1_X
,Piste1_Noeud1_Y
... même chose pour chaque noeud ...
... même chose pour chaque piste ...
Nombre_De_TexteCuivre
TexteCuivre1_FontName
TexteCuivre1_FontSize
TexteCuivre1_FontBold
TexteCuivre1_FontItalic
TexteCuivre1_FontStrikethru
TexteCuivre1_FontUnderline
TexteCuivre1_FTransparent

TexteCuivre1_X
TexteCuivre1_Y
TexteCuivre1_Angle
TexteCuivre1_Face

TexteCuivre1_Split
TexteCuivre1_Longueur_Texte
TexteCuivre1_Texte
TexteCuivre1_Lien
... même chose pour chaque texte cuivre ...
HTML_InfoGenerales_Chk_Projet
HTML_InfoGenerales_Chk_Carte
HTML_InfoGenerales_Chk_Date
HTML_InfoGenerales_Chk_Version
HTML_InfoGenerales_Chk_Auteur
HTML_InfoGenerales_Chk_Organisation
HTML_InfoGenerales_Chk_Coordonnees
HTML_InfoGenerales_Chk_Mail
HTML_InfoGenerales_Chk_www
HTML_Chk_Schema
HTML_Schema_Chk_ImApercu

HTML_Schema_NomFichierApercu
HTML_Schema_Chk_ImSchema
HTML_Schema_NomFichierSchema
HTML_Schema_PasDeCommentaire
HTML_Schema_CommentaireDansFichierExterne
HTML_Schema_CommentaireTexte

HTML_Schema_NomFichierCommentaire
HTML_Schema_LongueurCommentaire
HTML_Schema_TexteCommentaire
HTML_Chk_Implantation
HTML_Implantation_Chk_Commentaire
HTML_Implantation_Chk_ImageApercu
HTML_Implantation_Chk_ImageImplantation
HTML_Implantation_Rotation

HTML_Implantation_Normal
HTML_Implantation_VueReelle

HTML_Implantation_ZoomApercu
HTML_Implantation_ZoomImplantation
HTML_Implantation_Chk_CU1
HTML_Implantation_Chk_CU2
HTML_Implantation_Chk_SOL
HTML_Implantation_Chk_Grille
HTML_Implantation_Chk_TXT
HTML_Implantation_Chk_TxtRef
HTML_Implantation_Chk_TxtValeur
HTML_Implantation_Chk_TxtSurFondBlanc
HTML_Implantation_TxtTaille
HTML_Implantation_Chk_ApercuImageExt1

HTML_Implantation_NomFichier_ApercuImageExt1
HTML_Implantation_Chk_ImageExt1
HTML_Implantation_NomFichier_ImageExt1
HTML_Implantation_Chk_ApercuImageExt2
HTML_Implantation_NomFichier_ApercuImageExt2
HTML_Implantation_Chk_ImageExt2
HTML_Implantation_NomFichier_ImageExt2
HTML_Chk_Nomenclature
HTML_Nomenclature_Chk_Liste
HTML_Nomenclature_Chk_Commentaire
HTML_Chk_Typon
HTML_Typon_Chk_Commentaire
HTML_Typon_Chk_Face1
HTML_Typon_Chk_Face2
HTML_Typon_Chk_ImageApercuTypon
HTML_Typon_Chk_ImageTypon
HTML_Typon_ZoomApercu
HTML_Typon_ZoomTypon
HTML_Typon_Rotation

HTML_Typon_Normal
HTML_Typon_Inverse

HTML_Typon_CoefPastille
HTML_Typon_CoefPiste
HTML_Typon_Chk_CMSnonPercee

HTML_Typon_GravureNormale
HTML_Typon_GravurePlanMasse
HTML_Typon_GravureAnglaise
HTML_Typon_TexteCUNormal
HTML_Typon_TexteCUNegatif

HTML_TyponEcartPlanDeMasse
HTML_Chk_Telechargement
HTML_Telechargement_Chk_CID
HTML_Telechargement_Chk_CIT
HTML_Telechargement_Chk_FichierSupp

HTML_Telechargement_NomFichier_FichierSupp
HTML_Telechargement_Chk_FichierSupp2
HTML_Telechargement_NomFichier_FichierSupp2
HTML_Telechargement_Chk_CommentaireTelechargement
HTML_Telechargement_LongueurCommentaire

HTML_Telechargement_TexteCommentaire
HTML_Parametres_Racine
HTML_Parametres_Emplacement

HTML_Parametres_Chk_CreeSousDossier
Longueur_ExtraTexte
ExtraTexte


Quelques explications :

La taille totale enregistrée dans le fichier correspond à la taille du circuit + les marges

Ce sont les Catégories et les ID en Français qui sont utilisés comme clef. Cela ne pose absolument aucun problème avec les types de composants monolingue (où les ID et catégories Françaises et Anglaises sont identiques).

Pour un composant, face peut prendre 4 valeurs : 1, 2, 3 et 4. On peut voir à quoi cela corresponds sur l'image suivante :


Pour une piste, face ne peut prendre que 2 valeurs : 1 et 2. Sur l'image précédente, une piste en face 1 serait noire, une piste en face 2 bleue clair.

Pour un texte cuivre, Face peut prendre 3 valeurs : 1 : texte en CU1, 2 : texte en CU2, 3 : texte en CU1 et CU2. Un texte cuivre avec face = 1 serait dessiné en noir sur l'image précédente.

Si split = false, le texte cuivre est lisible normalement. Si split = true, le texte est inversé comme dans un miroir ; un texte cuivre en face CU1 est lisible par transparence côté composants.

Lorsque l'on dessine un circuit en simple face, on ne peut tracer que des composants dont la face est 1, 2 ou 4 et que des pistes et des textes cuivre en face 1.

La position des composants classiques est définie par la postions du centre X1, Y1 et l'angle. X2 et Y2 ne sont pas utilisés et doivent être nuls.
La position des composants étirables est définie par la position de chacune des deux pastilles X1, Y1 et X2, Y2. L'angle n'est pas utilisé et doit rester nul.
Les coordonnées sont définies par rapport au coin supérieur gauche de l'écran, sans tenir compte des marges. L'axe des Y est dirigé vers le bas.

Un coefficient de pastille de 1000 équivaut à une taille de 100%

Les unités sont en mil (1 mil = 0,001 pouce soit 0,0254 mm)

Les variables dont le nom commence par HTML_ correspondent à la sauvegarde des paramètres de génération de dossier technique HTML :

        - Les variables HTML_XXX_Chk_YYY correspondent aux cases à cocher (1 pour coché, 0 pour décoché) d'un paramètre YYY de la section XXX

        - Chaque variable HTML_Chk_XXX correspond à la case à cocher servant à inclure ou non une section XXX dans le dossier HTML (1 pour coché, 0 pour décoché)

        - Une des trois variables HTML_Schema_PasDeCommentaire, HTML_Schema_CommentaireDansFichierExterne ou HTML_Schema_CommentaireTexte doit être vraie, les deux autres fausses

        - Une des deux variables HTML_Typon_Normal, HTML_Typon_Inverse doit être vraie, l'autre fausse

        - Une des trois variables HTML_Typon_GravureNormale, HTML_Typon_GravurePlanMasse ou HTML_Typon_GravureAnglaise doit être vraie, les deux autres fausses

        - Une des deux variables HTML_Typon_TexteCUNormal, HTML_Typon_TexteCUNegatif doit être vraie, l'autre fausse

        - Une des deux variables HTML_Implantation_Normal, HTML_Implantation_VueReelle doit être vraie, l'autre fausse

        - Signification des variables correspondant à des index de liste ou scrollbars :

HTML_Implantation_ZoomApercu
Valeur dans le fichierSignification dans CiDess
0x0.25
1x0.50
2x0.75
3x1
4x2
5x3
6x4
7x5
8x6
9x7
10x8
11x9
12x10

HTML_Implantation_ZoomImplantation
Valeur dans le fichierSignification dans CiDess
0x1
1x2
2x3
3x4
4x5
5x6
6x7
7x8
8x9
9x10

HTML_Implantation_TxtTaille
Valeur dans le fichierSignification dans CiDess
04 points
15 points
26 points
37 points
48 points
59 points
610 points
711 points
812 points

HTML_Implantation_Rotation
Valeur dans le fichierSignification dans CiDess
00
190
2180
3270

HTML_Typon_ZoomApercu
Valeur dans le fichierSignification dans CiDess
0x0.254
1x0.5
2x0.75
3x1
4x2
5x3
6x4
7x5
8x6
9x7
10x8
11x9
12x10

HTML_Typon_ZoomTypon
Valeur dans le fichierSignification dans CiDess
0x1
1x2
2x3
3x4
4x5
5x6
6x7
7x8
8x9
9x10

HTML_Typon_Rotation
Valeur dans le fichierSignification dans CiDess
00
190
2180
3270

        - HTML_Typon_CoefPastille est le coefficient d'épaisseur des pastilles de 50 à 200 (100 pour 100%)

        - HTML_Typon_CoefPiste est le coefficient d'épaisseur des pistes de 50 à 200 (100 pour 100%)

        - HTML_TyponEcartPlanDeMasse doit valoir entre 10 et 50

        - En fonction des options choisies (valeurs booléennes et valeurs des cases à cocher), certains paramètres ne seront pas utilisés pour la génération du dossier HTML, mais des valeurs peuvent leur être affectées quand même.
Ces données seront préservées par CiDess et si l'utilisateur pourra les utiliser s'il coche les cases correspondantes.

La chaîne de caractère non formaté ExtraTexte n'est pas utilisée par CiDess. Elle est simplement lue à l'ouverture du fichier et sauvée telle quelle à l'enregistrement. Cet espace a été prévu pour que des évolutions ultérieures optionnelles n'imposent pas de mise à jour et que les fichiers restent utilisables par CiDess III sans perte de données.
Actuellement d'autres auteurs de logiciels sont en train de travailler pour faire fonctionner leurs applications avec CiDess. Je définirai le temps voulu des règles d'utilisation pour qu'il n'y ait pas conflit lorsque plusieurs logiciels ajouteront leurs données dans un même fichier CID.

Voici maintenant un exemple :



Ce fichier exemple est constitué :
- d'un condensateur C1 dont les pastilles ont étés grossies de 50%
- d'une résistance R1 étirable
- d'un transistor T1 monté côté cuivre
- d'un circuit IC1 CMS monté en surface côté composant
- d'un circuit IC2 CMS monté en surface côté cuivre
- d'un circuit IC3 CMS incliné de 30
- d'une piste côté cuivre (noire)
- d'une piste côté composant (bleue)
- d'un texte côté cuivre (noir)
- d'un texte côté composant (bleu)

"CIDESS","CID",2
10
Rémy LUCAS
29
electroremy@electroremy.fr.st
0

28
http://www.electroremy.fr.st
14
25000 Besançon
28
Projet exemples pour le site
22
Exemple de fichier CID
10
01/04/2008
3
1.1
101
Procurez vous les composants avant de réaliser la carte.

Vous aurez peut être à modifier le typon.
102
Commencez par les straps, ensuite les résistances, condensateurs, et terminez par les semiconducteurs.
39
Utilisez de préférence la photogravure.
2900,1500
200,200,300,250
6
"Condos radiaux","d500 e200"
500,500
0,0
0
1
"C1"
"220f"
1500
"SOIC","DIL 10"
1750,550
0,0
0
3
"IC1"
""
1000
"SOIC","DIL 10"
1750,900
0,0
360
4
"IC2"
""
1000
"SOIC","DIL 10"
950,950
0,0
30
3
"IC3"
""
1000
"Actifs 3 pins debouts","TO5"
500,1000
0,1400
0
2
"T1"
"2N1711"
1000
"Resistances","h250 d90"
1425,900
975,500
0
1
"R1"
"4,7K"
1000
2
50
1
2
600,500
950,500
30
2
3
1650,450
1000,450
950,500
2
"Arial"
15
#FALSE#
#FALSE#
#FALSE#
#FALSE#
#TRUE#
2150
350
15
1
#FALSE#
9
Texte CU1
8
"Arial"
18
#TRUE#
#FALSE#
#FALSE#
#TRUE#
#TRUE#
2200
850
135
2
#FALSE#
13
Texte CU2 Inv
8
1
1
1
1
1
1
1
1
1
0
1
""
1
""
#FALSE#
#FALSE#
#TRUE#
""
0

1
1
1
1
3
1
0
#TRUE#
#FALSE#
1
1
1
0
1
1
0
1
4
0
""
0
""
0
""
0
""
1
1
1
1
1
1
1
1
1
3
3
0
#TRUE#
#FALSE#
100
100
0
#TRUE#
#FALSE#
#FALSE#
#TRUE#
#FALSE#
20
1
1
1
0
""
0
""
0
0

""
""
1
0


Structure des fichiers *.CIT HGB<>^

C'est au format *.CIT que vos bibliothèques de types de composant sont sauvegardés.

Voici la structure d'un fichier *.CIT :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est violet est une valeur booléenne

"CIDESS","CIT",Version_Format_CIT
Nombre_de_types_de_composant

Catégorie_FR,ID_FR,Catégorie_EN,ID_EN,Composant_Etirable
Nombre_de_solides
Type_de_solide
,Centre_X,Centre_Y,Centre_Z,Taille_X,Taille_Y,Taille_Z,Angle,Couleur3D
... même chose pour les autres solides
Nombre_de_pastilles
Type_de_pastille
,Calibre,Trou,Centre_X,Centre_Y
... même chose pour les autres pastilles
Nombre_de_pattes
Numero_pastille
,X,Y,Z
... même chose pour les autres pattes
... même chose pour les autres composants

Quelques explications :

Les unités sont en mil (1 mil = 0,001 pouce soit 0,0254 mm)

Voici les différentes valeurs possibles Type_de_solide :

Type_de_solide
Dans le fichierDans CiDess
0Pavé droit
1Cylindre couché
2Cylindre debout
3Tore debout
4Tore couché
5Ligne
6Croix
7Cercle

Voici les différentes valeurs possibles pour Type_de_pastille :

Type_de_pastille
Dans le fichierDans CiDess
0Ronde
1Ronde percée
2Carrée
3Carrée percée
4Rectangulaire horizontale
5Rectangulaire horizontale percée
6Rectangulaire verticale
7Rectangulaire verticale percée

Les coordonnées x,y,z d'une patte définissent le point d'attache de la patte sur le composant

Lorsque le composant est étirable :
- il doit comporter exactement 2 pastilles
- les coordonnées x,y des pastilles ne sont pas utilisés

Contrairement à la saisie dans l'éditeur de composant, la coordonnée Z d'un solide est la coordonnée Z de son centre, et non pas la distance entre le solide et la carte. L'éditeur effectue automatiquement la conversion à la frappe.

Voici maintenant un exemple :

Ce fichier exemple est constitué de trois types de composant dont voici les caractéristiques :







"CIDESS","CIT",1
3
"d400 e200","Condos radiaux","d400 e200","Radial caps",#FALSE#
4
2,0,0,525,400,400,650,0,13210
2,0,0,150,350,350,100,0,4970
2,0,0,50,400,400,100,0,13210
6,-50,-100,0,100,100,0,0,0
2
1,80,26,-100,0
1,80,26,100,0
0
"h250 d90","Resistances","h250 d90","Resistances",#TRUE#
1
1,0,0,45,250,90,90,0,9211135
2
1,80,26,-700,0
1,80,26,700,0
2
1,-125,0,45
2,125,0,45
"M6","Vis","M6","Screw",#FALSE#
9
2,0,0,98,394,394,197,0,10066329
5,0,171,0,197,0,0,0,0
5,148,85,0,-98,171,0,0,0
5,148,-85,0,98,171,0,0,0
5,0,-171,0,-197,0,0,0,0
5,-148,85,0,98,171,0,0,0
5,-148,-85,0,-98,171,0,0,0
5,39,0,0,0,341,0,0,0
5,-39,0,0,0,341,0,0,0
1
1,236,118,0,0
0



Structure du fichier CiDess.DAT HGB<>^

Le fichier CiDess.DAT contient l'ensemble des types de composant fournis avec CiDess.

Le format de ce fichier est identique à celui des fichiers *.CIT, seule la première ligne change :
"CIDESS","DAT",... au lieu de "CIDESS","CIT",....

! Surtout ne modifiez pas les types de composant existants dans CiDess.dat; les autres utilisateurs ne pourraient plus lire vos fichiers *.CID et vice versa !
Lorsque je mets à jour CiDess.dat, je ne fais que rajouter de nouveaux types de composant sans modifier les existants.
CiDess.exe vérifie l'intégrité de CiDess.dat à chaque démarrage.

Structure du fichier CiDess.DIP HGB<>^

Le fichier CiDess.DIP contient les valeurs par défaut des commentaires liés aux fichiers *.CID

Voici la structure du fichier CiDess.DIP :

Ce qui est noir doit être saisi tel quel
Ce qui est bleu est une chaine de caractère quelconque
Ce qui est rouge est une valeur numérique entière

"CIDESS","DIP",Version_Format_DIP
Longueur_Auteur

Auteur
Longueur_Mail
Mail
Longueur_Organisation
Organisation
Longueur_URL
URL
Longueur_Adresse
Adresse
Longueur_Nom_Projet
Nom_Projet
Longueur_Nom_Carte
Nom_Carte
Longueur_Date
Date
Longueur_Version
Version
Longueur_Commentaire_Nomenclature
Commentaire_Nomenclature
Longueur_Commentaire_Typon
Commentaire_Typon
Longueur_Commentaire_Realisation
Commentaire_Realisation

Voici un exemple :

"CIDESS","DIP",1
10
Rémy LUCAS
0

0

28
http://www.remylucas.fr
0

0

0

0

1
1
101
Procurez vous les composants avant de réaliser la carte.

Vous aurez peut être à modifier le typon.
102
Commencez par les straps, ensuite les résistances, condensateurs, et terminez par les semiconducteurs.
39
Utilisez de préférence la photogravure.


Structure du fichier CiDess.LND HGB<>^

Ce format de fichier est celui utilisé par les anciennes versions (1 et 2).

Le fichier CiDess.LND contient vos paramètres d'affichage pour CiDess.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est violet est une valeur booléenne

"CIDESS","LND",Version_Format_LND
Nom_fichier_LNG_au_demarrage
Guides_visibles
Tolerance
Utiliser_zoom_pour_prev
Layer_CU1_visible
Layer_CU2_visible
Layer_SOL_visible
Layer_TXT_visible

Texte_affiche
Taille_du_texte
Texte_sur_fond_blanc
Zoom
Grille
Quadrillage_visible


Quelques explications :

Voici la correspondance entre les valeurs dans le fichier et leur signification dans CiDess :

Tolérance
Dans le fichierDans CiDess
0Aucune
110 mil
250 mil
3100 mil

Texte affiché
Dans le fichierDans CiDess
0Référence et valeur
1Référence
2Valeur

Zoom
Dans le fichierDans CiDess
0x 1
1x 2
2x 5
3x 10

Grille
Dans le fichierDans CiDess
0100 mil
150 mil
210 mil
35 mil
41 mil
51 mm
60,1 mm

Taille_du_texte est une valeur entière comprise entre 4 et 12.

Voici un exemple de fichier LND :

"CIDESS","LND",1
"CiDessFR.LNG"
#TRUE#
2
#FALSE#
#TRUE#
#TRUE#
#TRUE#
#TRUE#
0
10
#TRUE#
0
1
#TRUE#


Structure du fichier CiDess.LND V2 HGB<>^

Ce format de fichier est celui utilisé par la version III.

Le fichier CiDess.LND contient vos paramètres d'affichage pour CiDess.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est violet est une valeur booléenne
Ce qui est bleu est une valeur single
Ce qui est orange est une valeur long

"CIDESS","LND",Version_Format_LND
Nom_fichier_LNG_au_demarrage
Guides_visibles
Tolerance
Utiliser_zoom_pour_prev
Layer_CU1_visible
Layer_CU2_visible
Layer_SOL_visible
Layer_TXT_visible

Texte_affiche
Taille_du_texte
Texte_sur_fond_blanc
Zoom
Grille
Quadrillage_visible
CoefZoom1
MiseAJourDateAuto
ToujoursAfficherLesTextesCuivreNonRetournés

Solide_affiche
CoulLayer(0)
CoulLayerSel(0)
ImprCoulLayerC(0)
ImprCoulLayerNB(0)
CoulLayer(1)
CoulLayerSel(1)
ImprCoulLayerC(1)
ImprCoulLayerNB(1)
CoulLayer(2)
CoulLayerSel(2)
ImprCoulLayerC(2)
ImprCoulLayerNB(2)
CoulLayer(3)
CoulLayerSel(3)
ImprCoulLayerC(3)
ImprCoulLayerNB(3)
CoulLayer(4)
CoulLayerSel(4)
ImprCoulLayerC(4)
ImprCoulLayerNB(4)
CoulFondCi
CoulBordCi
CoulMargeCi
CoulZint
CoulLayerFonds
CoulGrille

NumerotationAutomatique
PasGrillePerso
PasGrilleAff


Quelques explications :

Voici la correspondance entre les valeurs dans le fichier et leur signification dans CiDess :

Tolérance
Dans le fichierDans CiDess
0Aucune
110 mil
250 mil
3100 mil

Texte affiché
Dans le fichierDans CiDess
0Référence et valeur
1Référence
2Valeur

Zoom
Dans le fichierDans CiDess
0x 1
1x 2
2x 5
3x 10

Grille
Dans le fichierDans CiDess
0100 mil
150 mil
210 mil
35 mil
41 mil
51 mm
60,1 mm
7Personnalisée

Solide_affiché
Dans le fichierDans CiDess
0Tous
1Face 1
2Face 2

Taille_du_texte est une valeur entière comprise entre 4 et 12.

CoefZoom1 est le coefficient d'affichage à l'écran en pixels par unite (par défaut 0,12)

CoulLayer(i) : couleur des objets l'écran
CoulLayerSel(i) : couleur des objets sélectionnés à l'écran
ImprCoulLayerC(i) : couleur des objets lors de l'impression en couleur
ImprCoulLayerNB(i) : couleur des objets lors de l'impression en noir et blanc

Valeurs de i
ilayer
0cuivre 1
1cuivre 2
2solide
3texte
4cuivre 1 et cuivre 2

CoulFondCi : couleur du fond du circuit imprimé
CoulBordCi : couleur du contour du circuit imprimé
CoulMargeCi : couleur des marges autour du circuit imprimé
CoulZint : couleur d'arrière-plan en dehors du circuit et des marges
CoulLayerFonds : couleur des textes CU1, CU2, TXT, SOL dans la barre d'outils
CoulGrille : couleur de la grille

Une couleur est définie par une valeur long = Rouge + Vert * 256 + Bleu * 65536 ; les composantes rouge, vert et bleu étant des entiers compris entre 0 et 255.

PasGrillePerso et PasGrilleAff sont des valeurs single en mil.

Voici un exemple de fichier LND :

"CIDESS","LND",2
"CiDessFR.LNG"
#TRUE#
2
#TRUE#
#TRUE#
#TRUE#
#TRUE#
#TRUE#
0
8
#FALSE#
0
1
#TRUE#
.12
#TRUE#
#FALSE#
0
0
8421504
12895428
12895428
16744448
16760960
16761984
8421504
255
8421631
255
0
51200
8454016
65280
0
16711680
16744576
14795938
10658466
16777215
16711880
16774650
0
16777215
0
#TRUE#
70.86614
141.7323


Structure du fichier CiDess.LND V3 HGB<>^

Ce format de fichier est celui utilisé par la version 4.

Le fichier CiDess.LND contient vos paramètres d'affichage pour CiDess.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est violet est une valeur booléenne
Ce qui est bleu est une valeur single
Ce qui est orange est une valeur long

"CIDESS","LND",Version_Format_LND
Nom_fichier_LNG_au_demarrage
Guides_visibles
Tolerance
Utiliser_zoom_pour_prev
Layer_CU1_visible
Layer_CU2_visible
Layer_SOL_visible
Layer_TXT_visible

Texte_affiche
Taille_du_texte
Texte_sur_fond_blanc
Zoom
Grille
Quadrillage_visible
CoefZoom1
MiseAJourDateAuto
ToujoursAfficherLesTextesCuivreNonRetournés

Solide_affiche
CoulLayer(0)
CoulLayerSel(0)
ImprCoulLayerC(0)
ImprCoulLayerNB(0)
CoulLayer(1)
CoulLayerSel(1)
ImprCoulLayerC(1)
ImprCoulLayerNB(1)
CoulLayer(2)
CoulLayerSel(2)
ImprCoulLayerC(2)
ImprCoulLayerNB(2)
CoulLayer(3)
CoulLayerSel(3)
ImprCoulLayerC(3)
ImprCoulLayerNB(3)
CoulLayer(4)
CoulLayerSel(4)
ImprCoulLayerC(4)
ImprCoulLayerNB(4)
CoulFondCi
CoulBordCi
CoulMargeCi
CoulZint
CoulLayerFonds
CoulGrille

NumerotationAutomatique
PasGrillePerso
PasGrilleAff
CoulCuDetoure
CoulCuGrave
CoulCuIntact
CoulPercage
CoulG54Axe
CoulG54Past1
CoulG54Past2

Quelques explications :

Voici la correspondance entre les valeurs dans le fichier et leur signification dans CiDess :

Tolérance
Dans le fichierDans CiDess
0Aucune
110 mil
250 mil
3100 mil

Texte affiché
Dans le fichierDans CiDess
0Référence et valeur
1Référence
2Valeur

Zoom
Dans le fichierDans CiDess
0x 1
1x 2
2x 5
3x 10

Grille
Dans le fichierDans CiDess
0100 mil
150 mil
210 mil
35 mil
41 mil
51 mm
60,1 mm
7Personnalisée

Solide_affiché
Dans le fichierDans CiDess
0Tous
1Face 1
2Face 2

Taille_du_texte est une valeur entière comprise entre 4 et 12.

CoefZoom1 est le coefficient d'affichage à l'écran en pixels par unite (par défaut 0,12)

CoulLayer(i) : couleur des objets l'écran
CoulLayerSel(i) : couleur des objets sélectionnés à l'écran
ImprCoulLayerC(i) : couleur des objets lors de l'impression en couleur
ImprCoulLayerNB(i) : couleur des objets lors de l'impression en noir et blanc

Valeurs de i
ilayer
0cuivre 1
1cuivre 2
2solide
3texte
4cuivre 1 et cuivre 2

CoulFondCi : couleur du fond du circuit imprimé
CoulBordCi : couleur du contour du circuit imprimé
CoulMargeCi : couleur des marges autour du circuit imprimé
CoulZint : couleur d'arrière-plan en dehors du circuit et des marges
CoulLayerFonds : couleur des textes CU1, CU2, TXT, SOL dans la barre d'outils
CoulGrille : couleur de la grille
CoulCuDetoure : couleur des parties détourées dans l'image pour logiciel de gravure CNC
CoulCuGrave : couleur des parties gravées (c'est à dire fraisées pour retirer le cuivre) dans l'image pour logiciel de gravure CNC
CoulCuIntact : couleur du fond dans l'image pour logiciel de gravure CNC correspondant au cuivre que la gravure laisse intacte (hormis les passages de la fraise pour le détourage)
CoulPercage : couleur dans l'image pour logiciel de gravure CNC correspondant aux perçages

CoulG54Axis, CoulG54Pad1 et CoulG54Pad2 sont utilisées pour positionner le système daxes de la machine à lécran sur le circuit lors du perçage avec une machine CNC. Pour éviter tout risque de confusion, CoulG54Pad1 et CoulG54Pad2 doivent être clairement distinctes entres elles, ainsi que des couleurs utilisées pour CU1 et CU2.

Une couleur est définie par une valeur long = Rouge + Vert * 256 + Bleu * 65536 ; les composantes rouge, vert et bleu étant des entiers compris entre 0 et 255.

PasGrillePerso et PasGrilleAff sont des valeurs single en mil.

Voici un exemple de fichier LND :

"CIDESS","LND",3
"CiDessFR.LNG"
#TRUE#
2
#TRUE#
#TRUE#
#TRUE#
#TRUE#
#TRUE#
0
8
#FALSE#
0
1
#TRUE#
.12
#TRUE#
#FALSE#
0
0
8421504
12895428
12895428
16744448
16760960
16761984
8421504
255
8421631
255
0
51200
8454016
65280
0
16711680
16744576
14795938
10658466
16777215
16711880
16774650
0
16777215
0
#TRUE#
70.86614
141.7323
16728064
0
16777215
255
16711935
41215
16711935


Structure du fichier CiDess.WSP HGB<>^

Ce fichier est utilisé par la version III.

CiDess.WSP contient les paramètres de la surface occupée à l'écran par CiDess.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est rouge est une valeur numérique entière
Ce qui est bleu est une valeur double

"CIDESS","WSP",Version_Format_WSP
Mode
PersoGauche
PersoHaut
PersoLargeur
PersoHauteur


PersoGauche et PersoHaut définissent la position du coin supérieur gauche de la zone d'affichage personnalisée en twips.
PersoLargeur et PersoHauteur définissent la taille de la zone d'affichage personnalisée en twips.

Valeurs possibles pour Mode
Dans CiDess.WSPSignification dans CiDess
1Ecran entier
2Surface de travail utile
3Personnalisé

Voici un exemple de fichier CiDess.WSP :

"CIDESS","WSP",1
2
360
660
12000
9660


Structure des fichiers *.BMP.TXT HGB<>^

Ce fichier est utilisé par la version 4.

Lors de la création d'une image BMP pour logiciel de gravure CNC, CiDess vous propose de créer, en plus du fichier .BMP, un fichier info complémentaire portant le même nom mais avec l'extension .BMP.TXT; ce fichier contient des informations utiles pour l'utilisation de l'image BMP avec un autre logiciel.

Le logiciel "BTP4M" est capable de lire directement le fichier .BMP et le fichier .BMP.TXT qui l'accompagne.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est bleu est une valeur double
Ce qui est violet est une valeur booléenne
Ce qui est orange est une valeur long

"CIDESS",".BMP.TXT",Version_Format_BMPTXT
"Face",Face
"Taille X en unités",TailleX
"Taille Y en unités",TailleY
"Couleur des pistes en cuivre à détourer",CoulCuDetoure
"Couleur des surfaces à graver",CoulCuGrave
"Couleur du fond (cuivre non usiné)",CoulCuIntact
"Couleur des perçages",CoulPercage
"Nombre de pixels par unité",pcoef
"Nombre de mm par unité",0.0254
"Aucun perçage",AucunPercage
"Pastilles CMS jamais percées",CmsJamaisTroue
"Style d'usinage",TypeGravure
"Nom du fichier CID correspondant",NomFichierCID
"Nom du fichier BMP correspondant",NomFichierBMP
"Date de création",Date
"Position des perçages indiqués à la suite",PresenceListeDesPercages
"(coordonnées en pixels image, diamètre en unités)"
"Perçage X=",PerçageX1,"Y=",PerçageY1,"D=",PerçageD1
...
"Perçage X=",PerçageXn,"Y=",PerçageYn,"D=",PerçageDn

Face ne peut prendre que deux valeurs : 1 ou 2, pour respectivement l'usinage du cuivre côté CU1 ou CU2.

TailleX et TailleY : taille, sans marges, du circuit en unités (mil)

CoulCuDetoure : couleur des parties détourées dans l'image pour logiciel de gravure CNC
CoulCuGrave : couleur des parties gravées (c'est à dire fraisées pour retirer le cuivre) dans l'image pour logiciel de gravure CNC
CoulCuIntact : couleur du fond dans l'image pour logiciel de gravure CNC correspondant au cuivre que la gravure laisse intacte (hormis les passages de la fraise pour le détourage)
CoulPercage : couleur dans l'image pour logiciel de gravure CNC correspondant au perçages

Une couleur est définie par une valeur long = Rouge + Vert * 256 + Bleu * 65536 ; les composantes rouge, vert et bleu étant des entiers compris entre 0 et 255.

Les autres valeurs correspondent aux réglages de CiDess ayant servit à générer l'image BMP; elles ne sont normalement pas nécessaires au logiciel CNC qui va exploiter l'image.

L'image ci-dessous montre comment le logiciel CNC doit exploiter l'image :



Sur la partie haute de l'image, avec les rectangles et les cercles bleus, gris et rouges, le petit disque noir représente la fraise de la machine CNC, et les pointillés les parcours d'outils. La couleur blanche sur l'image correspond à CoulCuIntact.

La partie basse de l'image montre l'usinage des rectangles sur un circuit imprimé (en brun) recouvert d'une couche de cuivre (en orange).
Dans les usinages CoulCuDetoure et CoulCuGrave, la fraise ne fait qu'usiner la couche de cuivre; dans l'usinage de CoulPercage, la fraise usine toute l'épaisseur du circuit.

Si la liste des perçages figure dans le fichier .BMP.TXT, les perçage ne sont pas dans l'image.

Voici un premier exemple de fichier .BMP.TXT :

"CIDESS",".BMP.TXT",1
"Face",1
"Taille X en unités",2700
"Taille Y en unités",1500
"Couleur des pistes en cuivre à détourer",16711680
"Couleur des surfaces à graver",0
"Couleur du fond (cuivre non usiné)",65535
"Couleur des perçages",255
"Nombre de pixels par unité",.479999989271164
"Nombre de mm par unité",.0254
"Aucun perçage",#FALSE#
"Pastilles CMS jamais percées",#FALSE#
"Style d'usinage",1
"Nom du fichier CID correspondant","D:\CiDess\fichiers_tests\test_CNC.cid"
"Nom du fichier BMP correspondant","D:\CiDess\fichiers_tests\Test_CNC_Face1_Detoure.bmp"
"Date de création","23/08/2014"
"Position des perçages indiqués à la suite",#FALSE#


Voici un deuxième exemple de fichier .BMP.TXT :

"CIDESS",".BMP.TXT",1
"Face",1
"Taille X en unités",2700
"Taille Y en unités",1500
"Couleur des pistes en cuivre à détourer",16711680
"Couleur des surfaces à graver",0
"Couleur du fond (cuivre non usiné)",65535
"Couleur des perçages",255
"Nombre de pixels par unité",.479999989271164
"Nombre de mm par unité",.0254
"Aucun perçage",#FALSE#
"Pastilles CMS jamais percées",#FALSE#
"Style d'usinage",1
"Nom du fichier CID correspondant","D:\CiDess\fichiers_tests\test_CNC.cid"
"Nom du fichier BMP correspondant","D:\CiDess\fichiers_tests\Test_CNC_Face1_Detoure.bmp"
"Date de création","23/08/2014"
"Position des perçages indiqués à la suite",#TRUE#
"(coordonnées en pixels image, diamètre en unités)"
"Perçage X=",680.16,"Y=",1649.24,"D=",118
"Perçage X=",680.16,"Y=",251,"D=",118
"Perçage X=",120,"Y=",959,"D=",39
"Perçage X=",120,"Y=",1079,"D=",39
"Perçage X=",120,"Y=",1583,"D=",26
"Perçage X=",72,"Y=",1487,"D=",26


Structure des fichiers *.MAC HGB<>^

Ce fichier est utilisé par la version 4.

Ce fichier sert à enregistrer les caractéristiques d'une machine CNC.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est bleu est une valeur double
Ce qui est violet est une valeur booléenne
Ce qui est orange est une valeur long

"CIDESS","MAC",VersionFichier
"Unites ",Unites
"Axe Broche ",AxeBroche
"Sens Axe Broche ",SensAxeBroche
"Orientation Rep.",OrientationRep
"Rotation Broche ",RotationBroche
"Corr. R Outil ",CorrROutil
"Corr. H Outil ",CorrHOutil
"Changement Outil",ChangementOutil
"Arrosage ",Arrosage
"Nom Fraiseuse ",NomFraiseuse
"Course X min ",CourseXmin
"Course X MAX ",CourseYmin
"Course Y min ",CourseZmin
"Course Y MAX ",CourseXmax
"Course Z min ",CourseYmax
"Course Z MAX ",CourseZmax
"Parking X ",ParkingX
"Parking Y ",ParkingY
"Parking Z ",ParkingZ
"S MAX ",VitesseBrocheMax
"Va MAX ",VitesseAvanceMax
"Nom Rep. Piece ",NomReperePiece
"Cmd. Supp. Debut",NombreCaracteresCommandesSuppDebut
CommandesSuppDebut
"Cmd. Supp. Fin ",NombreCaracteresCommandesSuppFin
CommandesSuppFin


Signification des variables :

Unites
    mm = 0
    inch = 1

AxeBroche
    X = 0
    Y = 1
    Z = 2

SensAxeBroche
    positif = 0
    negatif = 1

OrientationRep
    direct = 0
    indirect = 1

RotationBroche
    normal = 0
    Inverse = 1

CorrROutil
    normale = 0
    inversee = 1
    desactivee = 2

CorrHOutil
    positive = 0
    negative = 1
    desactive = 2

ChangementOutil
    automatique = 0
    manuel = 1

Arrosage
    oui = 0
    non = 1

Voici un exemple de fichier *.MAC:

"CIDESS","MAC",1
"Unites ",0
"Axe Broche ",2
"Sens Axe Broche ",0
"Orientation Rep.",0
"Rotation Broche ",0
"Corr. R Outil ",0
"Corr. H Outil ",0
"Changement Outil",1
"Arrosage ",1
"Nom Fraiseuse ","D4070 Sieg sans changeur"
"Course X min ",0
"Course X MAX ",200
"Course Y min ",0
"Course Y MAX ",300
"Course Z min ",0
"Course Z MAX ",50
"Parking X ",190
"Parking Y ",290
"Parking Z ",45
"S MAX ",10000
"Va MAX ",4000
"Nom Rep. Piece ","G54"
"Cmd. Supp. Debut",15
G80 G90 G94 G61
"Cmd. Supp. Fin ",0


Structure des fichiers *.OUT HGB<>^

Ce fichier est utilisé par la version 4.

Ce fichier sert à enregistrer les listes d'outils utilisés pour le perçage avec CiDess et pour l'usinage avec BTP4M.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est bleu est une valeur double
Ce qui est violet est une valeur booléenne
Ce qui est orange est une valeur long

"CIDESS","OUT",VersionFichier
"Nom Liste outils",NomListeOutils
"Nombre d'outils ",NombreOutils
"NomOutil","NumT","NumD","NumH","TypeOutil","Unites","Hélice","Diametre","Longueur",_ _"NbDents","DimR","DimS","DimT","DimU"
NomOutil1,NumeroOutil1,NumeroCorrDOutil1,NumeroCorrHOutil1,TypeOutil1,UnitesOutil1,HeliceOutil1,_ _DiametreOutil1,LongueurOutil1,NombreDentsOutil1,ROutil1,SOutil1,TOutil1,UOutil1
...
NomOutilN,NumeroOutilN,NumeroCorrDOutilN,NumeroCorrHOutilN,TypeOutilN,UnitesOutilN,HeliceOutilN,_ _DiametreOutilN,LongueurOutilN,NombreDentsOutilN,ROutilN,SOutilN,TOutilN,UOutilN

Signification des variables :

TypeOutilX
    foret = 0
    fraise 2 tailles = 1
    fraise a surfacer = 2
    fraise a dresser = 3
    fraise hemispherique = 4
    fraise tronconique = 5
    pointe a graver = 6
    disque a rainurer = 7
    fraise a moulurer = 8
    taraud a droite = 9
    taraud a gauche = 10

UnitesOutilX
    mm = 0
    inch = 1

HeliceOutilX
    a droite = 0
    a gauche = 1

Les paramètres R, S, T, et U servent à définir la géométrie des outils autre que les forêts, mais ces données ne sont pas utilisées par CiDess.

Voici un exemple de fichier *.OUT:

"CIDESS","OUT",1
"Nom Liste outils","Forêts pour électronique"
"Nombre d'outils ",18
"NomOutil","NumT","NumD","NumH","TypeOutil","Unites","Hélice","Diametre","Longueur",_ _"NbDents","DimR","DimS","DimT","DimU"
"",1,0,1,0,0,1,.8,20,2,0,0,0,0
"",2,0,2,0,0,0,1,20,2,0,0,0,0
"",3,0,3,0,0,0,1.2,20,2,0,0,0,0
"",4,0,4,0,0,0,1.5,20,2,0,0,0,0
"",5,0,5,0,0,0,2,20,2,0,0,0,0
"",6,0,6,0,0,0,2.5,20,2,0,0,0,0
"",7,0,7,0,0,0,3,20,2,0,0,0,0
"",8,0,8,0,0,0,3.3,20,2,0,0,0,0
"",9,0,9,0,0,0,3.5,20,2,0,0,0,0
"",10,0,10,0,0,0,4,20,2,0,0,0,0
"",11,0,11,0,0,0,4.2,20,2,0,0,0,0
"",12,0,12,0,0,0,4.5,20,2,0,0,0,0
"",13,0,13,0,0,0,5,20,2,0,0,0,0
"",14,0,14,0,0,0,5.5,20,2,0,0,0,0
"",15,0,15,0,0,0,6,20,2,0,0,0,0
"",16,0,16,0,0,0,6.5,20,2,0,0,0,0
"",17,0,17,0,0,0,7,20,2,0,0,0,0
"",18,0,18,0,0,0,8,20,2,0,0,0,0


Structure du fichier CiDess.USI HGB<>^

Ce fichier est utilisé par la version 4.

Ce fichier sert à enregistrer les paramètres d'usinage.

Voici la structure de ce fichier :

Ce qui est noir doit être saisi tel quel
Ce qui est vert est une chaine de caractère formatée
Ce qui est rouge est une valeur numérique entière
Ce qui est bleu est une valeur double
Ce qui est violet est une valeur booléenne
Ce qui est orange est une valeur long

"CIDESS","USI",VersionFichier
"Unites ",Unites
"Face cote fraise ",FaceCoteFraise
"Vitesse d'avance rapide ",VitesseAvanceRapide
"Avance par tour par dent ",AvanceParTourParDent
"Vitesse de coupe ",Vitesse de coupe
"Coefficient diametre pastille",CoefficientDiametrePastille
"Percer pastilles trop petites",PercerPastillesTropPetites
"Pastilles CMS jamais percees ",PastillesCMSjamaisPercees
"Commentaires explications ",CommentairesExplications
"Commentaires noms composants ",CommentairesNomsComposants
"Profondeur de percage ",ProfondeurDePercage
"Hauteur remontee entre trous ",HauteurRemonteeEntreTrous
"Tolerance choix foret 1-1.06 ",ToleranceChoixForet
"Optimiser les parcours ",OptimiserParcours
"Optimiser - Nombre individus ",OptimiserNombreIndividus
"Optimiser - Nb reproductions ",OptimiserNbReproductions
"Optimiser - Nombre mutations ",OptimiserNombreMutations
"Optimiser - Condition arrêt ",OptimiserConditionArrêt
"Optimiser - Temps maximum ",OptimiserTempsMaximum


Voici un exemple de fichier CiDess.USI:

"CIDESS","USI",1
"Unites ",0
"Face cote fraise ",1
"Vitesse d'avance rapide ",3800
"Avance par tour par dent ",.1
"Vitesse de coupe ",40
"Coefficient diametre pastille",1
"Percer pastilles trop petites",#TRUE#
"Pastilles CMS jamais percees ",#TRUE#
"Commentaires explications ",#TRUE#
"Commentaires noms composants ",#TRUE#
"Profondeur de percage ",5
"Hauteur remontee entre trous ",10
"Tolerance choix foret 1-1.06 ",1.04
"Optimiser les parcours ",#TRUE#
"Optimiser - Nombre individus ",15
"Optimiser - Nb reproductions ",10
"Optimiser - Nombre mutations ",10
"Optimiser - Condition arrêt ",150
"Optimiser - Temps maximum ",10


 Sources de la visualisation en 3D HGB<>^

C'est dans un but pédagogique que j'ai inclus une procédure de visualisation en 3D dans CiDess.

En effet, je me suis intéressé à la création d'images en 3D il y a quelques temps. La plupart des ouvrages et sites webs que j'ai consultés sur le sujet n'expliquaient que la façon d'utiliser des moteurs 3D du commerce ou freeware. Ce qui m'intéressait était de comprendre comment générer des images 3D ; j'ai donc décidé de créer mon propre moteur.

Ce moteur étant entièrement en Visual Basic et n'utilisant pas les technologies 3D des cartes vidéo et processeurs actuels, ses performances sont ridicules. Pour cette raison, CiDess permet d'exporter un circuit imprimé au format 3DG, ce qui vous permet d'utiliser un logiciel professionnel pour obtenir un rendu 3D digne de ce nom.

        Un peu de géométrie
        Un algorithme
        Représenter des surfaces
        Les codes sources

Un peu de géométrie HGB<>^

"Faire de la 3D" consiste à représenter sur un écran en deux dimensions la même image que l'on verrait si on avait une véritable scène en 3D à la place du moniteur.

La lumière se propageant en ligne droite, le tracé d'une image en 3D équivaut à faire une projection des points en 3D sur l'écran.

Regardons ce dessin :



Voici les données de départ :
        L'oeil de l'utilisateur se trouve centré sur un repère X,Y,Z
        L'oeil de l'utilisateur est orienté selon l'axe R
        En tournant le repère X,Y,Z d'un angle AX autour de X, ce qui donne un repère A,B,C ; puis en tournant ce repère A,B,C d'un angle AY autour de B on obtient le repère P,Q,R.
                Le repère P,Q,R représente l'orientation du point de vue (rotation de la tête de l'utilisateur).
                AX représente l'azimut et AY l'élévation du point de vue.
        L'écran se trouve juste en face de l'oeil de l'utilisateur, c'est-à-dire centré et perpendiculaire à l'axe R
        L'écran se trouve à une distance D de l'oeil de l'utilisateur
        Le point V est un point de la scène 3D fictive à représenter

Ce qu'il faut trouver :
        Les coordonnées sur l'écran du point W qui est la projection du point V de la scène 3D

Pour passer du repère X,Y,Z au repère A,B,C, on utilise la matrice Max :

 1 ;0 ;0
Max =0 ;cos ax ;sin ax
 0 ;-sin ax ;cos ax

Pour passer du repère A,B,C au repère P,Q,R, on utilise la matrice May :

 cos ay ;0 ;- sin ay
May =0 ;1 ;0
 sin ay ;0 ;cos ay

Pour passer directement du repère X,Y,Z au repère P,Q,R on utilise la matrice M = Max . May :

 cos ay ;0 ;sin ay
M =sin ax . sin ay ;cos ax ;- sin ax . cos ay
 - sin ay . cos ax ;sin ax ;cos ax . cos ay

Pour obtenir les coordonnées de V dans P,Q,R on multiplie les coordonnées de V dans X,Y,Z par la matrice M.

Pour obtenir les coordonnées de W dans P,Q,R on multiplie les coordonnées de V dans P,Q,R par le nombre D puis on divise le tout par la coordonnée selon R de V.

Du fait que l'écran est centré et perpendiculaire à R, les coordonnées de W dans l'écran sont simplement égales aux coordonnées de W selon P et selon Q.

Un algorithme HGB<>^

On peut déduire de ce qui précède un algorithme pour trouver les projections de l'ensemble des points d'une scène 3D sur un écran :

Données :

Angle AX
Angle AY
Distance D
Pour chaque point les coordonnées 3D : X,Y,Z
La position de l'oeil de l'utilisateur : UX,UY,UZ
Le coefficient pour convertir les coordonnées en pixels : K
La largeur de l'écran L en pixels
La hauteur de l'écran H en pixels


Résultats :
Pour chaque point les coordonnées sur l'écran : xe,ye

Variables intermédiaires utilisées lors des calculs :

COSAX, SINAX
COSAY, SINAY
PX, PY
QX, QY, QZ
RX, RY, RZ
E, F
OWX, OWY, OWX


Voici l'algorithme :

COSAY = cos(AY)
SINAY = sin(AY)
COSAX = cos(AX)
SINAX = sin(AX)
// PY est toujours nul
PX = COSAY
PZ = SINAY
QX = SINAY * SINAX
QY = COSAX
QZ = - COSAY * SINAX
RX = - SINAY * COSAX
RY = SINAX
RZ = COSAY * COSAX
POUR CHAQUE POINT (X,Y,Z)
X = X - XU
Y = Y - YU
Z = Z - ZU
// E représente la distance entre W et le plan définit par les axes P et Q
E = RX * X + RY * Y + RZ * Z
F = D / E
SI F > 1 ALORS // Le point (X,Y,Z) est derrière l'écran
// Le point O est l'intersection entre l'écran et l'axe R
OWX = X * F - RX * D
OWY = Y * F - RY * D
OWZ = Z * F - RZ * D
xe = OWX * PX + OWZ * PZ
ye = OWX * QX + OWY * QY + OWZ * QZ
// On calcule les coordonnées en pixel
xe = K * xe + L/2
ye = K * ye + H/2
FIN SI
FIN POUR


Représenter des surfaces HGB<>^

Maintenant que nous avons projeté tous les points de la scène sur l'écran, il nous reste à représenter des surfaces pleines.

Pour ce faire, il faut décomposer les surfaces 3D en de petits fragments triangulaires. Plus les fragments sont nombreux et petits, plus la qualité de l'image sera bonne mais plus elle prendra de temps à être calculée et dessinée.

Il faut ensuite déterminer la couleur des triangles. Si tous les triangles sont de même couleur, il n'y aura aucun effet de lumière et l'image semblera plate.
Il faut d'abord définir la position d'une source lumineuse.
La luminosité de la couleur des triangles est alors liée au sinus de l'angle que forme la surface du triangle avec un rayon lumineux issu de la source lumineuse frappant cette même surface.

En effet, si une surface est perpendiculaire à la source lumineuse elle éclairée au maximum ; si elle est parallèle, elle ne recevra aucune lumière.

Enfin, pour que tout soit dessiné correctement il faut trier les triangles en fonction de leur éloignement de l'oeil de l'utilisateur, de telle sorte que les triangles les plus proches soient dessinés en dernier.

Les copies d'écrans suivantes prises pendant le calcul illustrent ceci :



Cette façon de procéder est la plus simple qui soit. Un programme 3D complet doit tenir compte :
- de plusieurs sources de lumière
- des phénomènes de réflexion de la lumière sur les objets
- des phénomènes d'ombre
- ...

J'espère que cette introduction en la matière a démystifiée la création d'images 3D et vous a donné envie d'en savoir plus.

Les codes sources HGB<>^

Cliquez ici pour télécharger les codes sources du programme 3D en Visual Basic 5.

Le fichier exe du programme se trouve dans l'archive, vous pouvez donc lancer le programme même si vous n'avez pas Visual Basic. Si un message d'erreur se produit (DLL introuvable), déplacer le fichier exe dans le répertoire d'installation de CiDess.


(c) Rémy LUCAS - Dernière mise à jour 30/12/2014 (V4.10)