Pour les développeurs | ![]() ![]() ![]() |
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 Structure des fichiers utilisés par CiDess Fichiers *.CID Fichiers *.CID V2 Fichiers *.CID V3 Fichiers *.CIT Fichier CiDess.DAT Fichier CiDess.DIP Fichier CiDess.LND Fichier CiDess.LND V2 Fichier CiDess.LND V3 Fichier CiDess.LND V4 Fichier CiDess.WSP Fichiers *.BMP.TXT (abandonné) Fichiers *.MAC (abandonné) Fichiers *.OUT (abandonné) Fichier CiDess.USI (abandonné) Sources de la visualisation en 3D |
Sources de l'éditeur de fichiers LNG | ![]() ![]() ![]() ![]() ![]() |
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 : 11/09/2017). 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 | ![]() ![]() ![]() ![]() ![]() |
![]() |
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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est celui utilisé par les anciennes versions 1 et 2 ; il est compatible avec les versions suivantes (III, 4 et 4.25). 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 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" "220µf" 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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est celui utilisé par les anciennes versions III et 4 ; il est compatible avec la version suivante (4.25). C'est au format *.CID que vos circuits imprimés sont sauvegardés. Voici la structure d'un fichier *.CID V2 : 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 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_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" "220µf" 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 *.CID V3 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est celui utilisé par la version 4.25. C'est au format *.CID que vos circuits imprimés sont sauvegardés. Voici la structure d'un fichier *.CID V3: Un fichier CID V3 est un fichier CID V2 avec des informations supplémentaires liées aux nouvelles fonctionnalités rajoutées. 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 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 Composant1_Nombre_Pastilles_Plan_De_Masse_CU1 Index_Pastille_Plan_De_Masse_CU1 ... même chose pour chaque pastille plan de masse CU1 ... Composant1_Nombre_Pastilles_Plan_De_Masse_CU2 Index_Pastille_Plan_De_Masse_CU2 ... même chose pour chaque pastille plan de masse CU2 ... ... 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 ... Piste1_Est_Plan_de_Masse ... 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. La version 4.25 de CiDess introduit la possibilité de définir les pistes comme étant confondues avec un plan de masse éventuel. Dans ce cas de figure, la piste est affichée avec une couleur spécifique à l’écran, le plan de masse n’étant généré qu’au moment de l’impression des typons. Certaines pastilles des composants peuvent également se retrouver confondues avec un plan de masse éventuel en couche CU1, avec un plan de masse éventuel en couche CU2, ou avec les deux. Là aussi, des couleurs spécifiques sont utilisées à l’écran pour chaque cas de figure. Pour chaque composant, le fichier CID comporte : - le nombre de pastilles confondues avec le plan de masse CU1 et ensuite la liste des index de pastilles du type de composant correspondant; - le nombre de pastilles confondues avec le plan de masse CU2 et ensuite la liste des index de pastilles du type de composant correspondant. Depuis la version 4.25, si vous modifiez un fichier CIT (type de composant personnalisé) et que vos modifications changent l’ordre ou le nombre des pastilles du type de composant, cela peut avoir un impact sur les fichiers CID existants si les composants correspondant ont des pastilles confondues avec un ou deux plans de masse. 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_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 - une des pastilles de T1 est intégrée aux plans de masse CU1 et CU2 (en rose) - d'un circuit IC1 CMS monté en surface côté composant - d'un circuit IC2 CMS monté en surface côté cuivre - une des pastilles de IC2 est intégrée au plan de masse CU1 (en orange) - d'un circuit IC3 CMS incliné de 30° - deux des pastilles de IC3 sont intégrées au plan de masse CU2 (en violet) - d'une piste côté cuivre (noire) - d'une piste côté composant (bleue) - de deux pistes intégrées au plan de masse côté cuivre (orange) - d'une piste intégrée au plan de masse côté composant (violet) - d'un texte côté cuivre (noir) - d'un texte côté composant (bleu) "CIDESS","CID",3 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 1451 Mon programmateur est raccordé à un port parallèle mono-directionnel; ce port met à notre disposition 5 entrées et 12 sorties. Seulement, une EPROM requiert 4 lignes de contrôle, 8 lignes de sorties et jusque 15 lignes d'adresses (pour la 27256). J'ai d'abord réglé une partie du problème en divisant mon programmateur en deux parties : une carte lecture et une carte écriture. Chacune des cartes possède son support, l'EPROM insérée dans le support lecture voit ses lignes de contrôle en mode lecture, et celle dans le support écriture en mode écriture. Il reste à s'occuper des lignes d'adresse et de données. Pour la carte écriture, les lignes de données sont tout simplement reliées aux sorties D0 ... D7 du port parallèle. Quant aux lignes d'adresses, elles sont reliées aux sorties d'un compteur; en effet la broche /STROBE du port parallèle se charge d'incrémenter le compteur. /STROBE sert aussi à générer l'impulsion de programmation nécessaire. Le compteur est mis à zéro à la mise sous tension. Pour la carte lecture, c'est un plus compliqué, car il faut lire les 8 lignes de données alors que nous ne disposons que de 5 entrées. La lecture se déroule en série sur l'entrée /ACK du port parallèle; ce sont les trois sorties D0, D1 et D2 qui définissent laquelle des 8 lignes de données de l'EPROM est reliée à /ACK. Les lignes d'adresse sont comme précédemment reliées aux sorties d'un compteur, lui-même commandé par D5 et D6. 754 Commencez par les straps, ensuite les résistances, condensateurs, et terminez par les semiconducteurs. On remarquera que les supports pour l'EPROM est soudé coté cuivre. Pour relier les cartes lectures et écriture au port parallèle, vous pouvez utilisez un câble muni d’un connecteur DB25 qui se branchera directement derrière le P.C. ou bien utiliser une embase Centronics; le programmateur d’EPROMs se connectera au P.C. avec un banal câble pour imprimante. Les deux régulateurs ont leur semelle alignées, pour permettre de les fixer sur un refroidisseur unique. Mais attention ! les deux semelles ne doivent pas êtres reliés électriquement. L'une des deux semelles sera donc isolée du radiateur par une plaque en mica et des rondelles isolantes. 316 Remarque : vous constaterez que les typons et les schémas d'implantation ne sont pas inversés; donc, il faudra placer le typon face non-imprimée contre la vitre de l'insoleuse (si cela n'est pas clair dans votre esprit, je vous invite à consulter le paragraphe sur l'insolation de la page sur la fabrication de CIs). 2650,1550 100,200,150,250 6 "Condos radiaux","d500 e200" 400,500 0,0 0 1 "C1" "220µf" 1500 0 0 "SOIC","DIL 10" 1650,550 0,0 0 3 "IC1" "" 1000 0 0 "SOIC","DIL 10" 1650,900 0,0 360 4 "IC2" "" 1000 3 1 2 3 0 "SOIC","DIL 10" 850,950 0,0 30 3 "IC3" "" 1000 0 6 19 20 21 25 26 27 "Actifs 3 pins debouts","TO5" 400,1000 0,1400 0 2 "T1" "2N1711" 1000 1 2 1 2 "Resistances","h250 d90" 1325,900 875,500 0 1 "R1" "4,7K" 1000 1 1 0 6 50 1 2 500,500 850,500 #FALSE# 30 2 3 1523,453 900,450 850,500 #FALSE# 50 2 2 712,725 788,782 #FALSE# 50 1 3 1350,900 1450,1000 1550,1000 #TRUE# 50 2 3 400,1100 600,1100 710,940 #TRUE# 50 1 4 400,1100 400,1200 1450,1200 1450,1000 #TRUE# 2 "Arial" 18 #TRUE# #FALSE# #FALSE# #TRUE# #TRUE# 2100 850 135 2 #TRUE# 13 Texte CU2 Inv 8 "Arial" 15 #FALSE# #FALSE# #FALSE# #FALSE# #TRUE# 2000 400 15 1 #FALSE# 9 Texte CU1 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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est utilisé par toutes les versions de CiDess. 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 :
Voici les différentes valeurs possibles pour Type_de_pastille :
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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est utilisé par toutes les versions de CiDess. 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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est utilisé par toutes les versions de CiDess. 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 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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est celui utilisé par les anciennes versions 1 et 2 ; il est compatible avec les versions suivantes (III, 4 et 4.25). 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 :
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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est celui utilisé par l'ancienne version III ; il est compatible avec les versions suivantes (4 et 4.25). 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 :
Taille_du_texte est une valeur entière comprise entre 4 et 12. CoefZoom1 est le coefficient d'affichage à l'écran en pixels par unité (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
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 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est celui utilisé par l'ancienne version 4 ; il est compatible avec la version suivante (4.25). 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 :
Taille_du_texte est une valeur entière comprise entre 4 et 12. CoefZoom1 est le coefficient d'affichage à l'écran en pixels par unité (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
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 d’axes 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.LND V4 | ![]() ![]() ![]() ![]() ![]() |
Ce format de fichier est celui utilisé par la version 4.25. 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 CoulLayer5 CoulLayerSel5 ImprCoulLayerC5 ImprCoulLayerNB5 CoulLayer6 CoulLayerSel6 ImprCoulLayerC6 ImprCoulLayerNB6 CoulLayer7 CoulLayerSel7 ImprCoulLayerC7 ImprCoulLayerNB7 Quelques explications : Voici la correspondance entre les valeurs dans le fichier et leur signification dans CiDess :
Taille_du_texte est une valeur entière comprise entre 4 et 12. CoefZoom1 est le coefficient d'affichage à l'écran en pixels par unité (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
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 : inutilisé par la version 4.25, conservé pour maintenir la comptabilité des fichiers LND 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 d’axes 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",4 "CiDessFR.LNG" #TRUE# 2 #TRUE# #TRUE# #TRUE# #TRUE# #TRUE# 0 4 #FALSE# 1 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# 100 100 16777215 16777215 0 255 16711935 41215 16711935 39935 9032191 9032191 12895428 16711880 16755415 16755415 11842740 13147135 15520767 15520767 10855845 |
Structure du fichier CiDess.WSP | ![]() ![]() ![]() ![]() ![]() |
Ce fichier est utilisé par les versions III, 4 et 4.25. 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.
Voici un exemple de fichier CiDess.WSP : "CIDESS","WSP",1 2 360 660 12000 9660 |
Structure des fichiers *.BMP.TXT (abandonné) | ![]() ![]() ![]() ![]() ![]() |
Ce fichier est utilisé par l'ancienne version 4 et a été abandonné à la version 4.25. 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 aux 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 servi à 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çages 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 (abandonné) | ![]() ![]() ![]() ![]() ![]() |
Ce fichier est utilisé par les versions 4 et 4.25 et a été abandonné à la version 4.27. 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 "unités ",unités "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 : unités 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 "unités ",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 (abandonné) | ![]() ![]() ![]() ![]() ![]() |
Ce fichier est utilisé par les versions 4 et 4.25 et a été abandonné à la version 4.27. 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","unités","Hélice","Diametre","Longueur",_ _"NbDents","DimR","DimS","DimT","DimU" NomOutil1,NumeroOutil1,NumeroCorrDOutil1,NumeroCorrHOutil1,TypeOutil1,unitésOutil1,HeliceOutil1,_ _DiametreOutil1,LongueurOutil1,NombreDentsOutil1,ROutil1,SOutil1,TOutil1,UOutil1 ... NomOutilN,NumeroOutilN,NumeroCorrDOutilN,NumeroCorrHOutilN,TypeOutilN,unitésOutilN,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 unitésOutilX 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","unités","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 (abandonné) | ![]() ![]() ![]() ![]() ![]() |
Ce fichier est utilisé par les versions 4 et 4.25 et a été abandonné à la version 4.27. 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 "unités ",unités "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 "unités ",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 | ![]() ![]() ![]() ![]() ![]() |
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 web 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 | ![]() ![]() ![]() ![]() ![]() |
"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 :
Pour passer du repère A,B,C au repère P,Q,R, on utilise la matrice May :
Pour passer directement du repère X,Y,Z au repère P,Q,R on utilise la matrice M = Max . May :
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 | ![]() ![]() ![]() ![]() ![]() |
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 | ![]() ![]() ![]() ![]() ![]() |
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 | ![]() ![]() ![]() ![]() ![]() |
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 : 29/09/2018 (V4.29) |