Index: trunk/doc/user/07_io/io_hkp/index.html =================================================================== --- trunk/doc/user/07_io/io_hkp/index.html (revision 30667) +++ trunk/doc/user/07_io/io_hkp/index.html (nonexistent) @@ -1,23 +0,0 @@ - - - - pcb-rnd user manual - - - - -

pcb-rnd - user manual

- -

7.x io_hkp

- -

7.x.1. What is the HKP format?

-

-HKP is Mentor Graphic's file format, Hierarchical Keyword Parser. A -set of HKP files can fully describe a board that can be exported from or -imported to Expedition PCB (old name: Veribest). In theory other -of their product would work with HKP files (such as PADS), but in practice -the actual import/export could be tricky. Also, discussions on -Mentor community forums show that the company started getting rid of the -ASCII HKP format around 2010 in favor of an encrypted and/or binary file format, -so an old version of the software or a special license with new versions might -be needed. Index: trunk/doc/user/07_io/export_xy/index.html =================================================================== --- trunk/doc/user/07_io/export_xy/index.html (revision 30667) +++ trunk/doc/user/07_io/export_xy/index.html (nonexistent) @@ -1,89 +0,0 @@ - - - - pcb-rnd user manual - - - - -

pcb-rnd - user manual

- -

7.x export_xy

-

-Export_xy is a configurable template based export plugin that prints -text files. The output contains an optional header, then an optional block -for each subcircuit and after each such subcircuit block an optional block -for each terminal in that subcircuit. In pseudo-code: -

-print header_template
-foreach subc in subcircuits {
-	print subc_template
-	foreach term in s.terminals {
-		print term_template
-	}
-}
-
-

-Templates can reference to the current term, the current -subc and global properties (such as board properties). - -

7.x.1. Template configuration

-

-Each xy export format has an user assigned ID (which is the short name of the format). -There is a list of strings in the config tree under plugins/export_xy/templates; -each item is named as ID.something where something is: -

-

-Templates are text strings; they are printed as is, keeping all newlines and -whitespace. Portions in between % signs are substituted, depending on the -context. - -

Substitution keywords

-

- -
keyword description -
%UTC% current date and time in UTC -
%author% board author -
%title% board title -
%suffix% coordinate unit (mm or mil) -
%boardw% boward width (unit suffixed coord) -
%boardh% boward height (unit suffixed coord) -
%subc.a.KEY% paste the current subcircuit's attribute value of the attribute whose name matches KEY; print "n/a" for non-existing attributes -
%subc.a.KEY|unk% same as %subc.a.KEY% but print "unknown" instead of "n/a" -
%subc.a.KEY?yes% same as %subc.a.KEY% but print "yes" if attribute value represents true, "n/a" otherwise -
%subc.a.KEY?yes:nope% same as %subc.a.KEY% but print "yes" if attribute value represents true, "nope" otherwise -
%subc.refdes% print the refdes of the current subcircuit -
%subc.refdes_% print the cleaned refdes of the current subcircuit -
%subc.footprint% print the footprint name of the current subcircuit -
%subc.footprint_% print the cleaned footprint name of the current subcircuit -
%subc.value% print the value of the current subcircuit -
%subc.value_% print the cleaned value of the current subcircuit -
%subc.x% print the X coordinate of the origin of the subcircuit (coord with unit suffix) -
%subc.y% print the Y coordinate of the origin of the subcircuit (coord with unit suffix) -
%subc.padx% print the X coordinate calculated from padstacks of the subcircuit (coord with unit suffix) -
%subc.pady% print the Y coordinate calculated from padstacks of the subcircuit (coord with unit suffix) -
%subc.pad_width% print the total width calculated from padstacks of the subcircuit (coord with unit suffix) -
%subc.pad_height% print the total height calculated from padstacks of the subcircuit (coord with unit suffix) -
%subc.pad_width_prerot% print the total width calculated from padstacks of the subcircuit, before applying rotation (coord with unit suffix) -
%subc.pad_height_prerot% print the total height calculated from padstacks of the subcircuit, before applying rotation (coord with unit suffix) -
%subc.rot% print the subc rotation value in degrees -
%subc.siderot% print the subc rotation value in degrees, always looking from the top side, "x-ray mode" (relative to side) -
%subc.270-rot% print the subc rotation value in degrees, subtracted from 270 -
%subc.side270-rot% print the subc rotation value in degrees, always looking from the top side, "x-ray mode", subtracted from 270 (relative to side) -
%subc.side% "top" or "bottom" (determined by subc placement, the subc aux layer) -
%subc.num-side% "1" for top or "2" for bottom (determined by subc placement, the subc aux layer) -
%subc.count% integer value, incremented by one before processing each subcircuit -
%subc.smdvsthru% "SMD" if contains padstacks but no padstack with hole; "PTH" if contains padstack with hole; "0" if neither -
%subc.smdvsthrunum% "2" if contains padstacks but no padstack with hole; "1" if contains padstack with hole; "0" if neither -
%subc.pincout% "pin" or "pad" count. Do not use. -
%term.netname% name of the net the current terminal should be connected to according to the netlist; "NC" for no connection -
- -

-Cleaned means any character that is non-alphanumeric, not "." and not "-" -and not "+" is replaced with "_". Index: trunk/doc/user/07_io/export_openscad/1206.scad =================================================================== --- trunk/doc/user/07_io/export_openscad/1206.scad (revision 30667) +++ trunk/doc/user/07_io/export_openscad/1206.scad (nonexistent) @@ -1,15 +0,0 @@ -module part_1206() -{ - translate([0,0,0.3]) { - // body - color([0.1,0.1,0.1]) - cube([3.2-2*0.2,1.6,0.6], center=true); - // terminals - color([0.8,0.8,0.8]) { - translate([+1.5, 0, 0]) - cube([0.2, 1.6, 0.6], center=true); - translate([-1.5, 0, 0]) - cube([0.2, 1.6, 0.6], center=true); - } - } -} Index: trunk/doc/user/07_io/export_openscad/preliminary.txt =================================================================== --- trunk/doc/user/07_io/export_openscad/preliminary.txt (revision 30667) +++ trunk/doc/user/07_io/export_openscad/preliminary.txt (nonexistent) @@ -1,48 +0,0 @@ -The openscad exporter generates the 3D model of the board in form of -an openscad script. - -The main entry point of the script is pcb_board(). All coordinates are in -mm. The in x and y directions the 0;0 point of the board is the 0;0 point on -screen in pcb-rnd, to make it easy to wrap the board in a translate() after -measuring the coords of a point in pcb-rnd. The vertical origin is the middle -of the board's FR4. - -Supported features: - - arbitrary shaped outline - - top/bottom copper (optional) - - top/bottom mask (optional) - - top/bottom silk (optional) - - holes (optional) - - element models (optional) - -Element models are loaded from external files referenced from the element -in the pcb-rnd board file. Model files are searched recursively under the -footprint library search path. - -The element (footprint instance) can have the following openscad related -attributes, all optional: - - - openscad=filename file name of the .scad script (3d element model) - - openscad-transformation=script apply the specified transformation on the model instance - - openscad-param=p1,p2,p3... parameters to pass on to the model - -If the openscad attribute is not present, no 3d model is inserted. - -If openscad-transformation is specified, it is inserted before the model -call; it typically contains a transform() and/or a rotate() to modify the -placement of the model. The 0;0;0 point of the placement is the origin of -the element in pcb-rnd, on the surface of the board. - -If openscad-param is specified, the module is called with this parameter -list, else the model is called with empty parameter list. - -A model file shall contain a single module, with "module" and the arbitrary -module name in the same line, { in the following line. One instance of -each model is copied into the output file so that the resulting openscad -script has no external reference and is self-contained. - - -Known bugs: - - with pcb elements it's impossible to tell the rotation; this will - be fully solved only with the subcircuit transition. Until that you - will need to manually specify an openscd-transformation for each element Index: trunk/doc/user/07_io/1_1_io_hkp/index.html =================================================================== --- trunk/doc/user/07_io/1_1_io_hkp/index.html (nonexistent) +++ trunk/doc/user/07_io/1_1_io_hkp/index.html (revision 30668) @@ -0,0 +1,23 @@ + + + + pcb-rnd user manual + + + + +

pcb-rnd - user manual

+

7.1 IO plugins

+

7.1.1 io_hkp

+ +

7.1.1.1. What is the HKP format?

+

+HKP is Mentor Graphic's file format, Hierarchical Keyword Parser. A +set of HKP files can fully describe a board that can be exported from or +imported to Expedition PCB (old name: Veribest). In theory other +of their product would work with HKP files (such as PADS), but in practice +the actual import/export could be tricky. Also, discussions on +Mentor community forums show that the company started getting rid of the +ASCII HKP format around 2010 in favor of an encrypted and/or binary file format, +so an old version of the software or a special license with new versions might +be needed. Index: trunk/doc/user/07_io/3_1_export_openscad/1206.scad =================================================================== --- trunk/doc/user/07_io/3_1_export_openscad/1206.scad (nonexistent) +++ trunk/doc/user/07_io/3_1_export_openscad/1206.scad (revision 30668) @@ -0,0 +1,15 @@ +module part_1206() +{ + translate([0,0,0.3]) { + // body + color([0.1,0.1,0.1]) + cube([3.2-2*0.2,1.6,0.6], center=true); + // terminals + color([0.8,0.8,0.8]) { + translate([+1.5, 0, 0]) + cube([0.2, 1.6, 0.6], center=true); + translate([-1.5, 0, 0]) + cube([0.2, 1.6, 0.6], center=true); + } + } +} Index: trunk/doc/user/07_io/3_1_export_openscad/index.html =================================================================== --- trunk/doc/user/07_io/3_1_export_openscad/index.html (nonexistent) +++ trunk/doc/user/07_io/3_1_export_openscad/index.html (revision 30668) @@ -0,0 +1,13 @@ + + + + pcb-rnd user manual + + + + +

pcb-rnd - user manual

+

7.2 Export plugins

+

7.2.1 export_openscad

+

+TODO Index: trunk/doc/user/07_io/3_1_export_openscad/preliminary.txt =================================================================== --- trunk/doc/user/07_io/3_1_export_openscad/preliminary.txt (nonexistent) +++ trunk/doc/user/07_io/3_1_export_openscad/preliminary.txt (revision 30668) @@ -0,0 +1,48 @@ +The openscad exporter generates the 3D model of the board in form of +an openscad script. + +The main entry point of the script is pcb_board(). All coordinates are in +mm. The in x and y directions the 0;0 point of the board is the 0;0 point on +screen in pcb-rnd, to make it easy to wrap the board in a translate() after +measuring the coords of a point in pcb-rnd. The vertical origin is the middle +of the board's FR4. + +Supported features: + - arbitrary shaped outline + - top/bottom copper (optional) + - top/bottom mask (optional) + - top/bottom silk (optional) + - holes (optional) + - element models (optional) + +Element models are loaded from external files referenced from the element +in the pcb-rnd board file. Model files are searched recursively under the +footprint library search path. + +The element (footprint instance) can have the following openscad related +attributes, all optional: + + - openscad=filename file name of the .scad script (3d element model) + - openscad-transformation=script apply the specified transformation on the model instance + - openscad-param=p1,p2,p3... parameters to pass on to the model + +If the openscad attribute is not present, no 3d model is inserted. + +If openscad-transformation is specified, it is inserted before the model +call; it typically contains a transform() and/or a rotate() to modify the +placement of the model. The 0;0;0 point of the placement is the origin of +the element in pcb-rnd, on the surface of the board. + +If openscad-param is specified, the module is called with this parameter +list, else the model is called with empty parameter list. + +A model file shall contain a single module, with "module" and the arbitrary +module name in the same line, { in the following line. One instance of +each model is copied into the output file so that the resulting openscad +script has no external reference and is self-contained. + + +Known bugs: + - with pcb elements it's impossible to tell the rotation; this will + be fully solved only with the subcircuit transition. Until that you + will need to manually specify an openscd-transformation for each element Index: trunk/doc/user/07_io/3_2_export_xy/index.html =================================================================== --- trunk/doc/user/07_io/3_2_export_xy/index.html (nonexistent) +++ trunk/doc/user/07_io/3_2_export_xy/index.html (revision 30668) @@ -0,0 +1,89 @@ + + + + pcb-rnd user manual + + + + +

pcb-rnd - user manual

+

7.3 Export plugins

+

7.3.2 export_xy

+

+Export_xy is a configurable template based export plugin that prints +text files. The output contains an optional header, then an optional block +for each subcircuit and after each such subcircuit block an optional block +for each terminal in that subcircuit. In pseudo-code: +

+print header_template
+foreach subc in subcircuits {
+	print subc_template
+	foreach term in s.terminals {
+		print term_template
+	}
+}
+
+

+Templates can reference to the current term, the current +subc and global properties (such as board properties). + +

7.3.2.1 Template configuration

+

+Each xy export format has an user assigned ID (which is the short name of the format). +There is a list of strings in the config tree under plugins/export_xy/templates; +each item is named as ID.something where something is: +

+

+Templates are text strings; they are printed as is, keeping all newlines and +whitespace. Portions in between % signs are substituted, depending on the +context. + +

7.3.2.2. Substitution keywords

+

+ +
keyword description +
%UTC% current date and time in UTC +
%author% board author +
%title% board title +
%suffix% coordinate unit (mm or mil) +
%boardw% boward width (unit suffixed coord) +
%boardh% boward height (unit suffixed coord) +
%subc.a.KEY% paste the current subcircuit's attribute value of the attribute whose name matches KEY; print "n/a" for non-existing attributes +
%subc.a.KEY|unk% same as %subc.a.KEY% but print "unknown" instead of "n/a" +
%subc.a.KEY?yes% same as %subc.a.KEY% but print "yes" if attribute value represents true, "n/a" otherwise +
%subc.a.KEY?yes:nope% same as %subc.a.KEY% but print "yes" if attribute value represents true, "nope" otherwise +
%subc.refdes% print the refdes of the current subcircuit +
%subc.refdes_% print the cleaned refdes of the current subcircuit +
%subc.footprint% print the footprint name of the current subcircuit +
%subc.footprint_% print the cleaned footprint name of the current subcircuit +
%subc.value% print the value of the current subcircuit +
%subc.value_% print the cleaned value of the current subcircuit +
%subc.x% print the X coordinate of the origin of the subcircuit (coord with unit suffix) +
%subc.y% print the Y coordinate of the origin of the subcircuit (coord with unit suffix) +
%subc.padx% print the X coordinate calculated from padstacks of the subcircuit (coord with unit suffix) +
%subc.pady% print the Y coordinate calculated from padstacks of the subcircuit (coord with unit suffix) +
%subc.pad_width% print the total width calculated from padstacks of the subcircuit (coord with unit suffix) +
%subc.pad_height% print the total height calculated from padstacks of the subcircuit (coord with unit suffix) +
%subc.pad_width_prerot% print the total width calculated from padstacks of the subcircuit, before applying rotation (coord with unit suffix) +
%subc.pad_height_prerot% print the total height calculated from padstacks of the subcircuit, before applying rotation (coord with unit suffix) +
%subc.rot% print the subc rotation value in degrees +
%subc.siderot% print the subc rotation value in degrees, always looking from the top side, "x-ray mode" (relative to side) +
%subc.270-rot% print the subc rotation value in degrees, subtracted from 270 +
%subc.side270-rot% print the subc rotation value in degrees, always looking from the top side, "x-ray mode", subtracted from 270 (relative to side) +
%subc.side% "top" or "bottom" (determined by subc placement, the subc aux layer) +
%subc.num-side% "1" for top or "2" for bottom (determined by subc placement, the subc aux layer) +
%subc.count% integer value, incremented by one before processing each subcircuit +
%subc.smdvsthru% "SMD" if contains padstacks but no padstack with hole; "PTH" if contains padstack with hole; "0" if neither +
%subc.smdvsthrunum% "2" if contains padstacks but no padstack with hole; "1" if contains padstack with hole; "0" if neither +
%subc.pincout% "pin" or "pad" count. Do not use. +
%term.netname% name of the net the current terminal should be connected to according to the netlist; "NC" for no connection +
+ +

+Cleaned means any character that is non-alphanumeric, not "." and not "-" +and not "+" is replaced with "_". Index: trunk/doc/user/07_io/index.html =================================================================== --- trunk/doc/user/07_io/index.html (nonexistent) +++ trunk/doc/user/07_io/index.html (revision 30668) @@ -0,0 +1,36 @@ + + + + pcb-rnd user manual + + + + + +

7. File format support

+Besides its native file format (lihata), pcb-rnd supports various +alien file formats. Support for each file format is implemented in +a separate plugin. +

+There are three types of file format plugins: +import plugins for partial load, export plugins for partial save and +io plugins for complete and/or bidirectional load/save. Partial in this +context means not the whole board, but only a few aspects of it are +handled. +

+ +

+ + +