Coders and programmers page |
I program CiDess with Visual Basic 5. In this page I give you some source files, and I describe file formats used by CiDess to record data. The GIF saving procedures uses source code written by Arkadiy Olovyannikov (ark@fesma.ru). LNG editor source code CiDess file formats *.CID files *.CID V2 files *.CID V3 files *.CIT files CiDess.DAT file CiDess.DIP file CiDess.LND file CiDess.LND V2 file CiDess.LND V3 file CiDess.LND V4 file CiDess.WSP file *.BMP.TXT files (depreciated) *.MAC files (depreciated) *.OUT files (depreciated) *CiDess.USI file (depreciated) 3D view utility source code |
LNG editor source code |
The software that I created to translate CiDess allows you to add easily a multilanguage facility to an existing VB project. There are two versions of the LNG editor: - a complete version for programmers - a simple version for translators Complete version allows you to implement the multilanguage function to your program. Single version (it's the version available in the translators page), allows translators, even if they don't have programming skills, to translate a software. Clic here to download the LNG editor source code and executable files (last update: 06/11/2017). Unzip the file in any directory of your choice; all the explanations are in _LisezMoi.html and _ReadMe.html files. |
CiDess file formats |
I give you this information to allow you reading and writing CiDess files in your own applications. Do not try to modify CiDess files with a text editor. It can cause CiDess malfunction. If one of your file is corrupted, do not try to repair it by yourself but download it. I suggest you create a second installation of CiDess for your experiments. |
CID File format |
This file format is used by old CiDess 1 and CiDess 2 ; it's also compatible with CiDess III, 4 and 4.25. PCB are saved in *.CID file format. CID file format: Black text is constant string Blue text is multiline string Green text is formatted string Red text is integer value "CIDESS","CID",CID_Format_Version Author_Length Author Mail_Length Organisation_Length Organisation URL_Length URL Adress_Length Adress Project_Name_Length Project_Name Circuit_Name_Length Circuit_Name Date_Length Date Version_Length Version Nomenclature_Comments_Length Nomenclature_Comments PCB_Comments_Length PCB_Comments Realisation_Comments_Length Realisation_Comments Total_Size_X,Total_Size_Y Left_Margin,Top_Margin,Right_Margin,Bottom_Margin Number_of_Components Component1_Category_FR,Component1_ID_FR Component1_X1,Component1_Y1 Component1_X2,Component1_Y2 Component1_Angle Component1_Side Component1_Ref Component1_Value Component1_Pad_Coef ... Idem for each component ... Number_Of_Tracks Track1_Width Track1_Side Track1_Number_of_nodes Track1_Node1_X,Track1_Node1_Y ... Idem for each node ... ... Idem for each track ... Some explanations: Size in file corresponds to total size that is to say PCB size + margins. French category and ID are used as data key. There is no problem with monolingual component types. Component's side could take four different values. See the following picture: Track's side could take only two values: 1 or 2. In the previous picture, a side 1 track will be black, a side 2 track light blue. In a single side PCB, there are only 1, 2 or 4 sided components and all track are in side 1. Normal component's position is defined by center coordinates X1,Y1 and the angle. X2,Y2 are not used and may be null. Stretchable component's position is defined by each pad's coordinates, X1,Y1,X2,Y2. Angle is not used and may be null. The coordinates are relative to the top left corner of the PCB (without margins). Y axis is oriented to the bottom of the screen. A 1000 pad coefficient means a 100% size. Units are in mil (1 mil = 0.001 inch = 0.0254 mm) Let's see an example: This file is made up of: - a capacitor C1 with 150% pads - a stretchable resistance R1 - a transistor T1 copper side mounted - a SMD IC IC1 component side mounted - a SMD IC IC2 copper side mounted - a SMD IC IC3 with a 30° rotation angle - a track side 1 - a track side 2 "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 semiconducteurs. 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 |
CID V2 File format |
This file format is used by old CiDess III and 4 ; it's also compatible with CiDess 4.25. PCB are saved in *.CID file format. A CID V2 file is a CID V1 file following with extra data (due to new functions) CID V2 file format: Black text is constant string Blue text is multiline string Green text is formatted string Red text is integer value Violet text is boolean value "CIDESS","CID",CID_Format_Version Author_Length Author Mail_Length Organisation_Length Organisation URL_Length URL Adress_Length Adress Project_Name_Length Project_Name Circuit_Name_Length Circuit_Name Date_Length Date Version_Length Version Nomenclature_Comments_Length Nomenclature_Comments PCB_Comments_Length PCB_Comments Realisation_Comments_Length Realisation_Comments Total_Size_X,Total_Size_Y Left_Margin,Top_Margin,Right_Margin,Bottom_Margin Number_of_Components Component1_Category_FR,Component1_ID_FR Component1_X1,Component1_Y1 Component1_X2,Component1_Y2 Component1_Angle Component1_Side Component1_Ref Component1_Value Component1_Pad_Coef ... Idem for each component ... Number_Of_Tracks Track1_Width Track1_Side Track1_Number_of_nodes Track1_Node1_X,Track1_Node1_Y ... Idem for each node ... ... Idem for each track ... Number_of_CopperTexts CopperText1_FontName CopperText1_FontSize CopperText1_FontBold CopperText1_FontItalic CopperText1_FontStrikethru CopperText1_FontUnderline CopperText1_FTransparent CopperText1_X CopperText1_Y CopperText1_Angle CopperText1_Face CopperText1_Split CopperText1_Text_Lenght CopperText1_Text CopperText1_Link ... idem for each CopperText ... HTML_GeneralInfo_Chk_Projet HTML_GeneralInfo_Chk_Carte HTML_GeneralInfo_Chk_Date HTML_GeneralInfo_Chk_Version HTML_GeneralInfo_Chk_Auteur HTML_GeneralInfo_Chk_Organisation HTML_GeneralInfo_Chk_Coordonnees HTML_GeneralInfo_Chk_Mail HTML_GeneralInfo_Chk_www HTML_Chk_Schematic HTML_Schematic_Chk_PreviewPict HTML_Schematic_PreviewFileName HTML_Schematic_Chk_Pict HTML_Schematic_PictFileName HTML_Schematic_NoComment HTML_Schematic_CommentInFile HTML_Schematic_TextComment HTML_Schematic_CommentFileName HTML_Schematic_CommentTextLenght HTML_Schematic_CommentText HTML_Chk_Layout HTML_Layout_Chk_Comment HTML_Layout_Chk_PreviewPict HTML_Layout_Chk_Pict HTML_Layout_ZoomPreview HTML_Layout_ZoomPict HTML_Layout_Rotation HTML_Layout_NormalStyle HTML_Layout_WYSIWYG HTML_Layout_Chk_CU1 HTML_Layout_Chk_CU2 HTML_Layout_Chk_SOL HTML_Layout_Chk_Grid HTML_Layout_Chk_TXT HTML_Layout_Chk_TxtRef HTML_Layout_Chk_TxtVal HTML_Layout_Chk_TxtWhiteBackground HTML_Layout_TxtSize HTML_Layout_Chk_PreviewOtherPict1 HTML_Layout_PreviewOtherPict1_FileName HTML_Layout_OtherPict1 HTML_Layout_OtherPict1_FileName HTML_Layout_PreviewOtherPict2 HTML_Layout_PreviewOtherPict2_FileName HTML_Layout_OtherPict2 HTML_Layout_OtherPict2_FileName HTML_Chk_ComponentList HTML_ComponentList_Chk_List HTML_ComponentList_Chk_Comment HTML_Chk_PCB HTML_PCB_Chk_Comment HTML_PCB_Chk_Side1 HTML_PCB_Chk_Side2 HTML_PCB_Chk_Preview HTML_PCB_Chk_Pict HTML_PCB_ZoomPreview HTML_PCB_ZoomPict HTML_PCB_Rotation HTML_PCB_Normal HTML_PCB_Mirror HTML_Typon_PadCoef HTML_PCB_TrackCoef HTML_PCB_Chk_SMDneverDrilled HTML_PCB_NormalEtching HTML_PCB_GroundPlaneEtching HTML_PCB_WhiteLineEtching HTML_PCB_CopperTextNormal HTML_PCB_CopperTextNegative HTML_PCBGroundplaneWidth HTML_Chk_Download HTML_Download_Chk_CID HTML_Download_Chk_CIT HTML_Download_Chk_OtherFile1 HTML_Download_OtherFile1_FilenName HTML_Download_Chk_OtherFile2 HTML_Download_OtherFile2_FilenName HTML_Download_Chk_Comment HTML_Download_CommentLenght HTML_Download_Comment HTML_Root HTML_Path HTML_Chk_CreateSubFolder ExtraString_Lenght ExtraString Some explanations: Size in file corresponds to total size that is to say PCB size + margins. French category and ID are used as data key. There is no problem with monolingual component types. Component's side could take four different values. See the following picture: Track's side could take only two values: 1 or 2. In the previous picture, a side 1 track will be black, a side 2 track light blue. Copper text's side could take three values: 1 (CU1), 2 (CU2) and 3 (both CU1 and CU2). A copper text with side = 1 should be black on previous picture. If Split = true, the text is mirrored; you can read a copper text on side CU1 on the other side through the PCB. In a single side PCB, there are only 1, 2 or 4 sided components and all track and copper texts are in side 1. Normal component's position is defined by center coordinates X1,Y1 and the angle. X2,Y2 are not used and may be null. Stretchable component's position is defined by each pad's coordinates, X1,Y1,X2,Y2. Angle is not used et may be null. The coordinates are relative to the top left corner of the PCB (without margins). Y axis is oriented to the bottom of the screen. A 1000 pad coefficient means a 100% size. Units are in mil (1 mil = 0.001 inch = 0.0254 mm) Data that begin with "HTML_" are the backup of HTML documentation settings: - HTML_xxx_Chk_yyy save a yyy checkbox value (1 = checked, 0 = unchecked) of the xxx section - HTML_Chk_xxx equals "1" (checked) if the section xxx is selected by the user for HTML generation - One of the three parameters HTML_Schematic_NoComment, HTML_Schematic_CommentInFile or HTML_Schematic_TextComment must be true, the two other false - One of the two parameters HTML_PCB_Normal, HTML_PCB_Mirror must be true, the other false - One of the three parameters HTML_PCB_NormalEtching, HTML_PCB_GroundPlaneEtching or HTML_PCB_WhiteLineEtching must be true, the two other false - One of the two parameters HTML_PCB_CopperTextNormal, HTML_PCB_CopperTextNegative must be true, the other false - One of the two parameters HTML_Layout_NormalStyle, HTML_Layout_WYSIWYG must be true, the other false - Possible values for the parameters that corresponds to listindex or scrollbars value:
- HTML_PCB_PadCoef is the pad width coefficient from 50 to 200 (100 means 100%) - HTML_PCB_TrackCoef is the track width coefficient from 50 to 200 (100 means 100%) - HTML_PCBGroundPlaneWidth should be between 10 and 50 - According to the settings chosen, some parameters aren't used for HTML documentation, but a value can enter a value. Those data will be preserved and used when user chose appropriate settings. The ExtraString data is not used by CiDess. It's read when you open a file, and record 'as is' when you save the file. I plan this data area for future CiDess' optional updates; so users doesn't have to update their version and CID files will worked correctly without data loss on CiDess III. Indeed, other software authors work with me to make their software compatible with CiDess. I'll fix some rule about the use of ExtraString; please contact me. Let's see an example: This file is made up of: - a capacitor C1 with 150% pads - a stretchable resistance R1 - a transistor T1 copper side mounted - a SMD IC IC1 component side mounted - a SMD IC IC2 copper side mounted - a SMD IC IC3 with a 30° rotation angle - a track side 1 - a track side 2 - a copper text side 1 - a copper text side 2 "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 |
CID V3 File format |
This file format is used by CiDess 4.25. PCB are saved in *.CID file format. A CID V3 file is a CID V2 file with extra data (due to new functions) CID V3 file format: Black text is constant string Blue text is multiline string Green text is formatted string Red text is integer value Violet text is boolean value "CIDESS","CID",CID_Format_Version Author_Length Author Mail_Length Organisation_Length Organisation URL_Length URL Adress_Length Adress Project_Name_Length Project_Name Circuit_Name_Length Circuit_Name Date_Length Date Version_Length Version Nomenclature_Comments_Length Nomenclature_Comments PCB_Comments_Length PCB_Comments Realisation_Comments_Length Realisation_Comments Total_Size_X,Total_Size_Y Left_Margin,Top_Margin,Right_Margin,Bottom_Margin Number_of_Components Component1_Category_FR,Component1_ID_FR Component1_X1,Component1_Y1 Component1_X2,Component1_Y2 Component1_Angle Component1_Side Component1_Ref Component1_Value Component1_Pad_Coef Composant1_Number_of_Ground_Plane_Pads_CU1 Index_Ground_Plane_Pad_CU1 ... Idem for each ground plane pad CU1 ... Composant1_Number_of_Ground_Plane_Pads_CU2 Index_Ground_Plane_Pad_CU2 ... Idem for each ground plane pad CU2 ... ... Idem for each component ... Number_Of_Tracks Track1_Width Track1_Side Track1_Number_of_nodes Track1_Node1_X,Track1_Node1_Y ... Idem for each node ... Track1_Is_Ground_Plane ... Idem for each track ... Number_of_CopperTexts CopperText1_FontName CopperText1_FontSize CopperText1_FontBold CopperText1_FontItalic CopperText1_FontStrikethru CopperText1_FontUnderline CopperText1_FTransparent CopperText1_X CopperText1_Y CopperText1_Angle CopperText1_Face CopperText1_Split CopperText1_Text_Lenght CopperText1_Text CopperText1_Link ... idem for each CopperText ... HTML_GeneralInfo_Chk_Projet HTML_GeneralInfo_Chk_Carte HTML_GeneralInfo_Chk_Date HTML_GeneralInfo_Chk_Version HTML_GeneralInfo_Chk_Auteur HTML_GeneralInfo_Chk_Organisation HTML_GeneralInfo_Chk_Coordonnees HTML_GeneralInfo_Chk_Mail HTML_GeneralInfo_Chk_www HTML_Chk_Schematic HTML_Schematic_Chk_PreviewPict HTML_Schematic_PreviewFileName HTML_Schematic_Chk_Pict HTML_Schematic_PictFileName HTML_Schematic_NoComment HTML_Schematic_CommentInFile HTML_Schematic_TextComment HTML_Schematic_CommentFileName HTML_Schematic_CommentTextLenght HTML_Schematic_CommentText HTML_Chk_Layout HTML_Layout_Chk_Comment HTML_Layout_Chk_PreviewPict HTML_Layout_Chk_Pict HTML_Layout_ZoomPreview HTML_Layout_ZoomPict HTML_Layout_Rotation HTML_Layout_NormalStyle HTML_Layout_WYSIWYG HTML_Layout_Chk_CU1 HTML_Layout_Chk_CU2 HTML_Layout_Chk_SOL HTML_Layout_Chk_Grid HTML_Layout_Chk_TXT HTML_Layout_Chk_TxtRef HTML_Layout_Chk_TxtVal HTML_Layout_Chk_TxtWhiteBackground HTML_Layout_TxtSize HTML_Layout_Chk_PreviewOtherPict1 HTML_Layout_PreviewOtherPict1_FileName HTML_Layout_OtherPict1 HTML_Layout_OtherPict1_FileName HTML_Layout_PreviewOtherPict2 HTML_Layout_PreviewOtherPict2_FileName HTML_Layout_OtherPict2 HTML_Layout_OtherPict2_FileName HTML_Chk_ComponentList HTML_ComponentList_Chk_List HTML_ComponentList_Chk_Comment HTML_Chk_PCB HTML_PCB_Chk_Comment HTML_PCB_Chk_Side1 HTML_PCB_Chk_Side2 HTML_PCB_Chk_Preview HTML_PCB_Chk_Pict HTML_PCB_ZoomPreview HTML_PCB_ZoomPict HTML_PCB_Rotation HTML_PCB_Normal HTML_PCB_Mirror HTML_Typon_PadCoef HTML_PCB_TrackCoef HTML_PCB_Chk_SMDneverDrilled HTML_PCB_NormalEtching HTML_PCB_GroundPlaneEtching HTML_PCB_WhiteLineEtching HTML_PCB_CopperTextNormal HTML_PCB_CopperTextNegative HTML_PCBGroundplaneWidth HTML_Chk_Download HTML_Download_Chk_CID HTML_Download_Chk_CIT HTML_Download_Chk_OtherFile1 HTML_Download_OtherFile1_FilenName HTML_Download_Chk_OtherFile2 HTML_Download_OtherFile2_FilenName HTML_Download_Chk_Comment HTML_Download_CommentLenght HTML_Download_Comment HTML_Root HTML_Path HTML_Chk_CreateSubFolder ExtraString_Lenght ExtraString Some explanations: Size in file corresponds to total size that is to say PCB size + margins. French category and ID are used as data key. There is no problem with monolingual component types. Component's side could take four different values. See the following picture: Track's side could take only two values: 1 or 2. In the previous picture, a side 1 track will be black, a side 2 track light blue. CiDess 4.25 introduces the possibility of defining tracks merged with a possible ground plane. In this case , the track is shown with a specific color on screen, as the ground plane will be generated only when printing PCBs. Some components’ pads can also be merged with a possible ground plane in layer CU1, with a possible ground plane in layer CU2, or with both. Also, specific colors are used in the screen for each case. For each component, CID file contains: - the number of pads merged with CU1 ground plane and then the list of the component type indexes of pads ; - the number of pads merged with CU2 ground plane and then the list of the component type indexes of pads. Since the version 4.25, if you modify a CIT file (user defined component type) and if your modifications change the order or the number of the pads of the component type, it can have an impact on the existing CID files if the corresponding components have merged pads with one or two ground planes. Copper text's side could take three values: 1 (CU1), 2 (CU2) and 3 (both CU1 and CU2). A copper text with side = 1 should be black on previous picture. If Split = true, the text is mirrored; you can read a copper text on side CU1 on the other side through the PCB. In a single side PCB, there are only 1, 2 or 4 sided components and all track and copper texts are in side 1. Normal component's position is defined by center coordinates X1,Y1 and the angle. X2,Y2 are not used and may be null. Stretchable component's position is defined by each pad's coordinates, X1,Y1,X2,Y2. Angle is not used et may be null. The coordinates are relative to the top left corner of the PCB (without margins). Y axis is oriented to the bottom of the screen. A 1000 pad coefficient means a 100% size. Units are in mil (1 mil = 0.001 inch = 0.0254 mm) Data that begin with "HTML_" are the backup of HTML documentation settings: - HTML_xxx_Chk_yyy save a yyy checkbox value (1 = checked, 0 = unchecked) of the xxx section - HTML_Chk_xxx equals "1" (checked) if the section xxx is selected by the user for HTML generation - One of the three parameters HTML_Schematic_NoComment, HTML_Schematic_CommentInFile or HTML_Schematic_TextComment must be true, the two other false - One of the two parameters HTML_PCB_Normal, HTML_PCB_Mirror must be true, the other false - One of the three parameters HTML_PCB_NormalEtching, HTML_PCB_GroundPlaneEtching or HTML_PCB_WhiteLineEtching must be true, the two other false - One of the two parameters HTML_PCB_CopperTextNormal, HTML_PCB_CopperTextNegative must be true, the other false - One of the two parameters HTML_Layout_NormalStyle, HTML_Layout_WYSIWYG must be true, the other false - Possible values for the parameters that corresponds to listindex or scrollbars value:
- HTML_PCB_PadCoef is the pad width coefficient from 50 to 200 (100 means 100%) - HTML_PCB_TrackCoef is the track width coefficient from 50 to 200 (100 means 100%) - HTML_PCBGroundPlaneWidth should be between 10 and 50 - According to the settings chosen, some parameters aren't used for HTML documentation, but a value can enter a value. Those data will be preserved and used when user chose appropriate settings. The ExtraString data is not used by CiDess. It's read when you open a file, and record 'as is' when you save the file. I plan this data area for future CiDess' optional updates; so users doesn't have to update their version and CID files will worked correctly without data loss on CiDess III. Indeed, other software authors work with me to make their software compatible with CiDess. I'll fix some rule about the use of ExtraString; please contact me. Let's see an example: This file is made up of: - a capacitor C1 with 150% pads - a stretchable resistance R1 - a transistor T1 copper side mounted - one pad of T1 is merged with the ground planes CU1 and CU2 (pink) - a SMD IC IC1 component side mounted - a SMD IC IC2 copper side mounted - one pad of IC2 is merged with the ground plane CU1 (orange) - a SMD IC IC3 with a 30° rotation angle - two pads of IC3 are merged with the ground plane CU2 (purple) - a track side 1 - a track side 2 - two tracks merged with ground plane CU1 (orange) - a track merged with ground plane CU2 (purple) - a copper text side 1 - a copper text side 2 "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 |
CIT File format |
This file format is used by all versions of CiDess. Component types are saved in *.CIT file format. CIT File format: Black text is constant string Green text is formatted string Red text is integer value Purple text is boolean value "CIDESS","CIT",CIT_Format_Version Number_of_component_types Category_FR,ID_FR,Category_EN,ID_EN,Strechable Number_of_solids Solid_type,Center_X,Center_Y,Center_Z,Size_X,Size_Y,Size_Z,Angle,3D_Color ... Idem for each solid ... Number_of_pads Pad_type,Pad_diameter,Hole_diameter,Center_X,Center_Y ... Idem for each pad ... Number_of_pins Pad_number,X,Y,Z ... Idem for each pin ... ... Idem for each component type Some explanations: Units are in mil (1 mil = 0.001 inch = 0.0254 mm) Possible values for Solid_type:
Possible values for Pad_type:
Coordinates define the attach point of a pin on the component. A stretchable component type: - must have exactly two pads - pads' coordinates x,y are not used The Z coordinate of a solid corresponds to the coordinate of the center of the solid, unlike in the component type editor where Z corresponds to the distance between the solid and the PCB card. Let's see an example: This sample file is made up of the three following component types: "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 |
CiDess.DAT File |
This file format is used by all versions of CiDess. CiDess.DAT file includes CiDess featured component types. CiDess.DAT has the same file format than a CIT file, however the first line is different: "CIDESS","DAT",... instead of "CIDESS","CIT",.... |
Do not modify CiDess.dat file; your version of CiDess will be incompatible with the original software. When I propose new versions of CiDess.dat, I only add new component types without changing any existing component type. CiDess.exe checks CiDess.dat integrity at each boot. |
CiDess.DIP File |
This file format is used by all versions of CiDess. CiDess.DIP contains your default values for extra PCB information and comments. CiDess.DIP file format: Black text is constant string Blue text is multiline string Red text is integer value "CIDESS","DIP",DIP_Format_Version Author_Length Author Mail_Length Organisation_Length Organisation URL_Length URL Adress_Length Adress Project_Name_Length Project_Name Circuit_Name_Length Circuit_Name Date_Length Date Version_Length Version Nomenclature_Comments_Length Nomenclature_Comments PCB_Comments_Length PCB_Comments Realisation_Comments_Length Realisation_Comments Let's see an example: "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. |
CiDess.LND File |
This file format is used by old CiDess 1 and CiDess 2 ; it's also compatible with CiDess III, 4 and 4.25. CiDess.LND contains your CiDess display parameters. CiDess.LND file format: Black text is constant string Blue text is multiline string Green text is formatted string Red text is integer value Purple text is boolean value "CIDESS","LND",LND_Format_Version LNG_filename Mouse's_lines Tolerance Use_zoom_for_preview CU1_Layer_visible CU2_Layer_visible SOL_Layer_visible TXT_Layer_visible Disp_text Text_size White_text_background Zoom Grid Show_dot_grid Some explanations: Here is the meaning of CiDess.LND values:
Text_size is an integer value from 4 to 12. Let's see an example: "CIDESS","LND",1 "CiDessFR.LNG" #TRUE# 2 #FALSE# #TRUE# #TRUE# #TRUE# #TRUE# 0 10 #TRUE# 0 1 #TRUE# |
CiDess.LND V2 File |
This file format is used by old CiDess III ; it's also compatible with CiDess 4 and 4.25. CiDess.LND contains your CiDess display parameters. CiDess.LND V2 file format: Black text is constant string Green text is formatted string Red text is integer value Blue text is single value Orange text is long value "CIDESS","LND",LND_Format_Version LNG_filename Mouse's_lines Tolerance Use_zoom_for_preview CU1_Layer_visible CU2_Layer_visible SOL_Layer_visible TXT_Layer_visible Disp_text Text_size White_text_background Zoom Grid Show_dot_grid CoefZoom1 AutoDateUpdate AlwaysDisplayNoSplittedCopperText Disp_solid ColLayer(0) ColLayerSel(0) PrtColLayerC(0) PrtColLayerNB(0) ColLayer(1) ColLayerSel(1) PrtColLayerC(1) PrtColLayerNB(1) ColLayer(2) ColLayerSel(2) PrtColLayerC(2) PrtColLayerNB(2) ColLayer(3) ColLayerSel(3) PrtColLayerC(3) PrtColLayerNB(3) ColLayer(4) ColLayerSel(4) PrtColLayerC(4) PrtColLayerNB(4) ColBackCi ColRectCi ColMarginCi ColForbZ ColLayerBack ColGrid AutomaticCompoNameIncr CustomGrid DisplayGrid Some explanations: Here is the meaning of CiDess.LND values:
Text_size is an integer value from 4 to 12. CoefZoom1 is the number of pixel per unit (screen display scale). Default value is 0,12 ColLayer(i): Objects colors on screen ColLayerSel(i): Selected objects colors on screen PrtColLayerC(i): Objects colors on printer PrtColLayerNB(i): colors used for black and white printing
ColBackCi: Background color ColRectCi: PCB bordure line ColMarginCi: PCB's margin color ColForbZ: color outside PCB and PCB's margin ColLayerBack: CU1 / CU2 / SOL / TXT text color in toolbar ColGrid: Dot grid color A color is a long value = red + green * 255 + blue * 65536, with red, green and blue as integer value from 0 to 255 (in fact, red, green and blue are byte value). CustomGrid and DisplayGrid are single values in mil. Let's see an example: "CIDESS","LND",2 "CiDessEN.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 |
CiDess.LND V3 File |
This file format is used by old CiDess 4 ; it's also compatible with CiDess 4.25. CiDess.LND contains your CiDess display parameters. CiDess.LND V3 file format: Black text is constant string Green text is formatted string Red text is integer value Blue text is single value Orange text is long value Purple text is boolean value "CIDESS","LND",LND_Format_Version LNG_filename Mouse's_lines Tolerance Use_zoom_for_preview CU1_Layer_visible CU2_Layer_visible SOL_Layer_visible TXT_Layer_visible Disp_text Text_size White_text_background Zoom Grid Show_dot_grid CoefZoom1 AutoDateUpdate AlwaysDisplayNoSplittedCopperText Disp_solid ColLayer(0) ColLayerSel(0) PrtColLayerC(0) PrtColLayerNB(0) ColLayer(1) ColLayerSel(1) PrtColLayerC(1) PrtColLayerNB(1) ColLayer(2) ColLayerSel(2) PrtColLayerC(2) PrtColLayerNB(2) ColLayer(3) ColLayerSel(3) PrtColLayerC(3) PrtColLayerNB(3) ColLayer(4) ColLayerSel(4) PrtColLayerC(4) PrtColLayerNB(4) ColBackCi ColRectCi ColMarginCi ColForbZ ColLayerBack ColGrid AutomaticCompoNameIncr CustomGrid DisplayGrid CoulCuDetoure CoulCuGrave CoulCuIntact CoulPercage CoulG54Axis CoulG54Pad1 CoulG54Pad2 Some explanations: Here is the meaning of CiDess.LND values:
Text_size is an integer value from 4 to 12. CoefZoom1 is the number of pixel per unit (screen display scale). Default value is 0,12 ColLayer(i): Objects colors on screen ColLayerSel(i): Selected objects colors on screen PrtColLayerC(i): Objects colors on printer PrtColLayerNB(i): colors used for black and white printing CoulCuDetoure: deep-etched objects' color in the BMP picture for CNC milling CoulCuGrave: etched objects' color in the BMP picture for CNC milling CoulCuIntact: background color in the BMP picture for CNC milling (copper that shouldn't be etched) CoulPercage: holes' color in the BMP picture for CNC milling CoulG54Axis, CoulG54Pad1 and CoulG54Pad2 are used to select CNC machine's axis location for PCB drilling with a CNC machine. These colors have to be clearly different from each other and form ColLayers() colors for CU1 and CU2.
ColBackCi: Background color ColRectCi: PCB bordure line ColMarginCi: PCB's margin color ColForbZ: color outside PCB and PCB's margin ColLayerBack: CU1 / CU2 / SOL / TXT text color in toolbar ColGrid: Dot grid color A color is a long value = red + green * 255 + blue * 65536, with red, green and blue as integer value from 0 to 255 (in fact, red, green and blue are byte value). CustomGrid and DisplayGrid are single values in mil. Let's see an example: "CIDESS","LND",3 "CiDessEN.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 |
CiDess.LND V4 File |
This file format is used by CiDess 4.25. CiDess.LND contains your CiDess display parameters. CiDess.LND V4 file format: Black text is constant string Green text is formatted string Red text is integer value Blue text is single value Orange text is long value Purple text is boolean value "CIDESS","LND",LND_Format_Version LNG_filename Mouse's_lines Tolerance Use_zoom_for_preview CU1_Layer_visible CU2_Layer_visible SOL_Layer_visible TXT_Layer_visible Disp_text Text_size White_text_background Zoom Grid Show_dot_grid CoefZoom1 AutoDateUpdate AlwaysDisplayNoSplittedCopperText Disp_solid ColLayer(0) ColLayerSel(0) PrtColLayerC(0) PrtColLayerNB(0) ColLayer(1) ColLayerSel(1) PrtColLayerC(1) PrtColLayerNB(1) ColLayer(2) ColLayerSel(2) PrtColLayerC(2) PrtColLayerNB(2) ColLayer(3) ColLayerSel(3) PrtColLayerC(3) PrtColLayerNB(3) ColLayer(4) ColLayerSel(4) PrtColLayerC(4) PrtColLayerNB(4) ColBackCi ColRectCi ColMarginCi ColForbZ ColLayerBack ColGrid AutomaticCompoNameIncr CustomGrid DisplayGrid CoulCuDetoure CoulCuGrave CoulCuIntact CoulPercage CoulG54Axis CoulG54Pad1 CoulG54Pad2 CoulLayer5 CoulLayerSel5 PrtCoulLayerC5 ImprCoulLayerNB5 PrtLayer6 CoulLayerSel6 PrtCoulLayerC6 PrtCoulLayerNB6 CoulLayer7 CoulLayerSel7 PrtCoulLayerC7 PrtCoulLayerNB7 Some explanations: Here is the meaning of CiDess.LND values:
Text_size is an integer value from 4 to 12. CoefZoom1 is the number of pixel per unit (screen display scale). Default value is 0,12 ColLayer(i): Objects colors on screen ColLayerSel(i): Selected objects colors on screen PrtColLayerC(i): Objects colors on printer PrtColLayerNB(i): colors used for black and white printing CoulCuDetoure: depreciated, not used by CiDess 4.25 but still in LND file for backward compatibility CoulCuGrave: etched objects' color in the BMP picture for CNC milling CoulCuIntact: background color in the BMP picture for CNC milling (copper that shouldn't be etched) CoulPercage: holes' color in the BMP picture for CNC milling CoulG54Axis, CoulG54Pad1 and CoulG54Pad2 are used to select CNC machine's axis location for PCB drilling with a CNC machine. These colors have to be clearly different from each other and form ColLayers() colors for CU1 and CU2.
ColBackCi: Background color ColRectCi: PCB bordure line ColMarginCi: PCB's margin color ColForbZ: color outside PCB and PCB's margin ColLayerBack: CU1 / CU2 / SOL / TXT text color in toolbar ColGrid: Dot grid color A color is a long value = red + green * 255 + blue * 65536, with red, green and blue as integer value from 0 to 255 (in fact, red, green and blue are byte value). CustomGrid and DisplayGrid are single values in mil. Let's see an example: "CIDESS","LND",4 "CiDessEN.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 |
CiDess.WSP File |
This file is used by CiDess III, 4 and 4.25. CiDess.WSP contains your CiDess display area parameters. CiDess.WSP file format: Black text is constant string Red text is integer value Blue text is double value "CIDESS","WSP",WSP_Format_Version Mode AreaLeft AreaTop AreaWidth AreaHeight AreaLeft and AreaTop define left top corner of the custom area, in twips. AreaWidth and AreaHeight define custom area size in twips.
Let's see an example: "CIDESS","WSP",1 2 360 660 12000 9660 |
*.BMP.TXT File format (depreciated) |
This file is used by old CiDess 4 and is depreciated since CiDess 4.25. When you create a BMP picture for CNC milling software, CiDess allows you to create an extra info file, with the same filename but with .BMP.TXT extension. This extra file contains usefull data for the BMP picture file usage with other software. "BTP4M" software is able to read the .BMP and .BMP.TXT files together. *.BMP.TXT file format: Black text is constant string Green text is formatted string Red text is integer value Blue text is single value Orange text is long value Purple text is boolean value "CIDESS",".BMP.TXT",BMPTXT_FileFormat_Version "Face",Side "Taille X en unités",Width "Taille Y en unités",Height "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",PadsNeverDrilled "Pastilles CMS jamais percées",SmdPadsNeverDrilled "Style d'usinage",MillingStyle "Nom du fichier CID correspondant",CID_Filename "Nom du fichier BMP correspondant",BMP_Filename "Date de création",Date "Position des perçages indiqués à la suite",DrillingList "(coordonnées en pixels image, diamètre en unités)" "Perçage X=",DrillX1,"Y=",DrillY1,"D=",DrillD1 ... "Perçage X=",DrillXn,"Y=",DrillYn,"D=",DrillDn Side should be set to 1 for CU1 side, and 2 for CU2 side. Width and Height are PCB's width and height without margin in mil. CoulCuDetoure: deep-etched objects' color in the BMP picture for CNC milling CoulCuGrave: etched objects' color in the BMP picture for CNC milling CoulCuIntact: background color in the BMP picture for CNC milling (copper that shouldn't be etched) CoulPercage: holes' color in the BMP picture for CNC milling A color is a long value = red + green * 255 + blue * 65536, with red, green and blue as integer value from 0 to 255 (in fact, red, green and blue are byte value). Others values are CiDess' BMP creation's parameters. They would not be useful for the CNC software. pcoef is the number of pixels for one mil. 0.0254 is the number of mm for one mil. The next picture shows how the CNC software had to use the BMP picture: On top of the picture, with blue, gray and red rectangles and circles, the small black disk figures a CNC machine milling tool. Dot lines are tool paths. White background is CoulCuIntact color. The bottom of the picture shows the result of the rectangles milling operation on a real PCB (bakelite is in brown, and copper in orange). In the CoulCuDetoure and CoulCuGrave cases, the tool only etch PCB's copper surface; with CoulPercage, the tool mills the whole depth of the PCB. If drilling list is in .BMP.TXT file, they are not in the picture. Let's see an example: "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# Let's see an other example: "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 |
*.MAC File format (depreciated) |
This file format is used by CiDess 4 and 4.25, but is depreciated since CiDess 4.27. It stores CNC machine's parameters. *.MAC file format: Black text is constant string Green text is formatted string Red text is integer value Blue text is single value Orange text is long value Purple text is boolean value "CIDESS","MAC",FileVersion "Unites ",Units "Axe Broche ",SpindleAxis "Sens Axe Broche ",SpindleAxisDirection "Orientation Rep.",CoordinateSystemDirection "Rotation Broche ",SpindleRotationDirection "Corr. R Outil ",RadiusToolCompensation "Corr. H Outil ",HeightToolCompensation "Changement Outil",ToolChange "Arrosage ",Coolant "Nom Fraiseuse ",MachineName "Course X min ",XminStroke "Course X MAX ",YminStroke "Course Y min ",ZminStroke "Course Y MAX ",XmaxStroke "Course Z min ",YmaxStroke "Course Z MAX ",ZmaxStroke "Parking X ",LandingZoneX "Parking Y ",LandingZoneY "Parking Z ",LandingZoneZ "S MAX ",MaxSpindleSpeed "Va MAX ",MaxFeedRate "Nom Rep. Piece ",WorkpieceName "Cmd. Supp. Debut",NumberOfCharactersInExtraStartCommands ExtraStartCommands "Cmd. Supp. Fin ",NumberOfCharactersInExtraEndCommands ExtraEndCommands Integer values meaning: Units mm = 0 inch = 1 SpindleAxis X = 0 Y = 1 Z = 2 SpindleAxisDirection positive = 0 negative = 1 CoordinateSystemDirection direct = 0 reversed = 1 SpindleRotationDirection normal = 0 reversed = 1 RadiusToolCompensation normal = 0 reversed = 1 disable = 2 HeightToolCompensation positive = 0 negative = 1 disable = 2 ToolChange automatic = 0 manual = 1 Coolant yes = 0 no = 1 Let's see an example: "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 |
*.OUT File format (depreciated) |
This file format is used by CiDess 4 and 4.25, but is depreciated since CiDess 4.27. It stores tools list used by CiDess for drilling and by BTP4M for milling. *.OUT file format: Black text is constant string Green text is formatted string Red text is integer value Blue text is single value Orange text is long value Purple text is boolean value "CIDESS","OUT",FileVersion "Nom Liste outils",ToolListName "Nombre d'outils ",NumberOfTools "NomOutil","NumT","NumD","NumH","TypeOutil","Unites","Hélice","Diametre","Longueur",_ _"NbDents","DimR","DimS","DimT","DimU" Tool1Name,Tool1Number,Tool1DComposator,Tool1HComposator,Tool1Type,Tool1Units,Tool1Hand,_ _Tool1Diameter,Tool1Lenght,Tool1NumberOfTooth,RTool1,STool1,TTool1,UTool1 ... ToolNName,ToolNNumber,ToolNDComposator,ToolNHComposator,ToolNType,ToolNUnits,ToolNHand,_ _ToolNDiameter,ToolNLenght,ToolNNumberOfTooth,RToolN,SToolN,TToolN,UToolN Integer values meaning: ToolXType drill = 0 shell end mill = 1 cylindrical cutter = 2 jointing cutter = 3 round mill = 4 tapered mill = 5 engraving mill = 6 cutting disc = 7 molding mill = 8 right handed taper = 9 left handed taper = 10 ToolXUnits mm = 0 inch = 1 ToolXHand right_handed = 0 left_handed = 1 R, S, T and U parameters serves to define milling tool; they don't are used by CiDess. Let's see an example: "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 |
CiDess.USI File format (depreciated) |
This file is used by CiDess 4 and 4.25, but is depreciated since CiDess 4.27. It stores CiDess.USI file format: Black text is constant string Green text is formatted string Red text is integer value Blue text is single value Orange text is long value Purple text is boolean value "CIDESS","USI",FileVersion "Unites ",Unite "Face cote fraise ",SideUp "Vitesse d'avance rapide ",FastFeedRate "Avance par tour par dent ",FeedRatePerRevolutionPerTooth "Vitesse de coupe ",CuttingSpeed "Coefficient diametre pastille",CoefPadDiameter "Percer pastilles trop petites",DrillTooSmallPads "Pastilles CMS jamais percees ",SMDPadsNeverDrilled "Commentaires explications ",CommentsInGCODE "Commentaires noms composants ",ComponentsNamesInGCODE "Profondeur de percage ",DrillingDepth "Hauteur remontee entre trous ",RisingHeight "Tolerance choix foret 1-1.06 ",ToleranceDrillDiameterChoice "Optimiser les parcours ",OptimizePath "Optimiser - Nombre individus ",OptimizeNbEntities "Optimiser - Nb reproductions ",OptimizeNbChildren "Optimiser - Nombre mutations ",OptimizeNbMutants "Optimiser - Condition arrêt ",OptimizeStopCondition "Optimiser - Temps maximum ",OptimizeMaximumDuration Let's see an example: "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 |
3D view utility source code |
I create a 3D view utility for educational purpose; in fact I want to create my own 3D motor, and I finally include it in CiDess. The 3D motor is coded in Visual Basic and does not use 3D facilities of video cards and Pentium processors. So its performance is quite poor! It's the raison why CiDess allow you to save PCB as 3DG files, so you can use a professional 3D software to create good quality 3D pictures. Some mathematics An algorithm Drawing surfaces Source code |
Some mathematics |
"Do 3D" means to draw on a 2D screen the same picture as we see if there is a 3D scene instead of the monitor. In fact, draw a 3D picture is the equivalent to project the 3D coordinates on the screen. Look at the picture: Known data: User eye is centered on a X,Y,Z coordinate system User looks towards R axis direction P,Q,R coordinate system is the A,B,C system after a AY rotation around B, and A,B,C AX is the view point's azimuth and AY is the view point's elevation Screen is facing the user eye, centered on R axis D is the distance between screen and user eye V is a point of the fictive 3D scene Data to find: W coordinates on the screen; W is the projection of V. The Max matrix turn the X,Y,Z system to obtain the A,B,C system:
The May matrix turn the A,B,C system to obtain the P,Q,R system:
The M matrix give P,Q,R system directly from X,Y,Z:
To obtain V coordinates in P,Q,R, we multiply V coordinates in X,Y,Z by M. To obtain W coordinates in P,Q,R, we multiply V coordinates in P,Q,R by D then we divide the result by the R coordinate of V. W screen coordinates are simply P and Q coordinates of W. |
An algorithm |
We can write an algorithm to find the projection of a 3D scene's points: Input: AX angle AY angle D distance For each point of the 3D scene: X,Y,Z User eye position: UX,UY,UZ Pixel conversion coef.: K Screen width: L Screen height: H Results: For each point screen coordinates: xe,ye Temp data: COSAX, SINAX COSAY, SINAY PX, PY QX, QY, QZ RX, RY, RZ E, F OWX, OWY, OWX Algorithm: COSAY = cos(AY) SINAY = sin(AY) COSAX = cos(AX) SINAX = sin(AX) // PY is null 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 is the distance between W and P,Q map E = RX * X + RY * Y + RZ * Z F = D / E SI F > 1 ALORS // (X,Y,Z) point is behind the screen // O point is the intersection between screen and R axis 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 // Pixel coordinates calculation xe = K * xe + L/2 ye = K * ye + H/2 FIN SI FIN POUR |
Drawing surfaces |
We have to draw surfaces. To do that, we have to divide 3D surface in small triangle surfaces. The more triangles are small, the more picture quality will be good. But smaller surfaces involve higher program running time. Then we have to calculate triangles color. Indeed, if all the triangles are painted in the same color, there is no real 3D effect. First, we have to set up the position of a light source. Brightness is related to the sinus of the angle between a light ray from the source and the triangle surface. In fact, if a surface is perpendicular to a light ray, it receives a maximum amount of light; but if the surface is parallel to light rays, it receives no light. Thus, to obtain a correct picture, we have to sort the triangle by their distance from the user eye, so that the closer triangles are drawn at last. Look at the following screen shots taken while the 3D program is running: Remember this algorithm is a basic way to create 3D pictures. A real 3D motor should take into account: - several light sources - shadows - light reflection phenomena - ... I hope this introduction make you want to know more about 3D programming. |
Source code |
Clic here to download the 3D utility source code in Visual Basic 5. An exe file in the archive allows you to run the utility without Visual Basic. If an error occurs, move the exe file in CiDess path. (c) Rémy LUCAS - Last update: 29/09/2018 (V4.29) |