Initial file commit

This commit is contained in:
Mario Voigt 2019-11-14 20:05:10 +01:00
parent c804a693a8
commit 364393dffe
6631 changed files with 409579 additions and 0 deletions

102
boxes.py.AllEdges.inx Normal file
View File

@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>AllEdges</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.AllEdges</id>
<param name="generator" type="string" gui-hidden="true">alledges</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="AllEdges">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
<page name="4" _gui-text="Hinges and HingePins">
<param name="Hinge_grip_percentage" type="int" max="9999" _gui-text="grip_percentage" gui-description="">0</param>
<param name="Hinge_outset" type="boolean" max="9999" _gui-text="outset" gui-description="have lid overlap at the sides (similar to OutSetEdge)">False</param>
<param name="Hinge_pinwidth" type="float" precision="2" max="9999" _gui-text="pinwidth" gui-description="set to lower value to get disks surrounding the pins">0.5</param>
<param name="Hinge_style" type="enum" _gui-text="style" gui-description='"outset" or "flush"'>
<item value="outset" selected="selected">outset</item>
<item value="flush">flush</item>
</param>
<param name="Hinge_axle" type="int" max="9999" _gui-text="axle" gui-description="diameter of the pin hole">2</param>
<param name="Hinge_grip_length" type="int" max="9999" _gui-text="grip_length" gui-description="fixed length of the grips on he lids">0</param>
<param name="Hinge_hingestrength" type="int" max="9999" _gui-text="hingestrength" gui-description="thickness of the arc holding the pin in place">1</param>
</page>
<page name="5" _gui-text="Slide-on Lids">
<param name="Lid_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="Lid_second_pin" type="boolean" max="9999" _gui-text="second_pin" gui-description="">True</param>
<param name="Lid_spring" type="enum" _gui-text="spring" gui-description="">
<item value="both" selected="selected">both</item>
<item value="none">none</item>
<item value="left">left</item>
<item value="right">right</item>
</param>
<param name="Lid_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="Lid_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="Lid_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="Lid_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">3.0</param>
<param name="Lid_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.05</param>
<param name="Lid_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="Lid_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="6" _gui-text="Click-on Lids">
<param name="Click_angle" type="int" max="9999" _gui-text="angle" gui-description="">5</param>
<param name="Click_bottom_radius" type="float" precision="2" max="9999" _gui-text="bottom_radius" gui-description="">0.1</param>
<param name="Click_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="">3.0</param>
</page>
<page name="7" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

58
boxes.py.AngledBox.inx Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>AngledBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.AngledBox</id>
<param name="generator" type="string" gui-hidden="true">angledbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="AngledBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="n" type="int" max="9999" _gui-text="n" gui-description="number of walls at one side (1+)">5</param>
<param name="top" type="enum" _gui-text="top" gui-description="style of the top and lid">
<item value="none" selected="selected">none</item>
<item value="angled hole">angled hole</item>
<item value="angled lid">angled lid</item>
<item value="angled lid2">angled lid2</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

50
boxes.py.AngledCutJig.inx Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>AngledCutJig</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.AngledCutJig</id>
<param name="generator" type="string" gui-hidden="true">angledcutjig</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="AngledCutJig">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">50</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100</param>
<param name="angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="Angle of the cut">45.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

50
boxes.py.Arcade.inx Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Arcade</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Arcade</id>
<param name="generator" type="string" gui-hidden="true">arcade</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Arcade">
<param name="width" type="float" precision="2" max="9999" _gui-text="width" gui-description="inner width of the console">450.0</param>
<param name="monitor_height" type="float" precision="2" max="9999" _gui-text="monitor_height" gui-description="inner width of the console">350.0</param>
<param name="keyboard_depth" type="float" precision="2" max="9999" _gui-text="keyboard_depth" gui-description="inner width of the console">150.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

36
boxes.py.BayonetBox.inx Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>BayonetBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.BayonetBox</id>
<param name="generator" type="string" gui-hidden="true">bayonetbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="BayonetBox">
<param name="diameter" type="float" precision="2" max="9999" _gui-text="diameter" gui-description="Diameter of the box in mm">50.0</param>
<param name="lugs" type="int" max="9999" _gui-text="lugs" gui-description="number of locking lugs">10</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.BinTray.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>BinTray</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.BinTray</id>
<param name="generator" type="string" gui-hidden="true">bintray</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="BinTray">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">50*3</param>
<param name="sy" type="string" max="9999" _gui-text="sy" gui-description='sections back to front in mm. Possible formats: overallwidth/numberof sections e.g. "250/5"; sectionwidth*numberofsections e.g. "50*5"; section widths separated by ":" e.g. "30:25.5:70'>50*3</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="front" type="float" precision="2" max="9999" _gui-text="front" gui-description="fraction of bin height covert with slope">0.4</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0.5</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

50
boxes.py.BurnTest.inx Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>BurnTest</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.BurnTest</id>
<param name="generator" type="string" gui-hidden="true">burntest</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="BurnTest">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100</param>
<param name="step" type="float" precision="2" max="9999" _gui-text="step" gui-description="increases in burn value between the sides">0.01</param>
<param name="pairs" type="int" max="9999" _gui-text="pairs" gui-description="number of pairs (each testing four burn values)">2</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

51
boxes.py.CardBox.inx Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>CardBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.CardBox</id>
<param name="generator" type="string" gui-hidden="true">cardbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="CardBox">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">30</param>
<param name="cardwidth" type="float" precision="2" max="9999" _gui-text="cardwidth" gui-description="Width of the cards">65</param>
<param name="cardheight" type="float" precision="2" max="9999" _gui-text="cardheight" gui-description="Height of the cards">90</param>
<param name="num" type="int" max="9999" _gui-text="num" gui-description="number of compartments">2</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

47
boxes.py.Castle.inx Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Castle</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Castle</id>
<param name="generator" type="string" gui-hidden="true">castle</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Castle">
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Unstable"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

51
boxes.py.ClosedBox.inx Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>ClosedBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.ClosedBox</id>
<param name="generator" type="string" gui-hidden="true">closedbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="ClosedBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

40
boxes.py.ConcaveKnob.inx Normal file
View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>ConcaveKnob</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.ConcaveKnob</id>
<param name="generator" type="string" gui-hidden="true">concaveknob</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="ConcaveKnob">
<param name="diameter" type="float" precision="2" max="9999" _gui-text="diameter" gui-description="Diameter of the knob (mm)">50.0</param>
<param name="serrations" type="int" max="9999" _gui-text="serrations" gui-description="Number of serrations">3</param>
<param name="rounded" type="float" precision="2" max="9999" _gui-text="rounded" gui-description="Amount of circumference used for non convex parts">0.2</param>
<param name="angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="Angle between convex and concave parts">70.0</param>
<param name="bolthole" type="float" precision="2" max="9999" _gui-text="bolthole" gui-description="Diameter of the bolt hole (mm)">6.0</param>
<param name="dhole" type="float" precision="2" max="9999" _gui-text="dhole" gui-description="D-Flat in fraction of the diameter">1.0</param>
<param name="hexhead" type="float" precision="2" max="9999" _gui-text="hexhead" gui-description="Width of the hex bolt head (mm)">10.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

54
boxes.py.DiscRack.inx Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>DiscRack</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.DiscRack</id>
<param name="generator" type="string" gui-hidden="true">discrack</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="DiscRack">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">20*10</param>
<param name="disc_diameter" type="float" precision="2" max="9999" _gui-text="disc_diameter" gui-description="Disc diameter in mm">150.0</param>
<param name="disc_thickness" type="float" precision="2" max="9999" _gui-text="disc_thickness" gui-description="Thickness of the discs in mm">5.0</param>
<param name="lower_factor" type="float" precision="2" max="9999" _gui-text="lower_factor" gui-description="Position of the lower rack grids along the radius">0.75</param>
<param name="rear_factor" type="float" precision="2" max="9999" _gui-text="rear_factor" gui-description="Position of the rear rack grids along the radius">0.75</param>
<param name="disc_outset" type="float" precision="2" max="9999" _gui-text="disc_outset" gui-description="Additional space kept between the disks and the outbox of the rack">3.0</param>
<param name="angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="Backwards slant of the rack">18</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

37
boxes.py.Display.inx Normal file
View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Display</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Display</id>
<param name="generator" type="string" gui-hidden="true">display</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Display">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">150.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">200.0</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of the corners in mm">5.0</param>
<param name="angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="greater zero for top wider as bottom">0.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.DisplayCase.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>DisplayCase</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.DisplayCase</id>
<param name="generator" type="string" gui-hidden="true">displaycase</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="DisplayCase">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="overhang" type="float" precision="2" max="9999" _gui-text="overhang" gui-description="overhang for joints in mm">2</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

54
boxes.py.DisplayShelf.inx Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>DisplayShelf</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.DisplayShelf</id>
<param name="generator" type="string" gui-hidden="true">displayshelf</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="DisplayShelf">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">400</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">300</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="num" type="int" max="9999" _gui-text="num" gui-description="number of shelves">3</param>
<param name="front" type="float" precision="2" max="9999" _gui-text="front" gui-description="height of front walls">20.0</param>
<param name="angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="angle of floors">30.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

47
boxes.py.DividerTray.inx Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>DividerTray</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.DividerTray</id>
<param name="generator" type="string" gui-hidden="true">dividertray</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="DividerTray">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">50*3</param>
<param name="sy" type="string" max="9999" _gui-text="sy" gui-description='sections back to front in mm. Possible formats: overallwidth/numberof sections e.g. "250/5"; sectionwidth*numberofsections e.g. "50*5"; section widths separated by ":" e.g. "30:25.5:70'>50*3</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="slot_depth" type="float" precision="2" max="9999" _gui-text="slot_depth" gui-description="depth of the slot in mm">20</param>
<param name="slot_angle" type="float" precision="2" max="9999" _gui-text="slot_angle" gui-description="angle at which slots are generated, in degrees. 0° is vertical.">0</param>
<param name="slot_radius" type="float" precision="2" max="9999" _gui-text="slot_radius" gui-description="radius of the slot entrance in mm">2</param>
<param name="slot_extra_slack" type="float" precision="2" max="9999" _gui-text="slot_extra_slack" gui-description="extra slack (in addition to thickness and kerf) for slot width to help insert dividers">0.2</param>
<param name="divider_bottom_margin" type="float" precision="2" max="9999" _gui-text="divider_bottom_margin" gui-description="margin between box's bottom and divider's">0</param>
<param name="divider_upper_notch_radius" type="float" precision="2" max="9999" _gui-text="divider_upper_notch_radius" gui-description="divider's notch's upper radius">1</param>
<param name="divider_lower_notch_radius" type="float" precision="2" max="9999" _gui-text="divider_lower_notch_radius" gui-description="divider's notch's lower radius">8</param>
<param name="divider_notch_depth" type="float" precision="2" max="9999" _gui-text="divider_notch_depth" gui-description="divider's notch's depth">15</param>
<param name="left_wall" type="boolean" max="9999" _gui-text="left_wall" gui-description="generate wall on the left side">True</param>
<param name="right_wall" type="boolean" max="9999" _gui-text="right_wall" gui-description="generate wall on the right side">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Trays and Drawer Inserts"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

47
boxes.py.DrillBox.inx Normal file
View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>DrillBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.DrillBox</id>
<param name="generator" type="string" gui-hidden="true">drillbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="DrillBox">
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>ElectronicsBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.ElectronicsBox</id>
<param name="generator" type="string" gui-hidden="true">electronicsbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="ElectronicsBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="triangle" type="float" precision="2" max="9999" _gui-text="triangle" gui-description="Sides of the triangles holding the lid in mm">25.0</param>
<param name="d1" type="float" precision="2" max="9999" _gui-text="d1" gui-description="Diameter of the inner lid screw holes in mm">2.0</param>
<param name="d2" type="float" precision="2" max="9999" _gui-text="d2" gui-description="Diameter of the lid screw holes in mm">3.0</param>
<param name="d3" type="float" precision="2" max="9999" _gui-text="d3" gui-description="Diameter of the mounting screw holes in mm">3.0</param>
<param name="outsidemounts" type="boolean" max="9999" _gui-text="outsidemounts" gui-description="Add external mounting points">True</param>
<param name="holedist" type="float" precision="2" max="9999" _gui-text="holedist" gui-description="Distance of the screw holes from the wall in mm">7.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

60
boxes.py.FlexBox.inx Normal file
View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>FlexBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.FlexBox</id>
<param name="generator" type="string" gui-hidden="true">flexbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="FlexBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="Radius of the latch in mm">15</param>
<param name="latchsize" type="float" precision="2" max="9999" _gui-text="latchsize" gui-description="size of latch in multiples of thickness">8</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

60
boxes.py.FlexBox2.inx Normal file
View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>FlexBox2</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.FlexBox2</id>
<param name="generator" type="string" gui-hidden="true">flexbox2</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="FlexBox2">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="Radius of the corners in mm">15</param>
<param name="latchsize" type="float" precision="2" max="9999" _gui-text="latchsize" gui-description="size of latch in multiples of thickness">8</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

61
boxes.py.FlexBox3.inx Normal file
View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>FlexBox3</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.FlexBox3</id>
<param name="generator" type="string" gui-hidden="true">flexbox3</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="FlexBox3">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="z" type="float" precision="2" max="9999" _gui-text="z" gui-description="height of the box">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="height of the lid">10.0</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of the lids living hinge">10.0</param>
<param name="c" type="float" precision="2" max="9999" _gui-text="c" gui-description="clearance of the lid">1.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="int" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

60
boxes.py.FlexBox4.inx Normal file
View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>FlexBox4</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.FlexBox4</id>
<param name="generator" type="string" gui-hidden="true">flexbox4</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="FlexBox4">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="Radius of the corners in mm">15</param>
<param name="latchsize" type="float" precision="2" max="9999" _gui-text="latchsize" gui-description="size of latch in multiples of thickness">8</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

60
boxes.py.FlexBox5.inx Normal file
View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>FlexBox5</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.FlexBox5</id>
<param name="generator" type="string" gui-hidden="true">flexbox5</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="FlexBox5">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="top_diameter" type="float" precision="2" max="9999" _gui-text="top_diameter" gui-description="diameter at the top">60</param>
<param name="bottom_diameter" type="float" precision="2" max="9999" _gui-text="bottom_diameter" gui-description="diameter at the bottom">60</param>
<param name="latchsize" type="float" precision="2" max="9999" _gui-text="latchsize" gui-description="size of latch in multiples of thickness">8</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

42
boxes.py.FlexTest.inx Normal file
View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>FlexTest</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.FlexTest</id>
<param name="generator" type="string" gui-hidden="true">flextest</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="FlexTest">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

36
boxes.py.FlexTest2.inx Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>FlexTest2</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.FlexTest2</id>
<param name="generator" type="string" gui-hidden="true">flextest2</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="FlexTest2">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="fw" type="float" precision="2" max="9999" _gui-text="fw" gui-description="distance of flex cuts in multiples of thickness">1</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

51
boxes.py.Folder.inx Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Folder</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Folder</id>
<param name="generator" type="string" gui-hidden="true">folder</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Folder">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">20</param>
<param name="r" type="float" precision="2" max="9999" _gui-text="r" gui-description="radius of the corners">10.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.GearBox.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>GearBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.GearBox</id>
<param name="generator" type="string" gui-hidden="true">gearbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="GearBox">
<param name="teeth1" type="int" max="9999" _gui-text="teeth1" gui-description="number of teeth on ingoing shaft">8</param>
<param name="teeth2" type="int" max="9999" _gui-text="teeth2" gui-description="number of teeth on outgoing shaft">20</param>
<param name="modulus" type="float" precision="2" max="9999" _gui-text="modulus" gui-description="modulus of the theeth in mm">3</param>
<param name="shaft" type="float" precision="2" max="9999" _gui-text="shaft" gui-description="diameter of the shaft">6.0</param>
<param name="stages" type="int" max="9999" _gui-text="stages" gui-description="number of stages in the gear reduction">4</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

42
boxes.py.Gears.inx Normal file
View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Gears</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Gears</id>
<param name="generator" type="string" gui-hidden="true">gears</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Gears">
<param name="teeth1" type="int" max="9999" _gui-text="teeth1" gui-description="number of teeth">12</param>
<param name="shaft1" type="float" precision="2" max="9999" _gui-text="shaft1" gui-description="diameter of the shaft 1">6.0</param>
<param name="dpercentage1" type="float" precision="2" max="9999" _gui-text="dpercentage1" gui-description="percent of the D section of shaft 1 (100 for round shaft)">75</param>
<param name="teeth2" type="int" max="9999" _gui-text="teeth2" gui-description="number of teeth in the other size of gears">32</param>
<param name="shaft2" type="float" precision="2" max="9999" _gui-text="shaft2" gui-description="diameter of the shaft2 (zero for same as shaft 1)">0.0</param>
<param name="dpercentage2" type="float" precision="2" max="9999" _gui-text="dpercentage2" gui-description="percent of the D section of shaft 1 (0 for same as shaft 1)">0</param>
<param name="modulus" type="float" precision="2" max="9999" _gui-text="modulus" gui-description="width of teeth in mm">5</param>
<param name="pressure_angle" type="float" precision="2" max="9999" _gui-text="pressure_angle" gui-description="angle of the teeth touching (in degrees)">20</param>
<param name="profile_shift" type="float" precision="2" max="9999" _gui-text="profile_shift" gui-description="in precent of the modulus">20</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

61
boxes.py.HeartBox.inx Normal file
View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>HeartBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.HeartBox</id>
<param name="generator" type="string" gui-hidden="true">heartbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="HeartBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">150</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">50</param>
<param name="top" type="enum" _gui-text="top" gui-description="style of the top and lid">
<item value="closed" selected="selected">closed</item>
<item value="hole">hole</item>
<item value="lid">lid</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">1.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">1.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

66
boxes.py.HingeBox.inx Normal file
View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>HingeBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.HingeBox</id>
<param name="generator" type="string" gui-hidden="true">hingebox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="HingeBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="lidheight" type="float" precision="2" max="9999" _gui-text="lidheight" gui-description="height of lid in mm">20.0</param>
<param name="splitlid" type="float" precision="2" max="9999" _gui-text="splitlid" gui-description="split the lid in y direction (mm)">0.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Cabinet Hinges">
<param name="CabinetHinge_bore" type="float" precision="2" max="9999" _gui-text="bore" gui-description="diameter of the pin hole in mm">3.2</param>
<param name="CabinetHinge_eyes_per_hinge" type="int" max="9999" _gui-text="eyes_per_hinge" gui-description="pieces per hinge">5</param>
<param name="CabinetHinge_hinges" type="int" max="9999" _gui-text="hinges" gui-description="number of hinges per edge">2</param>
<param name="CabinetHinge_style" type="enum" _gui-text="style" gui-description="style of hinge used">
<item value="inside" selected="selected">inside</item>
<item value="outside">outside</item>
</param>
<param name="CabinetHinge_eye" type="float" precision="2" max="9999" _gui-text="eye" gui-description="radius of the eye (in multiples of thickness)">1.5</param>
<param name="CabinetHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="space between eyes (in multiples of thickness)">0.05</param>
<param name="CabinetHinge_spacing" type="float" precision="2" max="9999" _gui-text="spacing" gui-description="minimum space around the hinge">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.Hook.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Hook</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Hook</id>
<param name="generator" type="string" gui-hidden="true">hook</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Hook">
<param name="width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the hook (back plate is a bit wider)">40.0</param>
<param name="height" type="float" precision="2" max="9999" _gui-text="height" gui-description="inner height of the hook">40.0</param>
<param name="depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="inner depth of the hook">40.0</param>
<param name="strength" type="float" precision="2" max="9999" _gui-text="strength" gui-description="width of the hook from the side">20.0</param>
<param name="angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="angle of the support underneeth">45.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0.5</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>IntegratedHingeBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.IntegratedHingeBox</id>
<param name="generator" type="string" gui-hidden="true">integratedhingebox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="IntegratedHingeBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="lidheight" type="float" precision="2" max="9999" _gui-text="lidheight" gui-description="height of lid in mm">20.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Chest Hinges">
<param name="ChestHinge_hinge_strength" type="float" precision="2" max="9999" _gui-text="hinge_strength" gui-description="thickness of the arc holding the pin in place">1.0</param>
<param name="ChestHinge_pin_height" type="float" precision="2" max="9999" _gui-text="pin_height" gui-description="radius of the disc rotating in the hinge">2.0</param>
<param name="ChestHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="">0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

51
boxes.py.LBeam.inx Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>LBeam</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.LBeam</id>
<param name="generator" type="string" gui-hidden="true">lbeam</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="LBeam">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

50
boxes.py.LaserClamp.inx Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>LaserClamp</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.LaserClamp</id>
<param name="generator" type="string" gui-hidden="true">laserclamp</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="LaserClamp">
<param name="minheight" type="float" precision="2" max="9999" _gui-text="minheight" gui-description="minimal clamping height in mm">25.0</param>
<param name="maxheight" type="float" precision="2" max="9999" _gui-text="maxheight" gui-description="maximal clamping height in mm">50.0</param>
<param name="extraheight" type="float" precision="2" max="9999" _gui-text="extraheight" gui-description="extra height to make operation smoother in mm">0.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="int" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>LaserHoldfast</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.LaserHoldfast</id>
<param name="generator" type="string" gui-hidden="true">laserholdfast</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="LaserHoldfast">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">25</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">40</param>
<param name="hookheight" type="float" precision="2" max="9999" _gui-text="hookheight" gui-description="height of the top hook">5.0</param>
<param name="shaftwidth" type="float" precision="2" max="9999" _gui-text="shaftwidth" gui-description="width of the shaft">5.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.MagazinFile.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>MagazinFile</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.MagazinFile</id>
<param name="generator" type="string" gui-hidden="true">magazinfile</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="MagazinFile">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="hi" type="float" precision="2" max="9999" _gui-text="hi" gui-description="inner height of inner walls in mm (unless outside selected)(leave to zero for same as outer walls)">0.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>MakitaPowerSupply</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.MakitaPowerSupply</id>
<param name="generator" type="string" gui-hidden="true">makitapowersupply</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="MakitaPowerSupply">
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

58
boxes.py.NemaMount.inx Normal file
View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>NemaMount</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.NemaMount</id>
<param name="generator" type="string" gui-hidden="true">nemamount</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="NemaMount">
<param name="size" type="enum" _gui-text="size" gui-description="Nema size of the motor">
<item value="8" selected="selected">8</item>
<item value="11">11</item>
<item value="14">14</item>
<item value="16">16</item>
<item value="17">17</item>
<item value="23">23</item>
<item value="24">24</item>
<item value="34">34</item>
<item value="42">42</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

64
boxes.py.NotesHolder.inx Normal file
View File

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>NotesHolder</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.NotesHolder</id>
<param name="generator" type="string" gui-hidden="true">notesholder</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="NotesHolder">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">78</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">78</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">35</param>
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="e">e Straight Edge</item>
</param>
<param name="opening" type="float" precision="2" max="9999" _gui-text="opening" gui-description="percent of front that's open">40</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="int" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

51
boxes.py.OpenBox.inx Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>OpenBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.OpenBox</id>
<param name="generator" type="string" gui-hidden="true">openbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="OpenBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

74
boxes.py.OrganPipe.inx Normal file
View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>OrganPipe</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.OrganPipe</id>
<param name="generator" type="string" gui-hidden="true">organpipe</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="OrganPipe">
<param name="pitch" type="enum" _gui-text="pitch" gui-description="pitch">
<item value="c" selected="selected">c</item>
<item value="c#">c#</item>
<item value="d">d</item>
<item value="d#">d#</item>
<item value="e">e</item>
<item value="f">f</item>
<item value="f#">f#</item>
<item value="g">g</item>
<item value="g#">g#</item>
<item value="a">a</item>
<item value="a#">a#</item>
<item value="b">b</item>
</param>
<param name="octave" type="int" max="9999" _gui-text="octave" gui-description="Octave in International Pitch Notation (2 == C)">2</param>
<param name="intonation" type="float" precision="2" max="9999" _gui-text="intonation" gui-description="Intonation Number. 2 for max. efficiency, 3 max.">2.0</param>
<param name="mouthratio" type="float" precision="2" max="9999" _gui-text="mouthratio" gui-description="mouth to circumference ratio (0.1 to 0.45). Determines the width to depth ratio">0.25</param>
<param name="cutup" type="float" precision="2" max="9999" _gui-text="cutup" gui-description="Cutup to mouth ratio">0.3</param>
<param name="mensur" type="int" max="9999" _gui-text="mensur" gui-description="Distance in halftones in the Normalmensur by Töpfer">0</param>
<param name="windpressure" type="float" precision="2" max="9999" _gui-text="windpressure" gui-description="uses unit selected below">588.4</param>
<param name="windpressure_units" type="enum" _gui-text="windpressure_units" gui-description="in Pa">
<item value="Pa" selected="selected">Pa</item>
<item value="mBar">mBar</item>
<item value="mmHg">mmHg</item>
<item value="mmH2O">mmH2O</item>
</param>
<param name="stopped" type="boolean" max="9999" _gui-text="stopped" gui-description="pipe is closed at the top">False</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">3.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">3.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Unstable"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

53
boxes.py.OttoBody.inx Normal file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>OttoBody</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.OttoBody</id>
<param name="generator" type="string" gui-hidden="true">ottobody</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="OttoBody">
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Chest Hinges">
<param name="ChestHinge_hinge_strength" type="float" precision="2" max="9999" _gui-text="hinge_strength" gui-description="thickness of the arc holding the pin in place">1.0</param>
<param name="ChestHinge_pin_height" type="float" precision="2" max="9999" _gui-text="pin_height" gui-description="radius of the disc rotating in the hinge">2.0</param>
<param name="ChestHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="">0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

50
boxes.py.OttoLegs.inx Normal file
View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>OttoLegs</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.OttoLegs</id>
<param name="generator" type="string" gui-hidden="true">ottolegs</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="OttoLegs">
<param name="anklebolt1" type="float" precision="2" max="9999" _gui-text="anklebolt1" gui-description="diameter for hole for ankle bolts - foot side">3.0</param>
<param name="anklebolt2" type="float" precision="2" max="9999" _gui-text="anklebolt2" gui-description="diameter for hole for ankle bolts - leg side">2.6</param>
<param name="length" type="float" precision="2" max="9999" _gui-text="length" gui-description="length of legs (34mm min)">34.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">1.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">1.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

38
boxes.py.OttoSoles.inx Normal file
View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>OttoSoles</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.OttoSoles</id>
<param name="generator" type="string" gui-hidden="true">ottosoles</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="OttoSoles">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">56.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">36.0</param>
<param name="width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of sole stripe">4.0</param>
<param name="chamfer" type="float" precision="2" max="9999" _gui-text="chamfer" gui-description="chamfer at the corners">5.0</param>
<param name="num" type="int" max="9999" _gui-text="num" gui-description="number of soles">2</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

60
boxes.py.PaintStorage.inx Normal file
View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>PaintStorage</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.PaintStorage</id>
<param name="generator" type="string" gui-hidden="true">paintstorage</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="PaintStorage">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">300</param>
<param name="canheight" type="int" max="9999" _gui-text="canheight" gui-description="Height of the paintcans">50</param>
<param name="candiameter" type="int" max="9999" _gui-text="candiameter" gui-description="Diameter of the paintcans">30</param>
<param name="minspace" type="int" max="9999" _gui-text="minspace" gui-description="Minimum space between the paintcans">10</param>
<param name="hexpattern" type="boolean" max="9999" _gui-text="hexpattern" gui-description="Use hexagonal arrangement for the holes instead of orthogonal">False</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

39
boxes.py.Planetary.inx Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Planetary</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Planetary</id>
<param name="generator" type="string" gui-hidden="true">planetary</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Planetary">
<param name="sunteeth" type="int" max="9999" _gui-text="sunteeth" gui-description="number of teeth on sun gear">8</param>
<param name="planetteeth" type="int" max="9999" _gui-text="planetteeth" gui-description="number of teeth on planets">20</param>
<param name="maxplanets" type="int" max="9999" _gui-text="maxplanets" gui-description="limit the number of planets (0 for as much as fit)">0</param>
<param name="deltateeth" type="int" max="9999" _gui-text="deltateeth" gui-description="enable secondary ring with given delta to the ring gear">0</param>
<param name="modulus" type="float" precision="2" max="9999" _gui-text="modulus" gui-description="modulus of the theeth in mm">3</param>
<param name="shaft" type="float" precision="2" max="9999" _gui-text="shaft" gui-description="diameter of the shaft">6.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

69
boxes.py.Planetary2.inx Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Planetary2</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Planetary2</id>
<param name="generator" type="string" gui-hidden="true">planetary2</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Planetary2">
<param name="nema_mount" type="enum" _gui-text="nema_mount" gui-description="NEMA size of motor">
<item value="8">8</item>
<item value="11">11</item>
<item value="14">14</item>
<item value="16">16</item>
<item value="17">17</item>
<item value="23" selected="selected">23</item>
<item value="24">24</item>
<item value="34">34</item>
<item value="42">42</item>
</param>
<param name="profile" type="enum" _gui-text="profile" gui-description="profile of the teeth/belt">
<item value="40DP">40DP</item>
<item value="AT5">AT5</item>
<item value="GT2_2mm" selected="selected">GT2_2mm</item>
<item value="GT2_3mm">GT2_3mm</item>
<item value="GT2_5mm">GT2_5mm</item>
<item value="H">H</item>
<item value="HTD_3mm">HTD_3mm</item>
<item value="HTD_5mm">HTD_5mm</item>
<item value="HTD_8mm">HTD_8mm</item>
<item value="MXL">MXL</item>
<item value="T10">T10</item>
<item value="T2_5">T2_5</item>
<item value="T5">T5</item>
<item value="XL">XL</item>
</param>
<param name="sunteeth" type="int" max="9999" _gui-text="sunteeth" gui-description="number of teeth on sun gear">20</param>
<param name="planetteeth" type="int" max="9999" _gui-text="planetteeth" gui-description="number of teeth on planets">20</param>
<param name="maxplanets" type="int" max="9999" _gui-text="maxplanets" gui-description="limit the number of planets (0 for as much as fit)">0</param>
<param name="deltateeth" type="int" max="9999" _gui-text="deltateeth" gui-description="enable secondary ring with given delta to the ring gear">1</param>
<param name="modulus" type="float" precision="2" max="9999" _gui-text="modulus" gui-description="modulus of the theeth in mm">3</param>
<param name="shaft" type="float" precision="2" max="9999" _gui-text="shaft" gui-description="diameter of the shaft">6.0</param>
<param name="screw1" type="float" precision="2" max="9999" _gui-text="screw1" gui-description="diameter of lower part of the screw hole">2.4</param>
<param name="screw2" type="float" precision="2" max="9999" _gui-text="screw2" gui-description="diameter of upper part of the screw hole">4.0</param>
<param name="pinsize" type="float" precision="2" max="9999" _gui-text="pinsize" gui-description="diameter of alignment pins">3.1</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.PoleHook.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>PoleHook</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.PoleHook</id>
<param name="generator" type="string" gui-hidden="true">polehook</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="PoleHook">
<param name="diameter" type="float" precision="2" max="9999" _gui-text="diameter" gui-description="diameter of the thing to hook">50.0</param>
<param name="screw" type="float" precision="2" max="9999" _gui-text="screw" gui-description="diameter of the screw in mm">7.8</param>
<param name="screwhead" type="float" precision="2" max="9999" _gui-text="screwhead" gui-description="with of the screw head in mm">13.0</param>
<param name="screwheadheight" type="float" precision="2" max="9999" _gui-text="screwheadheight" gui-description="height of the screw head in mm">5.5</param>
<param name="pin" type="float" precision="2" max="9999" _gui-text="pin" gui-description="diameter of the pin in mm">4.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

54
boxes.py.Pulley.inx Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Pulley</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Pulley</id>
<param name="generator" type="string" gui-hidden="true">pulley</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Pulley">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">6.0</param>
<param name="profile" type="enum" _gui-text="profile" gui-description="profile of the teeth/belt">
<item value="40DP">40DP</item>
<item value="AT5">AT5</item>
<item value="GT2_2mm" selected="selected">GT2_2mm</item>
<item value="GT2_3mm">GT2_3mm</item>
<item value="GT2_5mm">GT2_5mm</item>
<item value="H">H</item>
<item value="HTD_3mm">HTD_3mm</item>
<item value="HTD_5mm">HTD_5mm</item>
<item value="HTD_8mm">HTD_8mm</item>
<item value="MXL">MXL</item>
<item value="T10">T10</item>
<item value="T2_5">T2_5</item>
<item value="T5">T5</item>
<item value="XL">XL</item>
</param>
<param name="teeth" type="int" max="9999" _gui-text="teeth" gui-description="number of teeth">20</param>
<param name="axle" type="float" precision="2" max="9999" _gui-text="axle" gui-description="diameter of the axle">5</param>
<param name="insideout" type="boolean" max="9999" _gui-text="insideout" gui-description="create a ring gear with the belt being pushed against from within">False</param>
<param name="top" type="float" precision="2" max="9999" _gui-text="top" gui-description="overlap of top rim (zero for none)">0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

69
boxes.py.Rack10Box.inx Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Rack10Box</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Rack10Box</id>
<param name="generator" type="string" gui-hidden="true">rack10box</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Rack10Box">
<param name="depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="inner depth in mm">100.0</param>
<param name="height" type="enum" _gui-text="height" gui-description="height in rack units">
<item value="1">1</item>
<item value="2" selected="selected">2</item>
<item value="3">3</item>
<item value="4">4</item>
<item value="5">5</item>
<item value="6">6</item>
<item value="7">7</item>
<item value="8">8</item>
<item value="9">9</item>
<item value="10">10</item>
<item value="11">11</item>
<item value="12">12</item>
<item value="13">13</item>
<item value="14">14</item>
<item value="15">15</item>
<item value="16">16</item>
</param>
<param name="triangle" type="float" precision="2" max="9999" _gui-text="triangle" gui-description="Sides of the triangles holding the lid in mm">25.0</param>
<param name="d1" type="float" precision="2" max="9999" _gui-text="d1" gui-description="Diameter of the inner lid screw holes in mm">2.0</param>
<param name="d2" type="float" precision="2" max="9999" _gui-text="d2" gui-description="Diameter of the lid screw holes in mm">3.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0.5</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

69
boxes.py.Rack19Box.inx Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Rack19Box</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Rack19Box</id>
<param name="generator" type="string" gui-hidden="true">rack19box</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Rack19Box">
<param name="depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="inner depth in mm">100.0</param>
<param name="height" type="enum" _gui-text="height" gui-description="height in rack units">
<item value="1">1</item>
<item value="2" selected="selected">2</item>
<item value="3">3</item>
<item value="4">4</item>
<item value="5">5</item>
<item value="6">6</item>
<item value="7">7</item>
<item value="8">8</item>
<item value="9">9</item>
<item value="10">10</item>
<item value="11">11</item>
<item value="12">12</item>
<item value="13">13</item>
<item value="14">14</item>
<item value="15">15</item>
<item value="16">16</item>
</param>
<param name="triangle" type="float" precision="2" max="9999" _gui-text="triangle" gui-description="Sides of the triangles holding the lid in mm">25.0</param>
<param name="d1" type="float" precision="2" max="9999" _gui-text="d1" gui-description="Diameter of the inner lid screw holes in mm">2.0</param>
<param name="d2" type="float" precision="2" max="9999" _gui-text="d2" gui-description="Diameter of the lid screw holes in mm">3.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0.5</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Rack19HalfWidth</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Rack19HalfWidth</id>
<param name="generator" type="string" gui-hidden="true">rack19halfwidth</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Rack19HalfWidth">
<param name="ru_count" type="float" precision="2" max="9999" _gui-text="ru_count" gui-description="number of rack units">1</param>
<param name="holes" type="string" max="9999" _gui-text="holes" gui-description="mounting patterns: x=xlr, m=midi, p=9v-power, w=6.5mm-wire, space=next row">xxmpwx</param>
<param name="z" type="float" precision="2" max="9999" _gui-text="z" gui-description="depth of the shorter (rackear) side">20</param>
<param name="deepz" type="float" precision="2" max="9999" _gui-text="deepz" gui-description="depth of the longer (screwed to another half sized thing) side">124</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

56
boxes.py.RackBox.inx Normal file
View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>RackBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.RackBox</id>
<param name="generator" type="string" gui-hidden="true">rackbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="RackBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="triangle" type="float" precision="2" max="9999" _gui-text="triangle" gui-description="Sides of the triangles holding the lid in mm">25.0</param>
<param name="d1" type="float" precision="2" max="9999" _gui-text="d1" gui-description="Diameter of the inner lid screw holes in mm">2.0</param>
<param name="d2" type="float" precision="2" max="9999" _gui-text="d2" gui-description="Diameter of the lid screw holes in mm">3.0</param>
<param name="d3" type="float" precision="2" max="9999" _gui-text="d3" gui-description="Diameter of the mounting screw holes in mm">4.0</param>
<param name="holedist" type="float" precision="2" max="9999" _gui-text="holedist" gui-description="Distance of the screw holes from the wall in mm">7.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1.2</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,286 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>RectangularWall</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.RectangularWall</id>
<param name="generator" type="string" gui-hidden="true">rectangularwall</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="RectangularWall">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100</param>
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="c">c Abstract Edge Class</item>
<item value="C">C Abstract Edge Class</item>
<item value="d">d Edge (parallel slot wall Holes)</item>
<item value="D">D Edge (parallel slot wall Holes)</item>
<item value="e">e Straight Edge</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="g">g Corrugated edge useful as an gipping area</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="I">I Edge with hinge pin</item>
<item value="j">j Straight edge with hinge eye (other end)</item>
<item value="J">J Edge with hinge pin (other end)</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="K">K Edge with hinge pin (both ends)</item>
<item value="l">l Edge for slide on lid (back)</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="m">m Edge for slide on lid (left)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="n">n Edge for slide on lid (right)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="o">o Edge with chest hinge</item>
<item value="O">O Edge with chest hinge (other end)</item>
<item value="p">p Edge with chest hinge</item>
<item value="P">P Edge with chest hinge (other end)</item>
<item value="q">q Edge with pins for an chest hinge</item>
<item value="Q">Q Edge opposing a chest hinge</item>
<item value="R">R Rack (and pinion) Edge</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="S">S Stackable (top)</item>
<item value="u">u Edge with cabinet hinges</item>
<item value="U">U Edge with cabinet hinges top side</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="V">V Edge with cabinet hinges 90° lid</item>
</param>
<param name="right_edge" type="enum" gui-text="right_edge" gui-description="edge type for right edge">
<item value="c">c Abstract Edge Class</item>
<item value="C">C Abstract Edge Class</item>
<item value="d">d Edge (parallel slot wall Holes)</item>
<item value="D">D Edge (parallel slot wall Holes)</item>
<item value="e">e Straight Edge</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="g">g Corrugated edge useful as an gipping area</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="I">I Edge with hinge pin</item>
<item value="j">j Straight edge with hinge eye (other end)</item>
<item value="J">J Edge with hinge pin (other end)</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="K">K Edge with hinge pin (both ends)</item>
<item value="l">l Edge for slide on lid (back)</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="m">m Edge for slide on lid (left)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="n">n Edge for slide on lid (right)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="o">o Edge with chest hinge</item>
<item value="O">O Edge with chest hinge (other end)</item>
<item value="p">p Edge with chest hinge</item>
<item value="P">P Edge with chest hinge (other end)</item>
<item value="q">q Edge with pins for an chest hinge</item>
<item value="Q">Q Edge opposing a chest hinge</item>
<item value="R">R Rack (and pinion) Edge</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="S">S Stackable (top)</item>
<item value="u">u Edge with cabinet hinges</item>
<item value="U">U Edge with cabinet hinges top side</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="V">V Edge with cabinet hinges 90° lid</item>
</param>
<param name="top_edge" type="enum" gui-text="top_edge" gui-description="edge type for top edge">
<item value="c">c Abstract Edge Class</item>
<item value="C">C Abstract Edge Class</item>
<item value="d">d Edge (parallel slot wall Holes)</item>
<item value="D">D Edge (parallel slot wall Holes)</item>
<item value="e">e Straight Edge</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="g">g Corrugated edge useful as an gipping area</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="I">I Edge with hinge pin</item>
<item value="j">j Straight edge with hinge eye (other end)</item>
<item value="J">J Edge with hinge pin (other end)</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="K">K Edge with hinge pin (both ends)</item>
<item value="l">l Edge for slide on lid (back)</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="m">m Edge for slide on lid (left)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="n">n Edge for slide on lid (right)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="o">o Edge with chest hinge</item>
<item value="O">O Edge with chest hinge (other end)</item>
<item value="p">p Edge with chest hinge</item>
<item value="P">P Edge with chest hinge (other end)</item>
<item value="q">q Edge with pins for an chest hinge</item>
<item value="Q">Q Edge opposing a chest hinge</item>
<item value="R">R Rack (and pinion) Edge</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="S">S Stackable (top)</item>
<item value="u">u Edge with cabinet hinges</item>
<item value="U">U Edge with cabinet hinges top side</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="V">V Edge with cabinet hinges 90° lid</item>
</param>
<param name="left_edge" type="enum" gui-text="left_edge" gui-description="edge type for left edge">
<item value="c">c Abstract Edge Class</item>
<item value="C">C Abstract Edge Class</item>
<item value="d">d Edge (parallel slot wall Holes)</item>
<item value="D">D Edge (parallel slot wall Holes)</item>
<item value="e">e Straight Edge</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="g">g Corrugated edge useful as an gipping area</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="I">I Edge with hinge pin</item>
<item value="j">j Straight edge with hinge eye (other end)</item>
<item value="J">J Edge with hinge pin (other end)</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="K">K Edge with hinge pin (both ends)</item>
<item value="l">l Edge for slide on lid (back)</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="m">m Edge for slide on lid (left)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="n">n Edge for slide on lid (right)</item>
<item value="M">M Edge for slide on lid (box left)</item>
<item value="o">o Edge with chest hinge</item>
<item value="O">O Edge with chest hinge (other end)</item>
<item value="p">p Edge with chest hinge</item>
<item value="P">P Edge with chest hinge (other end)</item>
<item value="q">q Edge with pins for an chest hinge</item>
<item value="Q">Q Edge opposing a chest hinge</item>
<item value="R">R Rack (and pinion) Edge</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="S">S Stackable (top)</item>
<item value="u">u Edge with cabinet hinges</item>
<item value="U">U Edge with cabinet hinges top side</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="V">V Edge with cabinet hinges 90° lid</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Cabinet Hinges">
<param name="CabinetHinge_bore" type="float" precision="2" max="9999" _gui-text="bore" gui-description="diameter of the pin hole in mm">3.2</param>
<param name="CabinetHinge_eyes_per_hinge" type="int" max="9999" _gui-text="eyes_per_hinge" gui-description="pieces per hinge">5</param>
<param name="CabinetHinge_hinges" type="int" max="9999" _gui-text="hinges" gui-description="number of hinges per edge">2</param>
<param name="CabinetHinge_style" type="enum" _gui-text="style" gui-description="style of hinge used">
<item value="inside" selected="selected">inside</item>
<item value="outside">outside</item>
</param>
<param name="CabinetHinge_eye" type="float" precision="2" max="9999" _gui-text="eye" gui-description="radius of the eye (in multiples of thickness)">1.5</param>
<param name="CabinetHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="space between eyes (in multiples of thickness)">0.05</param>
<param name="CabinetHinge_spacing" type="float" precision="2" max="9999" _gui-text="spacing" gui-description="minimum space around the hinge">2.0</param>
</page>
<page name="3" _gui-text="Click-on Lids">
<param name="Click_angle" type="int" max="9999" _gui-text="angle" gui-description="">5</param>
<param name="Click_bottom_radius" type="float" precision="2" max="9999" _gui-text="bottom_radius" gui-description="">0.1</param>
<param name="Click_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="">3.0</param>
</page>
<page name="4" _gui-text="Dove Tail Joints">
<param name="DoveTail_angle" type="int" max="9999" _gui-text="angle" gui-description="how much should fingers widen (-80 to 80)">50</param>
<param name="DoveTail_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="how far the dove tails stick out of/into the edge">1.5</param>
<param name="DoveTail_radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius used on all four corners">0.2</param>
<param name="DoveTail_size" type="int" max="9999" _gui-text="size" gui-description="from one middle of a dove tail to another">3</param>
</page>
<page name="5" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="6" _gui-text="rack (and pinion) edge">
<param name="Gear_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="pressure angle">20.0</param>
<param name="Gear_clearance" type="float" precision="2" max="9999" _gui-text="clearance" gui-description="clearance">0.0</param>
<param name="Gear_dimension" type="float" precision="2" max="9999" _gui-text="dimension" gui-description="modulus of the gear (in mm)">3.0</param>
<param name="Gear_profile_shift" type="float" precision="2" max="9999" _gui-text="profile_shift" gui-description="Profile shift">20.0</param>
</page>
<page name="7" _gui-text="GrippingEdge">
<param name="Grip_outset" type="boolean" max="9999" _gui-text="outset" gui-description="extend outward the straight edge">True</param>
<param name="Grip_style" type="enum" _gui-text="style" gui-description='"wave" or "bumps"'>
<item value="wave" selected="selected">wave</item>
<item value="bumps">bumps</item>
</param>
<param name="Grip_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="depth of the grooves">0.3</param>
</page>
<page name="8" _gui-text="Hinges and HingePins">
<param name="Hinge_grip_percentage" type="int" max="9999" _gui-text="grip_percentage" gui-description="">0</param>
<param name="Hinge_outset" type="boolean" max="9999" _gui-text="outset" gui-description="have lid overlap at the sides (similar to OutSetEdge)">False</param>
<param name="Hinge_pinwidth" type="float" precision="2" max="9999" _gui-text="pinwidth" gui-description="set to lower value to get disks surrounding the pins">0.5</param>
<param name="Hinge_style" type="enum" _gui-text="style" gui-description='"outset" or "flush"'>
<item value="outset" selected="selected">outset</item>
<item value="flush">flush</item>
</param>
<param name="Hinge_axle" type="int" max="9999" _gui-text="axle" gui-description="diameter of the pin hole">2</param>
<param name="Hinge_grip_length" type="int" max="9999" _gui-text="grip_length" gui-description="fixed length of the grips on he lids">0</param>
<param name="Hinge_hingestrength" type="int" max="9999" _gui-text="hingestrength" gui-description="thickness of the arc holding the pin in place">1</param>
</page>
<page name="9" _gui-text="Chest Hinges">
<param name="ChestHinge_hinge_strength" type="float" precision="2" max="9999" _gui-text="hinge_strength" gui-description="thickness of the arc holding the pin in place">1.0</param>
<param name="ChestHinge_pin_height" type="float" precision="2" max="9999" _gui-text="pin_height" gui-description="radius of the disc rotating in the hinge">2.0</param>
<param name="ChestHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="">0.1</param>
</page>
<page name="10" _gui-text="Slide-on Lids">
<param name="Lid_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="Lid_second_pin" type="boolean" max="9999" _gui-text="second_pin" gui-description="">True</param>
<param name="Lid_spring" type="enum" _gui-text="spring" gui-description="">
<item value="both" selected="selected">both</item>
<item value="none">none</item>
<item value="left">left</item>
<item value="right">right</item>
</param>
<param name="Lid_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="Lid_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="Lid_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="Lid_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">3.0</param>
<param name="Lid_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.05</param>
<param name="Lid_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="Lid_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="11" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

59
boxes.py.RegularBox.inx Normal file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>RegularBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.RegularBox</id>
<param name="generator" type="string" gui-hidden="true">regularbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="RegularBox">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="inner radius if the box (at the corners)">50.0</param>
<param name="n" type="int" max="9999" _gui-text="n" gui-description="number of sides">5</param>
<param name="top" type="enum" _gui-text="top" gui-description="style of the top and lid">
<item value="none" selected="selected">none</item>
<item value="hole">hole</item>
<item value="angled hole">angled hole</item>
<item value="angled lid">angled lid</item>
<item value="angled lid2">angled lid2</item>
<item value="round lid">round lid</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

122
boxes.py.RobotArm.inx Normal file
View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>RobotArm</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.RobotArm</id>
<param name="generator" type="string" gui-hidden="true">robotarm</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="RobotArm">
<param name="type1" type="enum" _gui-text="type1" gui-description="type of arm segment">
<item value="none" selected="selected">none</item>
<item value="RobotArmMM">RobotArmMM</item>
<item value="RobotArmMm">RobotArmMm</item>
<item value="RobotArmUU">RobotArmUU</item>
<item value="RobotArmUu">RobotArmUu</item>
<item value="RobotArmMu">RobotArmMu</item>
</param>
<param name="servo1a" type="enum" _gui-text="servo1a" gui-description="type of servo to use">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="servo1b" type="enum" _gui-text="servo1b" gui-description="type of servo to use on second side (if different is supported)">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="length1" type="float" precision="2" max="9999" _gui-text="length1" gui-description="length of segment axle to axle">50.0</param>
<param name="type2" type="enum" _gui-text="type2" gui-description="type of arm segment">
<item value="none" selected="selected">none</item>
<item value="RobotArmMM">RobotArmMM</item>
<item value="RobotArmMm">RobotArmMm</item>
<item value="RobotArmUU">RobotArmUU</item>
<item value="RobotArmUu">RobotArmUu</item>
<item value="RobotArmMu">RobotArmMu</item>
</param>
<param name="servo2a" type="enum" _gui-text="servo2a" gui-description="type of servo to use">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="servo2b" type="enum" _gui-text="servo2b" gui-description="type of servo to use on second side (if different is supported)">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="length2" type="float" precision="2" max="9999" _gui-text="length2" gui-description="length of segment axle to axle">50.0</param>
<param name="type3" type="enum" _gui-text="type3" gui-description="type of arm segment">
<item value="none" selected="selected">none</item>
<item value="RobotArmMM">RobotArmMM</item>
<item value="RobotArmMm">RobotArmMm</item>
<item value="RobotArmUU">RobotArmUU</item>
<item value="RobotArmUu">RobotArmUu</item>
<item value="RobotArmMu">RobotArmMu</item>
</param>
<param name="servo3a" type="enum" _gui-text="servo3a" gui-description="type of servo to use">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="servo3b" type="enum" _gui-text="servo3b" gui-description="type of servo to use on second side (if different is supported)">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="length3" type="float" precision="2" max="9999" _gui-text="length3" gui-description="length of segment axle to axle">50.0</param>
<param name="type4" type="enum" _gui-text="type4" gui-description="type of arm segment">
<item value="none" selected="selected">none</item>
<item value="RobotArmMM">RobotArmMM</item>
<item value="RobotArmMm">RobotArmMm</item>
<item value="RobotArmUU">RobotArmUU</item>
<item value="RobotArmUu">RobotArmUu</item>
<item value="RobotArmMu">RobotArmMu</item>
</param>
<param name="servo4a" type="enum" _gui-text="servo4a" gui-description="type of servo to use">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="servo4b" type="enum" _gui-text="servo4b" gui-description="type of servo to use on second side (if different is supported)">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="length4" type="float" precision="2" max="9999" _gui-text="length4" gui-description="length of segment axle to axle">50.0</param>
<param name="type5" type="enum" _gui-text="type5" gui-description="type of arm segment">
<item value="none" selected="selected">none</item>
<item value="RobotArmMM">RobotArmMM</item>
<item value="RobotArmMm">RobotArmMm</item>
<item value="RobotArmUU">RobotArmUU</item>
<item value="RobotArmUu">RobotArmUu</item>
<item value="RobotArmMu">RobotArmMu</item>
</param>
<param name="servo5a" type="enum" _gui-text="servo5a" gui-description="type of servo to use">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="servo5b" type="enum" _gui-text="servo5b" gui-description="type of servo to use on second side (if different is supported)">
<item value="Servo9g" selected="selected">Servo9g</item>
</param>
<param name="length5" type="float" precision="2" max="9999" _gui-text="length5" gui-description="length of segment axle to axle">50.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

53
boxes.py.Rotary.inx Normal file
View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Rotary</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Rotary</id>
<param name="generator" type="string" gui-hidden="true">rotary</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Rotary">
<param name="diameter" type="float" precision="2" max="9999" _gui-text="diameter" gui-description="outer diameter of the wheels (including O rings)">72.0</param>
<param name="rubberthickness" type="float" precision="2" max="9999" _gui-text="rubberthickness" gui-description="diameter of the strings of the O rings">5.0</param>
<param name="axle" type="float" precision="2" max="9999" _gui-text="axle" gui-description="diameter of the axles">6.0</param>
<param name="knifethickness" type="float" precision="2" max="9999" _gui-text="knifethickness" gui-description="thickness of the knifes in mm. Use 0 for use with honey comb table.">8.0</param>
<param name="beamwidth" type="float" precision="2" max="9999" _gui-text="beamwidth" gui-description="width of the (aluminium) profile connecting the parts">32.0</param>
<param name="beamheight" type="float" precision="2" max="9999" _gui-text="beamheight" gui-description="height of the (aluminium) profile connecting the parts">7.1</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Unstable"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

63
boxes.py.RoundedBox.inx Normal file
View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>RoundedBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.RoundedBox</id>
<param name="generator" type="string" gui-hidden="true">roundedbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="RoundedBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="Radius of the corners in mm">15</param>
<param name="wallpieces" type="enum" _gui-text="wallpieces" gui-description="# pieces of outer wall">
<item value="1" selected="selected">1</item>
<item value="2">2</item>
<item value="3">3</item>
<item value="4">4</item>
</param>
<param name="top" type="enum" _gui-text="top" gui-description="style of the top and lid">
<item value="closed">closed</item>
<item value="hole">hole</item>
<item value="lid">lid</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

48
boxes.py.RoyalGame.inx Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>RoyalGame</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.RoyalGame</id>
<param name="generator" type="string" gui-hidden="true">royalgame</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="RoyalGame">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">200</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

68
boxes.py.SBCMicroRack.inx Normal file
View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SBCMicroRack</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SBCMicroRack</id>
<param name="generator" type="string" gui-hidden="true">sbcmicrorack</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SBCMicroRack">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">56</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">85</param>
<param name="sbcs" type="int" max="9999" _gui-text="sbcs" gui-description="how many slots for sbcs">5</param>
<param name="clearance_x" type="int" max="9999" _gui-text="clearance_x" gui-description="clearance for the board in the box (x) in mm">3</param>
<param name="clearance_y" type="int" max="9999" _gui-text="clearance_y" gui-description="clearance for the board in the box (y) in mm">3</param>
<param name="clearance_z" type="int" max="9999" _gui-text="clearance_z" gui-description="SBC Clearance in mm">28</param>
<param name="hole_dist_edge" type="float" precision="2" max="9999" _gui-text="hole_dist_edge" gui-description="hole distance from edge in mm">3.5</param>
<param name="hole_grid_dimension_x" type="int" max="9999" _gui-text="hole_grid_dimension_x" gui-description="width of x hole area">58</param>
<param name="hole_grid_dimension_y" type="int" max="9999" _gui-text="hole_grid_dimension_y" gui-description="width of y hole area">49</param>
<param name="hole_diameter" type="float" precision="2" max="9999" _gui-text="hole_diameter" gui-description="hole diameters">2.75</param>
<param name="netusb_z" type="int" max="9999" _gui-text="netusb_z" gui-description="height of the net/usb hole mm">18</param>
<param name="netusb_x" type="int" max="9999" _gui-text="netusb_x" gui-description="width of the net/usb hole in mm">53</param>
<param name="stable" type="boolean" max="9999" _gui-text="stable" gui-description='draw some holes to put a 1/4" dowel through at the base and top'>False</param>
<param name="switch" type="boolean" max="9999" _gui-text="switch" gui-description="adds an additional vertical segment to hold the switch in place, works best w/ --stable">False</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

62
boxes.py.ShutterBox.inx Normal file
View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>ShutterBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.ShutterBox</id>
<param name="generator" type="string" gui-hidden="true">shutterbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="ShutterBox">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">150</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of the corners">40.0</param>
<param name="style" type="enum" _gui-text="style" gui-description="Number of rounded top corners">
<item value="single" selected="selected">single</item>
<item value="double">double</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0.5</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">2.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.75</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

39
boxes.py.Silverware.inx Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Silverware</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Silverware</id>
<param name="generator" type="string" gui-hidden="true">silverware</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Silverware">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">250</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">154</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">120</param>
<param name="cornerradius" type="int" max="9999" _gui-text="cornerradius" gui-description="Radius of the corners">30</param>
<param name="handleheight" type="int" max="9999" _gui-text="handleheight" gui-description="Height of the handle">150</param>
<param name="handlewidth" type="int" max="9999" _gui-text="handlewidth" gui-description="Width of the handle">120</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Unstable"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallCaliper</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallCaliper</id>
<param name="generator" type="string" gui-hidden="true">slatwallcaliper</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallCaliper">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100</param>
<param name="width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the long end">18.0</param>
<param name="heigth" type="float" precision="2" max="9999" _gui-text="heigth" gui-description="heigth of the body">6.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallChiselHolder</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallChiselHolder</id>
<param name="generator" type="string" gui-hidden="true">slatwallchiselholder</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallChiselHolder">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">120</param>
<param name="tooldiameter" type="float" precision="2" max="9999" _gui-text="tooldiameter" gui-description="diameter of the tool including space to grab">30.0</param>
<param name="holediameter" type="float" precision="2" max="9999" _gui-text="holediameter" gui-description="diameter of the hole for the tool (handle should not fit through)">30.0</param>
<param name="slot_width" type="float" precision="2" max="9999" _gui-text="slot_width" gui-description="width of slots">5.0</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius at the slots">5.0</param>
<param name="number" type="int" max="9999" _gui-text="number" gui-description="number of tools/slots">6</param>
<param name="hooks" type="enum" _gui-text="hooks" gui-description="amount of hooks / braces">
<item value="all" selected="selected">all</item>
<item value="odds">odds</item>
<item value="everythird">everythird</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallConsole</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallConsole</id>
<param name="generator" type="string" gui-hidden="true">slatwallconsole</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallConsole">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">100</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="top_depth" type="float" precision="2" max="9999" _gui-text="top_depth" gui-description="depth at the top">50</param>
<param name="bottom_depth" type="float" precision="2" max="9999" _gui-text="bottom_depth" gui-description="depth at the bottom">35</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallDrillBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallDrillBox</id>
<param name="generator" type="string" gui-hidden="true">slatwalldrillbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallDrillBox">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">25*6</param>
<param name="sy" type="string" max="9999" _gui-text="sy" gui-description='sections back to front in mm. Possible formats: overallwidth/numberof sections e.g. "250/5"; sectionwidth*numberofsections e.g. "50*5"; section widths separated by ":" e.g. "30:25.5:70'>10:20:30</param>
<param name="sh" type="string" max="9999" _gui-text="sh" gui-description="sections bottom to top in mm. See --sy for format">25:40:60</param>
<param name="extra_height" type="float" precision="2" max="9999" _gui-text="extra_height" gui-description="height difference left to right">15.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallEdges</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallEdges</id>
<param name="generator" type="string" gui-hidden="true">slatwalledges</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallEdges">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">120</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallPlaneHolder</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallPlaneHolder</id>
<param name="generator" type="string" gui-hidden="true">slatwallplaneholder</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallPlaneHolder">
<param name="width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the plane">80</param>
<param name="length" type="float" precision="2" max="9999" _gui-text="length" gui-description="legth of the plane">250</param>
<param name="hold_length" type="float" precision="2" max="9999" _gui-text="hold_length" gui-description="legth of the part hiolding the plane over the front">30</param>
<param name="height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the front of plane">80</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallPliersHolder</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallPliersHolder</id>
<param name="generator" type="string" gui-hidden="true">slatwallpliersholder</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallPliersHolder">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">100*3</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">50</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">50</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="bracing angle - less for more bracing">45</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallSlottedHolder</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallSlottedHolder</id>
<param name="generator" type="string" gui-hidden="true">slatwallslottedholder</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallSlottedHolder">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">120</param>
<param name="slot_depth" type="float" precision="2" max="9999" _gui-text="slot_depth" gui-description="depth of slots from the front">50.0</param>
<param name="additional_depth" type="float" precision="2" max="9999" _gui-text="additional_depth" gui-description="depth behind the lots">50.0</param>
<param name="slot_width" type="float" precision="2" max="9999" _gui-text="slot_width" gui-description="width of slots">5.0</param>
<param name="tool_width" type="float" precision="2" max="9999" _gui-text="tool_width" gui-description="overall width for the tools">35.0</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of the slots at the front">5.0</param>
<param name="number" type="int" max="9999" _gui-text="number" gui-description="number of tools/slots">6</param>
<param name="hooks" type="enum" _gui-text="hooks" gui-description="amount of hooks / braces">
<item value="all" selected="selected">all</item>
<item value="odds">odds</item>
<item value="everythird">everythird</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">1.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallTypeTray</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallTypeTray</id>
<param name="generator" type="string" gui-hidden="true">slatwalltypetray</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallTypeTray">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">50*3</param>
<param name="sy" type="string" max="9999" _gui-text="sy" gui-description='sections back to front in mm. Possible formats: overallwidth/numberof sections e.g. "250/5"; sectionwidth*numberofsections e.g. "50*5"; section widths separated by ":" e.g. "30:25.5:70'>50*3</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="hi" type="float" precision="2" max="9999" _gui-text="hi" gui-description="inner height of inner walls in mm (unless outside selected)(leave to zero for same as outer walls)">0.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="e">e Straight Edge</item>
</param>
<param name="back_height" type="float" precision="2" max="9999" _gui-text="back_height" gui-description="additional height of the back wall">0.0</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius for strengthening walls with the hooks">0.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
<page name="4" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>SlatwallWrenchHolder</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.SlatwallWrenchHolder</id>
<param name="generator" type="string" gui-hidden="true">slatwallwrenchholder</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="SlatwallWrenchHolder">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100</param>
<param name="depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="depth of the sides (in mm)">30.0</param>
<param name="number" type="int" max="9999" _gui-text="number" gui-description="number of wrenches (in mm)">11</param>
<param name="min_width" type="float" precision="2" max="9999" _gui-text="min_width" gui-description="width of smallest wrench (in mm)">8.0</param>
<param name="max_width" type="float" precision="2" max="9999" _gui-text="max_width" gui-description="width of largest wrench (in mm)">25.0</param>
<param name="min_strength" type="float" precision="2" max="9999" _gui-text="min_strength" gui-description="strength of smallest wrench (in mm)">3.0</param>
<param name="max_strength" type="float" precision="2" max="9999" _gui-text="max_strength" gui-description="strength of largest wrench (in mm)">5.0</param>
<param name="extra_distance" type="float" precision="2" max="9999" _gui-text="extra_distance" gui-description="additional distance between wrenches (in mm)">0.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="SlatWallEdges">
<param name="SlatWall_bottom_hook" type="enum" _gui-text="bottom_hook" gui-description='"spring", "stud" or "none"'>
<item value="hook" selected="selected">hook</item>
<item value="spring">spring</item>
<item value="stud">stud</item>
<item value="none">none</item>
</param>
<param name="SlatWall_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="SlatWall_hook_extra_height" type="float" precision="2" max="9999" _gui-text="hook_extra_height" gui-description="space surrounding connectors (in multiples of thickness)">2.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="SlatWall"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

36
boxes.py.Stachel.inx Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Stachel</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.Stachel</id>
<param name="generator" type="string" gui-hidden="true">stachel</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="Stachel">
<param name="flutediameter" type="float" precision="2" max="9999" _gui-text="flutediameter" gui-description="diameter of the flutes bottom in mm">115.0</param>
<param name="polediameter" type="float" precision="2" max="9999" _gui-text="polediameter" gui-description="diameter if the pin in mm">25.0</param>
<param name="wall" type="float" precision="2" max="9999" _gui-text="wall" gui-description="width of the surrounding wall in mm">7.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

70
boxes.py.StorageRack.inx Normal file
View File

@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>StorageRack</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.StorageRack</id>
<param name="generator" type="string" gui-hidden="true">storagerack</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="StorageRack">
<param name="depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="depth of the rack">200</param>
<param name="rail" type="float" precision="2" max="9999" _gui-text="rail" gui-description="depth of the rack">30</param>
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="sh" type="string" max="9999" _gui-text="sh" gui-description="sections bottom to top in mm. See --sy for format">50*3</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="e">e Straight Edge</item>
</param>
<param name="top_edge" type="enum" gui-text="top_edge" gui-description="edge type for top edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="e">e Straight Edge</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

140
boxes.py.StorageShelf.inx Normal file
View File

@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>StorageShelf</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.StorageShelf</id>
<param name="generator" type="string" gui-hidden="true">storageshelf</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="StorageShelf">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="sy" type="string" max="9999" _gui-text="sy" gui-description='sections back to front in mm. Possible formats: overallwidth/numberof sections e.g. "250/5"; sectionwidth*numberofsections e.g. "50*5"; section widths separated by ":" e.g. "30:25.5:70'>50*3</param>
<param name="sh" type="string" max="9999" _gui-text="sh" gui-description="sections bottom to top in mm. See --sy for format">50*3</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="e">e Straight Edge</item>
</param>
<param name="top_edge" type="enum" gui-text="top_edge" gui-description="edge type for top edge">
<item value="e">e Straight Edge</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="c">c Abstract Edge Class</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="S">S Stackable (top)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="f">f Finger Joint</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="t">t Triangle for handle</item>
</param>
<param name="retainer" type="float" precision="2" max="9999" _gui-text="retainer" gui-description="height of wall atthe front edges">0.0</param>
<param name="retainer_hole_edge" type="boolean" max="9999" _gui-text="retainer_hole_edge" gui-description="use finger hole edge for retainer walls">False</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0.5</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
<page name="4" _gui-text="Hinges and HingePins">
<param name="Hinge_grip_percentage" type="int" max="9999" _gui-text="grip_percentage" gui-description="">0</param>
<param name="Hinge_outset" type="boolean" max="9999" _gui-text="outset" gui-description="have lid overlap at the sides (similar to OutSetEdge)">False</param>
<param name="Hinge_pinwidth" type="float" precision="2" max="9999" _gui-text="pinwidth" gui-description="set to lower value to get disks surrounding the pins">0.5</param>
<param name="Hinge_style" type="enum" _gui-text="style" gui-description='"outset" or "flush"'>
<item value="outset" selected="selected">outset</item>
<item value="flush">flush</item>
</param>
<param name="Hinge_axle" type="int" max="9999" _gui-text="axle" gui-description="diameter of the pin hole">2</param>
<param name="Hinge_grip_length" type="int" max="9999" _gui-text="grip_length" gui-description="fixed length of the grips on he lids">0</param>
<param name="Hinge_hingestrength" type="int" max="9999" _gui-text="hingestrength" gui-description="thickness of the arc holding the pin in place">1</param>
</page>
<page name="5" _gui-text="Cabinet Hinges">
<param name="CabinetHinge_bore" type="float" precision="2" max="9999" _gui-text="bore" gui-description="diameter of the pin hole in mm">3.2</param>
<param name="CabinetHinge_eyes_per_hinge" type="int" max="9999" _gui-text="eyes_per_hinge" gui-description="pieces per hinge">5</param>
<param name="CabinetHinge_hinges" type="int" max="9999" _gui-text="hinges" gui-description="number of hinges per edge">2</param>
<param name="CabinetHinge_style" type="enum" _gui-text="style" gui-description="style of hinge used">
<item value="inside" selected="selected">inside</item>
<item value="outside">outside</item>
</param>
<param name="CabinetHinge_eye" type="float" precision="2" max="9999" _gui-text="eye" gui-description="radius of the eye (in multiples of thickness)">1.5</param>
<param name="CabinetHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="space between eyes (in multiples of thickness)">0.05</param>
<param name="CabinetHinge_spacing" type="float" precision="2" max="9999" _gui-text="spacing" gui-description="minimum space around the hinge">2.0</param>
</page>
<page name="6" _gui-text="Slide-on Lids">
<param name="Lid_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="Lid_second_pin" type="boolean" max="9999" _gui-text="second_pin" gui-description="">True</param>
<param name="Lid_spring" type="enum" _gui-text="spring" gui-description="">
<item value="both" selected="selected">both</item>
<item value="none">none</item>
<item value="left">left</item>
<item value="right">right</item>
</param>
<param name="Lid_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="Lid_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="Lid_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="Lid_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">3.0</param>
<param name="Lid_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.05</param>
<param name="Lid_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="Lid_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="7" _gui-text="Click-on Lids">
<param name="Click_angle" type="int" max="9999" _gui-text="angle" gui-description="">5</param>
<param name="Click_bottom_radius" type="float" precision="2" max="9999" _gui-text="bottom_radius" gui-description="">0.1</param>
<param name="Click_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="">3.0</param>
</page>
<page name="8" _gui-text="RoundedTriangleEdge">
<param name="RoundedTriangleEdge_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height above the wall">150.0</param>
<param name="RoundedTriangleEdge_r_hole" type="float" precision="2" max="9999" _gui-text="r_hole" gui-description="radius of hole">2.0</param>
<param name="RoundedTriangleEdge_radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of top corner">30.0</param>
<param name="RoundedTriangleEdge_outset" type="int" max="9999" _gui-text="outset" gui-description="extend the triangle along the length of the edge">1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.TrafficLight.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>TrafficLight</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.TrafficLight</id>
<param name="generator" type="string" gui-hidden="true">trafficlight</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="TrafficLight">
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="inner depth not including the shades">100</param>
<param name="shades" type="float" precision="2" max="9999" _gui-text="shades" gui-description="depth of the shaders">50</param>
<param name="n" type="int" max="9999" _gui-text="n" gui-description="number of lights">3</param>
<param name="upright" type="boolean" max="9999" _gui-text="upright" gui-description="stack lights upright (or side by side)">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Misc"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

37
boxes.py.TrayInsert.inx Normal file
View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>TrayInsert</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.TrayInsert</id>
<param name="generator" type="string" gui-hidden="true">trayinsert</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="TrayInsert">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">50*3</param>
<param name="sy" type="string" max="9999" _gui-text="sy" gui-description='sections back to front in mm. Possible formats: overallwidth/numberof sections e.g. "250/5"; sectionwidth*numberofsections e.g. "50*5"; section widths separated by ":" e.g. "30:25.5:70'>50*3</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Trays and Drawer Inserts"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

52
boxes.py.TwoPiece.inx Normal file
View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>TwoPiece</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.TwoPiece</id>
<param name="generator" type="string" gui-hidden="true">twopiece</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="TwoPiece">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="play" type="float" precision="2" max="9999" _gui-text="play" gui-description="play between the two parts as multipleof the wall thickness">0.05</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

141
boxes.py.TypeTray.inx Normal file
View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>TypeTray</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.TypeTray</id>
<param name="generator" type="string" gui-hidden="true">typetray</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="TypeTray">
<param name="sx" type="string" max="9999" _gui-text="sx" gui-description="sections left to right in mm. See --sy for format">50*3</param>
<param name="sy" type="string" max="9999" _gui-text="sy" gui-description='sections back to front in mm. Possible formats: overallwidth/numberof sections e.g. "250/5"; sectionwidth*numberofsections e.g. "50*5"; section widths separated by ":" e.g. "30:25.5:70'>50*3</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="hi" type="float" precision="2" max="9999" _gui-text="hi" gui-description="inner height of inner walls in mm (unless outside selected)(leave to zero for same as outer walls)">0.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="e">e Straight Edge</item>
</param>
<param name="top_edge" type="enum" gui-text="top_edge" gui-description="edge type for top edge">
<item value="e">e Straight Edge</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="c">c Abstract Edge Class</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="S">S Stackable (top)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="f">f Finger Joint</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="t">t Triangle for handle</item>
</param>
<param name="gripheight" type="float" precision="2" max="9999" _gui-text="gripheight" gui-description="height of the grip hole in mm">30</param>
<param name="gripwidth" type="float" precision="2" max="9999" _gui-text="gripwidth" gui-description="width of th grip hole in mm (zero for no hole)">70</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">0.5</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
<page name="4" _gui-text="Hinges and HingePins">
<param name="Hinge_grip_percentage" type="int" max="9999" _gui-text="grip_percentage" gui-description="">0</param>
<param name="Hinge_outset" type="boolean" max="9999" _gui-text="outset" gui-description="have lid overlap at the sides (similar to OutSetEdge)">False</param>
<param name="Hinge_pinwidth" type="float" precision="2" max="9999" _gui-text="pinwidth" gui-description="set to lower value to get disks surrounding the pins">0.5</param>
<param name="Hinge_style" type="enum" _gui-text="style" gui-description='"outset" or "flush"'>
<item value="outset" selected="selected">outset</item>
<item value="flush">flush</item>
</param>
<param name="Hinge_axle" type="int" max="9999" _gui-text="axle" gui-description="diameter of the pin hole">2</param>
<param name="Hinge_grip_length" type="int" max="9999" _gui-text="grip_length" gui-description="fixed length of the grips on he lids">0</param>
<param name="Hinge_hingestrength" type="int" max="9999" _gui-text="hingestrength" gui-description="thickness of the arc holding the pin in place">1</param>
</page>
<page name="5" _gui-text="Cabinet Hinges">
<param name="CabinetHinge_bore" type="float" precision="2" max="9999" _gui-text="bore" gui-description="diameter of the pin hole in mm">3.2</param>
<param name="CabinetHinge_eyes_per_hinge" type="int" max="9999" _gui-text="eyes_per_hinge" gui-description="pieces per hinge">5</param>
<param name="CabinetHinge_hinges" type="int" max="9999" _gui-text="hinges" gui-description="number of hinges per edge">2</param>
<param name="CabinetHinge_style" type="enum" _gui-text="style" gui-description="style of hinge used">
<item value="inside" selected="selected">inside</item>
<item value="outside">outside</item>
</param>
<param name="CabinetHinge_eye" type="float" precision="2" max="9999" _gui-text="eye" gui-description="radius of the eye (in multiples of thickness)">1.5</param>
<param name="CabinetHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="space between eyes (in multiples of thickness)">0.05</param>
<param name="CabinetHinge_spacing" type="float" precision="2" max="9999" _gui-text="spacing" gui-description="minimum space around the hinge">2.0</param>
</page>
<page name="6" _gui-text="Slide-on Lids">
<param name="Lid_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="Lid_second_pin" type="boolean" max="9999" _gui-text="second_pin" gui-description="">True</param>
<param name="Lid_spring" type="enum" _gui-text="spring" gui-description="">
<item value="both" selected="selected">both</item>
<item value="none">none</item>
<item value="left">left</item>
<item value="right">right</item>
</param>
<param name="Lid_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="Lid_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="Lid_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="Lid_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">3.0</param>
<param name="Lid_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.05</param>
<param name="Lid_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="Lid_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="7" _gui-text="Click-on Lids">
<param name="Click_angle" type="int" max="9999" _gui-text="angle" gui-description="">5</param>
<param name="Click_bottom_radius" type="float" precision="2" max="9999" _gui-text="bottom_radius" gui-description="">0.1</param>
<param name="Click_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="">3.0</param>
</page>
<page name="8" _gui-text="RoundedTriangleEdge">
<param name="RoundedTriangleEdge_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height above the wall">150.0</param>
<param name="RoundedTriangleEdge_r_hole" type="float" precision="2" max="9999" _gui-text="r_hole" gui-description="radius of hole">2.0</param>
<param name="RoundedTriangleEdge_radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of top corner">30.0</param>
<param name="RoundedTriangleEdge_outset" type="int" max="9999" _gui-text="outset" gui-description="extend the triangle along the length of the edge">1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Trays and Drawer Inserts"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

144
boxes.py.UBox.inx Normal file
View File

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>UBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.UBox</id>
<param name="generator" type="string" gui-hidden="true">ubox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="UBox">
<param name="top_edge" type="enum" gui-text="top_edge" gui-description="edge type for top edge">
<item value="e">e Straight Edge</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="c">c Abstract Edge Class</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="S">S Stackable (top)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="f">f Finger Joint</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="t">t Triangle for handle</item>
</param>
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of bottom corners">30.0</param>
<param name="lid" type="enum" _gui-text="lid" gui-description="additional lid">
<item value="default (none)" selected="selected">default (none)</item>
<item value="chest">chest</item>
<item value="flat">flat</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
<page name="4" _gui-text="Hinges and HingePins">
<param name="Hinge_grip_percentage" type="int" max="9999" _gui-text="grip_percentage" gui-description="">0</param>
<param name="Hinge_outset" type="boolean" max="9999" _gui-text="outset" gui-description="have lid overlap at the sides (similar to OutSetEdge)">False</param>
<param name="Hinge_pinwidth" type="float" precision="2" max="9999" _gui-text="pinwidth" gui-description="set to lower value to get disks surrounding the pins">0.5</param>
<param name="Hinge_style" type="enum" _gui-text="style" gui-description='"outset" or "flush"'>
<item value="outset" selected="selected">outset</item>
<item value="flush">flush</item>
</param>
<param name="Hinge_axle" type="int" max="9999" _gui-text="axle" gui-description="diameter of the pin hole">2</param>
<param name="Hinge_grip_length" type="int" max="9999" _gui-text="grip_length" gui-description="fixed length of the grips on he lids">0</param>
<param name="Hinge_hingestrength" type="int" max="9999" _gui-text="hingestrength" gui-description="thickness of the arc holding the pin in place">1</param>
</page>
<page name="5" _gui-text="Cabinet Hinges">
<param name="CabinetHinge_bore" type="float" precision="2" max="9999" _gui-text="bore" gui-description="diameter of the pin hole in mm">3.2</param>
<param name="CabinetHinge_eyes_per_hinge" type="int" max="9999" _gui-text="eyes_per_hinge" gui-description="pieces per hinge">5</param>
<param name="CabinetHinge_hinges" type="int" max="9999" _gui-text="hinges" gui-description="number of hinges per edge">2</param>
<param name="CabinetHinge_style" type="enum" _gui-text="style" gui-description="style of hinge used">
<item value="inside" selected="selected">inside</item>
<item value="outside">outside</item>
</param>
<param name="CabinetHinge_eye" type="float" precision="2" max="9999" _gui-text="eye" gui-description="radius of the eye (in multiples of thickness)">1.5</param>
<param name="CabinetHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="space between eyes (in multiples of thickness)">0.05</param>
<param name="CabinetHinge_spacing" type="float" precision="2" max="9999" _gui-text="spacing" gui-description="minimum space around the hinge">2.0</param>
</page>
<page name="6" _gui-text="Slide-on Lids">
<param name="Lid_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="Lid_second_pin" type="boolean" max="9999" _gui-text="second_pin" gui-description="">True</param>
<param name="Lid_spring" type="enum" _gui-text="spring" gui-description="">
<item value="both" selected="selected">both</item>
<item value="none">none</item>
<item value="left">left</item>
<item value="right">right</item>
</param>
<param name="Lid_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="Lid_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="Lid_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="Lid_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">3.0</param>
<param name="Lid_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.05</param>
<param name="Lid_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="Lid_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="7" _gui-text="Click-on Lids">
<param name="Click_angle" type="int" max="9999" _gui-text="angle" gui-description="">5</param>
<param name="Click_bottom_radius" type="float" precision="2" max="9999" _gui-text="bottom_radius" gui-description="">0.1</param>
<param name="Click_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="">3.0</param>
</page>
<page name="8" _gui-text="RoundedTriangleEdge">
<param name="RoundedTriangleEdge_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height above the wall">150.0</param>
<param name="RoundedTriangleEdge_r_hole" type="float" precision="2" max="9999" _gui-text="r_hole" gui-description="radius of hole">2.0</param>
<param name="RoundedTriangleEdge_radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of top corner">30.0</param>
<param name="RoundedTriangleEdge_outset" type="float" precision="2" max="9999" _gui-text="outset" gui-description="extend the triangle along the length of the edge">0.0</param>
</page>
<page name="9" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes with flex"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>UnevenHeightBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.UnevenHeightBox</id>
<param name="generator" type="string" gui-hidden="true">unevenheightbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="UnevenHeightBox">
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="e">e Straight Edge</item>
</param>
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="outside" type="boolean" max="9999" _gui-text="outside" gui-description="treat sizes as outside measurements that include the walls">True</param>
<param name="height0" type="float" precision="2" max="9999" _gui-text="height0" gui-description="height of the front left corner in mm">50</param>
<param name="height1" type="float" precision="2" max="9999" _gui-text="height1" gui-description="height of the front right corner in mm">50</param>
<param name="height2" type="float" precision="2" max="9999" _gui-text="height2" gui-description="height of the right back corner in mm">100</param>
<param name="height3" type="float" precision="2" max="9999" _gui-text="height3" gui-description="height of the left back corner in mm">100</param>
<param name="lid" type="boolean" max="9999" _gui-text="lid" gui-description="add a lid (works best with high corners opposing each other)">False</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

149
boxes.py.UniversalBox.inx Normal file
View File

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>UniversalBox</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.UniversalBox</id>
<param name="generator" type="string" gui-hidden="true">universalbox</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="UniversalBox">
<param name="top_edge" type="enum" gui-text="top_edge" gui-description="edge type for top edge">
<item value="e">e Straight Edge</item>
<item value="f">f Finger Joint</item>
<item value="F">F Finger Joint (opposing side)</item>
<item value="c">c Abstract Edge Class</item>
<item value="E">E Straight Edge (outset by thickness)</item>
<item value="S">S Stackable (top)</item>
<item value="i">i Straight edge with hinge eye</item>
<item value="k">k Straight edge with hinge eye (both ends)</item>
<item value="v">v Edge with cabinet hinges for 90° lid</item>
<item value="f">f Finger Joint</item>
<item value="L">L Edge for slide on lid (box back)</item>
<item value="t">t Triangle for handle</item>
</param>
<param name="bottom_edge" type="enum" gui-text="bottom_edge" gui-description="edge type for bottom edge">
<item value="F">F Finger Joint (opposing side)</item>
<item value="h">h Edge (parallel Finger Joint Holes)</item>
<item value="s">s Stackable (bottom, finger joint holes)</item>
<item value="e">e Straight Edge</item>
</param>
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">100.0</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">100.0</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">100.0</param>
<param name="lid" type="enum" _gui-text="lid" gui-description="additional lid (for straight top_edge only)">
<item value="default (none)" selected="selected">default (none)</item>
<item value="chest">chest</item>
<item value="flat">flat</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="3" _gui-text="Stackable Edges">
<param name="Stackable_angle" type="int" max="9999" _gui-text="angle" gui-description="inside angle of the feet">60</param>
<param name="Stackable_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height of the feet">2.0</param>
<param name="Stackable_holedistance" type="float" precision="2" max="9999" _gui-text="holedistance" gui-description="distance from finger holes to bottom edge">1.0</param>
<param name="Stackable_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of the feet">4.0</param>
</page>
<page name="4" _gui-text="Hinges and HingePins">
<param name="Hinge_grip_percentage" type="int" max="9999" _gui-text="grip_percentage" gui-description="">0</param>
<param name="Hinge_outset" type="boolean" max="9999" _gui-text="outset" gui-description="have lid overlap at the sides (similar to OutSetEdge)">False</param>
<param name="Hinge_pinwidth" type="float" precision="2" max="9999" _gui-text="pinwidth" gui-description="set to lower value to get disks surrounding the pins">0.5</param>
<param name="Hinge_style" type="enum" _gui-text="style" gui-description='"outset" or "flush"'>
<item value="outset" selected="selected">outset</item>
<item value="flush">flush</item>
</param>
<param name="Hinge_axle" type="int" max="9999" _gui-text="axle" gui-description="diameter of the pin hole">2</param>
<param name="Hinge_grip_length" type="int" max="9999" _gui-text="grip_length" gui-description="fixed length of the grips on he lids">0</param>
<param name="Hinge_hingestrength" type="int" max="9999" _gui-text="hingestrength" gui-description="thickness of the arc holding the pin in place">1</param>
</page>
<page name="5" _gui-text="Cabinet Hinges">
<param name="CabinetHinge_bore" type="float" precision="2" max="9999" _gui-text="bore" gui-description="diameter of the pin hole in mm">3.2</param>
<param name="CabinetHinge_eyes_per_hinge" type="int" max="9999" _gui-text="eyes_per_hinge" gui-description="pieces per hinge">5</param>
<param name="CabinetHinge_hinges" type="int" max="9999" _gui-text="hinges" gui-description="number of hinges per edge">2</param>
<param name="CabinetHinge_style" type="enum" _gui-text="style" gui-description="style of hinge used">
<item value="inside" selected="selected">inside</item>
<item value="outside">outside</item>
</param>
<param name="CabinetHinge_eye" type="float" precision="2" max="9999" _gui-text="eye" gui-description="radius of the eye (in multiples of thickness)">1.5</param>
<param name="CabinetHinge_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="space between eyes (in multiples of thickness)">0.05</param>
<param name="CabinetHinge_spacing" type="float" precision="2" max="9999" _gui-text="spacing" gui-description="minimum space around the hinge">2.0</param>
</page>
<page name="6" _gui-text="Slide-on Lids">
<param name="Lid_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="Lid_second_pin" type="boolean" max="9999" _gui-text="second_pin" gui-description="">True</param>
<param name="Lid_spring" type="enum" _gui-text="spring" gui-description="">
<item value="both" selected="selected">both</item>
<item value="none">none</item>
<item value="left">left</item>
<item value="right">right</item>
</param>
<param name="Lid_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="Lid_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="Lid_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="Lid_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">3.0</param>
<param name="Lid_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.05</param>
<param name="Lid_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="Lid_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
<page name="7" _gui-text="Click-on Lids">
<param name="Click_angle" type="int" max="9999" _gui-text="angle" gui-description="">5</param>
<param name="Click_bottom_radius" type="float" precision="2" max="9999" _gui-text="bottom_radius" gui-description="">0.1</param>
<param name="Click_depth" type="float" precision="2" max="9999" _gui-text="depth" gui-description="">3.0</param>
</page>
<page name="8" _gui-text="RoundedTriangleEdge">
<param name="RoundedTriangleEdge_height" type="float" precision="2" max="9999" _gui-text="height" gui-description="height above the wall">150.0</param>
<param name="RoundedTriangleEdge_r_hole" type="float" precision="2" max="9999" _gui-text="r_hole" gui-description="radius of hole">2.0</param>
<param name="RoundedTriangleEdge_radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="radius of top corner">30.0</param>
<param name="RoundedTriangleEdge_outset" type="int" max="9999" _gui-text="outset" gui-description="extend the triangle along the length of the edge">1</param>
</page>
<page name="9" _gui-text="Flex">
<param name="Flex_stretch" type="float" precision="2" max="9999" _gui-text="stretch" gui-description="Hint of how much the flex part should be shortend">1.05</param>
<param name="Flex_connection" type="float" precision="2" max="9999" _gui-text="connection" gui-description="width of the gaps in the cuts">1.0</param>
<param name="Flex_distance" type="float" precision="2" max="9999" _gui-text="distance" gui-description="width of the pattern perpendicular to the cuts">0.5</param>
<param name="Flex_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="">5.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Boxes"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

39
boxes.py.WaivyKnob.inx Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>WaivyKnob</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.WaivyKnob</id>
<param name="generator" type="string" gui-hidden="true">waivyknob</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="WaivyKnob">
<param name="diameter" type="float" precision="2" max="9999" _gui-text="diameter" gui-description="Diameter of the knob (mm)">50.0</param>
<param name="serrations" type="int" max="9999" _gui-text="serrations" gui-description="Number of serrations">20</param>
<param name="serrationangle" type="float" precision="2" max="9999" _gui-text="serrationangle" gui-description="higher values for deeper serrations (degrees)">45.0</param>
<param name="bolthole" type="float" precision="2" max="9999" _gui-text="bolthole" gui-description="Diameter of the bolt hole (mm)">6.0</param>
<param name="dhole" type="float" precision="2" max="9999" _gui-text="dhole" gui-description="D-Flat in fraction of the diameter">1.0</param>
<param name="hexhead" type="float" precision="2" max="9999" _gui-text="hexhead" gui-description="Width of the hex bolt head (mm)">10.0</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Parts and Samples"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

56
boxes.py.WineRack.inx Normal file
View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>WineRack</_name>
<dependency type="executable" location="extensions">boxes.exe</dependency>
<id>info.festi.boxes.py.WineRack</id>
<param name="generator" type="string" gui-hidden="true">winerack</param>
<param name="tab" type="notebook">
<page name="0" _gui-text="WineRack">
<param name="x" type="float" precision="2" max="9999" _gui-text="x" gui-description="inner width in mm (unless outside selected)">400</param>
<param name="y" type="float" precision="2" max="9999" _gui-text="y" gui-description="inner depth in mm (unless outside selected)">300</param>
<param name="h" type="float" precision="2" max="9999" _gui-text="h" gui-description="inner height in mm (unless outside selected)">210</param>
<param name="radius" type="float" precision="2" max="9999" _gui-text="radius" gui-description="Radius of comb">46.0</param>
<param name="walls" type="enum" _gui-text="walls" gui-description="which of the honey comb walls to add">
<item value="minimal">minimal</item>
<item value="no_verticals">no_verticals</item>
<item value="all" selected="selected">all</item>
</param>
</page>
<page name="1" _gui-text="Default">
<param name="thickness" type="float" precision="2" max="9999" _gui-text="thickness" gui-description="thickness of the material">3.0</param>
<param name="tabs" type="float" precision="2" max="9999" _gui-text="tabs" gui-description="width of tabs holding the parts in place in mm (not supported everywhere)">0.0</param>
<param name="debug" type="boolean" max="9999" _gui-text="debug" gui-description="print surrounding boxes for some structures">False</param>
<param name="reference" type="float" precision="2" max="9999" _gui-text="reference" gui-description="print reference rectangle with given length (zero to disable)">100</param>
<param name="burn" type="float" precision="2" max="9999" _gui-text="burn" gui-description='burn correction in mm (bigger values for tighter fit). Use BurnTest in "Parts and Samples" to find the right value.'>0.1</param>
</page>
<page name="2" _gui-text="Finger Joints">
<param name="FingerJoint_angle" type="float" precision="2" max="9999" _gui-text="angle" gui-description="">90.0</param>
<param name="FingerJoint_style" type="enum" _gui-text="style" gui-description="style of the fingers">
<item value="rectangular" selected="selected">rectangular</item>
<item value="springs">springs</item>
</param>
<param name="FingerJoint_surroundingspaces" type="float" precision="2" max="9999" _gui-text="surroundingspaces" gui-description="maximum space at the start and end in multiple of normal spaces">2.0</param>
<param name="FingerJoint_edge_width" type="float" precision="2" max="9999" _gui-text="edge_width" gui-description="space below holes of FingerHoleEdge">1.0</param>
<param name="FingerJoint_finger" type="float" precision="2" max="9999" _gui-text="finger" gui-description="width of the fingers">2.0</param>
<param name="FingerJoint_play" type="float" precision="2" max="9999" _gui-text="play" gui-description="extra space to allow finger move in and out">0.0</param>
<param name="FingerJoint_space" type="float" precision="2" max="9999" _gui-text="space" gui-description="space between fingers">2.0</param>
<param name="FingerJoint_width" type="float" precision="2" max="9999" _gui-text="width" gui-description="width of finger holes">1.0</param>
</page>
</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="Boxes.py">
<submenu _name="Shelves"/>
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions">boxes.exe</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Cards Layout Guides</_name>
<id>fablabchemnitz.de.CardLayoutGuides</id>
<dependency type="executable" location="extensions">fablabchemnitz_CardLayoutGuides.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
<param name="layout" type="enum" gui-text="Layout Type">
<item value="SIMPLE">Simple Grid</item>
<item value="FOLDING">Folding Grid</item>
</param>
<param name="card_width" type="float" precision="1" min="5" max="1000" gui-text="Card width (mm)">60</param>
<param name="card_height" type="float" precision="1" min="5" max="1000" gui-text="Card height (mm)">30</param>
<param name="orientation" type="enum" gui-text="Card Orientation">
<item value="HORIZONTAL">Horizontal</item>
<item value="VERTICAL">Vertical</item>
</param>
<param name="card_margin" type="float" precision="1" min="0" max="200" gui-text="Card margin(mm)">2</param>
<param name="bleed_margin" type="float" precision="1" min="0" max="200" gui-text="Bleed margin(mm)">2</param>
<param name="page_margin" type="float" precision="1" min="0" max="200" gui-text="Page margin(mm)">15</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="FabLab Chemnitz">
<submenu _name="Grids/Guides" />
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions" interpreter="python">fablabchemnitz_CardLayoutGuides.py</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,485 @@
#!/usr/bin/env python2
# Copyright 2016 Luke Phillips (lukerazor@hotmail.com)
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Extension dirs
# linux:~/.config/inkscape/extensions
# windows: [Drive]:\Program Files\Inkscape\share\extensions
import inkex
import simplestyle
import copy
import math
FOLD_GAP = 5
CROP_GAP = 2
CROP_LENGTH = 3
CSNS = ""
inkex.NSS[u'cs'] = u'http://www.razorfoss.org/cardlayoutguides/'
def PrintDebug(string):
inkex.debug( _(str(string)) )
def RoundAndDeduplicatePoints(points):
return sorted(list(set(map(lambda x: round(x, 3), points))))
class Point():
def __init__(self, x, y):
self.x = x
self.y = y
def rotate(self, angle, origin):
"""
Rotate a point counterclockwise by a given angle around a given origin.
The angle should be given in degrees.
"""
rads = math.radians(angle)
newX = origin.x + math.cos(rads) * (self.x - origin.x) - math.sin(rads) * (self.y - origin.y)
newY = origin.y + math.sin(rads) * (self.x - origin.x) + math.cos(rads) * (self.y - origin.y)
return Point(newX, newY)
def add(self, point):
return Point(self.x + point.x, self.y + point.y)
@staticmethod
def parsePoint(pointString):
x, y = map(lambda v: float(v), pointString.split(","))
return Point(x, y)
@staticmethod
def parse(pointString, orientationString=None):
p1 = Point.parsePoint(pointString)
p = Point(p1.x, p1.y)
if orientationString != None:
po = Point.parsePoint(orientationString)
p = p1.add(po.rotate(270, Point(0, 0)))
return p
class LineGeneratorBase(object):
def __init__(self, cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
self.UnitConverterFunc = unitConverterFunc
self.CardWidth = cardWidth
self.CardHeight = cardHeight
self.CardMargin = cardMargin
self.BleedMargin = bleedMargin
self.PageWidth = pageWidth
self.PageHeight = pageHeight
self.PageMargin = pageMargin
self.ContainerWidth = -1
self.ContainerHeight = -1
self.GuideOffsetsWithFold = [
0,
self.BleedMargin, self.CardMargin, self.CardHeight - 2*self.CardMargin, self.CardMargin, self.BleedMargin,
2*FOLD_GAP,
self.BleedMargin, self.CardMargin, self.CardHeight - 2*self.CardMargin, self.CardMargin, self.BleedMargin
]
self.GuideOffsetsNoFold = [
0,
self.BleedMargin, self.CardMargin,
self.CardWidth - 2*self.CardMargin,
self.CardMargin, self.BleedMargin
]
def CalcPageLeftMargin(self):
return (self.PageWidth - self.ContentWidth) / 2.0
def CalcPageBottomMargin(self):
return (self.PageHeight - self.ContentHeight) / 2.0
def DrawGuide(self, xmlParent, xpos, ypos):
posString = "{},{}".format(xpos, ypos)
attribs = {'position': posString, 'orientation': posString}
inkex.etree.SubElement(xmlParent, inkex.addNS('guide',"sodipodi"), attribs)
def ConvertPoint(self, p):
# convert point into svg approriate values, including catering for inkscapes "alternative" axis sytem ie 0, 0 is bottom left not top left
newX = self.UnitConverterFunc("{}mm".format(p.x))
newY = self.PageHeight - self.UnitConverterFunc("{}mm".format(p.y))
return Point(newX, newY)
def DrawLine(self, xmlParent, p1, p2):
cp1 = self.ConvertPoint(p1)
cp2 = self.ConvertPoint(p2)
pathStr = "M {},{} {}, {}".format(cp1.x, cp1.y, cp2.x, cp2.y)
style = {'stroke': '#000000', 'stroke-width': self.UnitConverterFunc('0.25mm'), 'fill': 'none'}
attribs = {'style': simplestyle.formatStyle(style), 'd': pathStr}
inkex.etree.SubElement(xmlParent, inkex.addNS('path','svg'), attribs )
def DrawVerticleGuides(self, xmlParent, positions, gap):
curPos = self.CalcPageLeftMargin()
lastPos = -1
while curPos + self.ContainerWidth <= self.PageWidth - self.PageMargin:
for offset in positions:
curPos += offset
if curPos != lastPos: # don't double draw
self.DrawGuide(xmlParent, curPos, 0)
lastPos = curPos
curPos += gap
def DrawHorizontalGuides(self, xmlParent, positions, gap):
curPos = self.CalcPageBottomMargin()
lastPos = -1
while curPos + self.ContainerHeight <= self.PageHeight - self.PageMargin:
for offset in positions:
curPos += offset
if curPos != lastPos: # don't double draw
self.DrawGuide(xmlParent, 0, curPos)
lastPos = curPos
curPos += gap
def GenerateFoldLines(self, xmlParent):
lines = self.GetFoldLinePositions()
for line in lines:
self.DrawLine(xmlParent, line[0], line[1])
def GenerateCropMarks(self, xmlParent):
lines = self.GetCropMarkLines()
for line in lines:
self.DrawLine(xmlParent, line[0], line[1])
@staticmethod
def CreateLineGenerator(layout, orientation, cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
if layout == "SIMPLE":
return SimpleGridLineGenerator(orientation, cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
if orientation == "HORIZONTAL":
return LineGeneratorForHorizontalCards(cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
return LineGeneratorForVerticalCards(cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
class SimpleGridLineGenerator(LineGeneratorBase):
def __init__(self, orientation, cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
if orientation == "HORIZONTAL":
super(SimpleGridLineGenerator, self).__init__(cardHeight, cardWidth, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
else:
super(SimpleGridLineGenerator, self).__init__(cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
self.ContainerWidth = self.CardWidth + 2 * bleedMargin
self.ContainerHeight = self.CardHeight + 2 * bleedMargin
# num across
# num down
self.NumContainersAcross = int((self.PageWidth - 2*self.PageMargin) // self.ContainerWidth) # round down division
self.NumContainersDown = int((self.PageHeight - 2*self.PageMargin) // self.ContainerHeight) # round down division
# content sizes
self.ContentWidth = self.NumContainersAcross * self.ContainerWidth
self.ContentHeight = self.NumContainersDown * self.ContainerHeight
def GenerateGuides(self, xmlParent):
horizontalOffsets = self.GuideOffsetsNoFold = [
0,
self.BleedMargin, self.CardMargin,
self.CardWidth - 2*self.CardMargin,
self.CardMargin, self.BleedMargin
]
verticalOffsets = self.GuideOffsetsNoFold = [
0,
self.BleedMargin, self.CardMargin,
self.CardHeight - 2*self.CardMargin,
self.CardMargin, self.BleedMargin
]
self.DrawVerticleGuides(xmlParent, horizontalOffsets, 0)
self.DrawHorizontalGuides(xmlParent, verticalOffsets, 0)
def GetFoldLinePositions(self):
return [] # no fold lines in simple grid
def GetCropMarkLines(self):
lines = []
leftMargin = self.CalcPageLeftMargin()
bottomMargin = self.CalcPageBottomMargin()
#determine all horizontal crop marks, duplicates possible
# figure out the ypos
horizontal_ypos = []
for idx in range(self.NumContainersDown):
bottomY = self.BleedMargin
topY = bottomY + self.CardHeight
containerOffset = bottomMargin + idx*self.ContainerHeight
horizontal_ypos.append(containerOffset + bottomY)
horizontal_ypos.append(containerOffset + topY)
horizontal_ypos = RoundAndDeduplicatePoints(horizontal_ypos) # remove duplicate positions
horizontal_xpos = [leftMargin - CROP_GAP, self.PageWidth - leftMargin + CROP_GAP + CROP_LENGTH]
for xpos in horizontal_xpos:
for ypos in horizontal_ypos:
lines.append([
Point(xpos - CROP_LENGTH, ypos),
Point(xpos, ypos)
])
#determine all vertical crop marks, duplicates possible
# figure out the xpos
vertical_xpos = []
for idx in range(self.NumContainersAcross):
leftX = self.BleedMargin
rightX = leftX + self.CardWidth
containerOffset = leftMargin + idx*self.ContainerWidth
vertical_xpos.append(containerOffset + leftX)
vertical_xpos.append(containerOffset + rightX)
vertical_xpos = RoundAndDeduplicatePoints(vertical_xpos) # remove duplicate positions
vertical_ypos = [bottomMargin - CROP_GAP, self.PageHeight - bottomMargin + CROP_GAP + CROP_LENGTH]
for xpos in vertical_xpos:
for ypos in vertical_ypos:
lines.append([
Point(xpos, ypos),
Point(xpos, ypos - CROP_LENGTH)
])
return lines
class LineGeneratorForVerticalCards(LineGeneratorBase):
def __init__(self, cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
super(LineGeneratorForVerticalCards, self).__init__(cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
self.ContainerWidth = cardWidth + 2*bleedMargin
self.ContainerHeight = 2*(cardHeight + 2*bleedMargin + FOLD_GAP)
# num across
self.NumContainersAcross = int((self.PageWidth - 2*self.PageMargin) // self.ContainerWidth) # round down division
# num down
contentHeight = lambda n: n * self.ContainerHeight + (n - 1)*(2*FOLD_GAP)
workingHeight = self.PageHeight - 2*self.PageMargin
self.NumContainersDown = int(workingHeight // self.ContainerHeight) # round down division for nominal value
if contentHeight(self.NumContainersDown) > workingHeight:
self.NumContainersDown -= 1
# content sizes
self.ContentWidth = self.NumContainersAcross * self.ContainerWidth
self.ContentHeight = contentHeight(self.NumContainersDown)
def GenerateGuides(self, xmlParent):
self.DrawVerticleGuides(xmlParent, self.GuideOffsetsNoFold, 0)
self.DrawHorizontalGuides(xmlParent, self.GuideOffsetsWithFold, 2*FOLD_GAP)
def GetFoldLinePositions(self):
lines = []
leftMargin = self.CalcPageLeftMargin()
for idx in range(self.NumContainersDown):
foldY = self.CalcPageBottomMargin() + idx*(self.ContainerHeight + 2*FOLD_GAP) + self.ContainerHeight/2
lines.append([Point(leftMargin, foldY), Point(self.PageWidth - leftMargin, foldY)])
return lines
def GetCropMarkLines(self):
lines = []
leftMargin = self.CalcPageLeftMargin()
bottomMargin = self.CalcPageBottomMargin()
vertical_ypos = []
# determine all of the hornzontal facing crop marks, no duplicates possible
for idx in range(self.NumContainersDown):
bottomY = self.BleedMargin
topY = bottomY + self.CardHeight
containerOffset = bottomMargin + idx*(self.ContainerHeight + 2*FOLD_GAP)
vertical_ypos += [
containerOffset - CROP_GAP,
containerOffset + 2*self.BleedMargin + 2*self.CardMargin + self.CardHeight + CROP_GAP + CROP_LENGTH
] # stash for later
for ypos in [containerOffset + bottomY, containerOffset + topY]:
for xpos in [leftMargin - CROP_GAP, self.PageWidth - leftMargin + CROP_GAP + CROP_LENGTH]:
lines.append([
Point(xpos, ypos),
Point(xpos - CROP_LENGTH, ypos)
])
#determine all vertical crop marks, duplicates possible
# figure out the xpos
vertical_xpos = []
for idx in range(self.NumContainersAcross):
leftX = self.BleedMargin
rightX = leftX + self.CardWidth
containerOffset = leftMargin + idx*self.ContainerWidth
vertical_xpos.append(containerOffset + leftX)
vertical_xpos.append(containerOffset + rightX)
vertical_xpos = list(set(vertical_xpos)) # remove duplicate positions
for xpos in vertical_xpos:
for ypos in vertical_ypos:
lines.append([
Point(xpos, ypos),
Point(xpos, ypos - CROP_LENGTH)
])
return lines
class LineGeneratorForHorizontalCards(LineGeneratorBase):
def __init__(self, cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
super(LineGeneratorForHorizontalCards, self).__init__(cardWidth, cardHeight, cardMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
self.ContainerWidth = 2*(cardHeight + 2 * bleedMargin + FOLD_GAP)
self.ContainerHeight = cardWidth + 2 * bleedMargin
# num across
contentWidth = lambda n: n * self.ContainerWidth + (n - 1)*(2*FOLD_GAP)
workingWidth = self.PageWidth - 2*self.PageMargin
self.NumContainersAcross = int(workingWidth // self.ContainerWidth) # round down division for nominal value
if contentWidth(self.NumContainersAcross) > workingWidth:
self.NumContainersAcross -= 1
# num down
self.NumContainersDown = int((self.PageHeight - 2*self.PageMargin) // self.ContainerHeight) # round down division
# content sizes
self.ContentWidth = contentWidth(self.NumContainersAcross)
self.ContentHeight = self.NumContainersDown * self.ContainerHeight
def GenerateGuides(self, xmlParent):
self.DrawVerticleGuides(xmlParent, self.GuideOffsetsWithFold, 2*FOLD_GAP)
self.DrawHorizontalGuides(xmlParent, self.GuideOffsetsNoFold, 0)
def GetFoldLinePositions(self):
lines = []
bottomMargin = self.CalcPageBottomMargin()
for idx in range(self.NumContainersAcross):
foldX = self.CalcPageLeftMargin() + idx*(self.ContainerWidth + 2*FOLD_GAP) + self.ContainerWidth/2
lines.append([Point(foldX, bottomMargin), Point(foldX, self.PageHeight - bottomMargin)])
return lines
def GetCropMarkLines(self):
lines = []
leftMargin = self.CalcPageLeftMargin()
bottomMargin = self.CalcPageBottomMargin()
horizontal_xpos = []
# determine all of the vertical facing crop marks, no duplicates possible
for idx in range(self.NumContainersAcross):
leftX = self.BleedMargin
rightX = leftX + self.CardHeight
containerOffset = leftMargin + idx*(self.ContainerWidth + 2*FOLD_GAP)
horizontal_xpos += [
containerOffset - CROP_GAP,
containerOffset + 2*self.BleedMargin + 2*self.CardMargin + self.CardHeight + CROP_GAP + CROP_LENGTH
] # stash for later
for xpos in [containerOffset + leftX, containerOffset + rightX]:
for ypos in [bottomMargin - CROP_GAP, self.PageHeight - bottomMargin + CROP_GAP + CROP_LENGTH]:
lines.append([
Point(xpos, ypos),
Point(xpos, ypos - CROP_LENGTH)
])
#determine all horizontal crop marks, duplicates possible
# figure out the xpos
horizontal_ypos = []
for idx in range(self.NumContainersDown):
bottomY = self.BleedMargin
topY = bottomY + self.CardWidth
containerOffset = bottomMargin + idx*self.ContainerHeight
horizontal_ypos.append(containerOffset + bottomY)
horizontal_ypos.append(containerOffset + topY)
horizontal_ypos = RoundAndDeduplicatePoints(horizontal_ypos) # remove duplicate positions
for ypos in horizontal_ypos:
for xpos in horizontal_xpos:
lines.append([
Point(xpos, ypos),
Point(xpos - CROP_LENGTH, ypos)
])
return lines
class FoldedCardLayoutGuidesEffect(inkex.Effect):
def __init__(self):
inkex.Effect.__init__(self)
self.OptionParser.add_option('-l', '--layout', action = 'store', type = 'string', dest = 'Layout')
self.OptionParser.add_option('-w', '--card_width', action = 'store', type = 'float', dest = 'CardWidth')
self.OptionParser.add_option('-d', '--card_height', action = 'store', type = 'float', dest = 'CardHeight')
self.OptionParser.add_option('-o', '--orientation', action = 'store', type = 'string', dest = 'Orientation')
self.OptionParser.add_option('-c', '--card_margin', action = 'store', type = 'float', dest = 'CardMargin')
self.OptionParser.add_option('-b', '--bleed_margin', action = 'store', type = 'float', dest = 'BleedMargin')
self.OptionParser.add_option('-p', '--page_margin', action = 'store', type = 'float', dest = 'PageMargin')
def effect(self):
# find dimensions of page
pageWidth = self.uutounit(self.unittouu(self.getDocumentWidth()), "mm")
pageHeight = self.uutounit(self.unittouu(self.getDocumentHeight()), "mm")
opt = self.options
guideParent = self.document.xpath('//sodipodi:namedview',namespaces=inkex.NSS)[0]
### GUIDES
# remove all the existing guides
[node.getparent().remove(node) for node in self.document.xpath('//sodipodi:guide',namespaces=inkex.NSS)]
# create the generator object
gen = LineGeneratorBase.CreateLineGenerator(opt.Layout, opt.Orientation, opt.CardWidth, opt.CardHeight, opt.CardMargin, opt.BleedMargin, pageWidth, pageHeight, opt.PageMargin, self.unittouu)
gen.GenerateGuides(guideParent)
### FOLD LINES
# remove any existing 'Crop marks' layer
[node.getparent().remove(node) for node in self.document.xpath("//svg:g[@inkscape:label='Crop Marks']",namespaces=inkex.NSS)]
svg = self.document.xpath('//svg:svg', namespaces=inkex.NSS)[0]
layer = inkex.etree.SubElement(svg, inkex.addNS('g',"svg"), {})
layer.set(inkex.addNS('label', 'inkscape'), "Crop Marks")
layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer')
#layer.set(inkex.addNS('insensitive', 'sodipodi'), 'true')
gen.GenerateFoldLines(layer)
### CROP MARKS
gen.GenerateCropMarks(layer)
if __name__ == '__main__':
effect = FoldedCardLayoutGuidesEffect()
effect.affect()

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Tuckbox</_name>
<id>fablabchemnitz.de.CreateTuckbox</id>
<dependency type="executable" location="extensions">fablabchemnitz_CreateTuckbox.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
<param name="type" type="enum" gui-text="Box type">
<item value="TUCKBOX">Tuckbox</item>
<item value="SLIPCASE">Slipcase/Deck band</item>
<item value="MATCHBOX">MatchBox</item>
</param>
<param name="num_flaps" type="int" precision="1" min="1" max="2" gui-text="Number of Flaps">1</param>
<param name="deck_width" type="float" precision="1" min="5" max="1000" gui-text="Box width (mm)">63.5</param>
<param name="deck_height" type="float" precision="1" min="5" max="1000" gui-text="Box height (mm)">88</param>
<param name="deck_depth" type="float" precision="1" min="5" max="200" gui-text="Box depth (mm)">20</param>
<param name="box_allowance" type="float" precision="1" min="0" max="5" gui-text="Box allowance (mm)">1.5</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="FabLab Chemnitz">
<submenu _name="Paper/Cardboard Boxes" />
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions" interpreter="python">fablabchemnitz_CreateTuckbox.py</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,499 @@
#!/usr/bin/env python2
# Copyright 2016 Luke Phillips (lukerazor@hotmail.com)
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Extension dirs
# linux:~/.config/inkscape/extensions
# windows: [Drive]:\Program Files\Inkscape\share\extensions
import inkex
import simplestyle
import copy
CSNS = ""
inkex.NSS[u'cs'] = u'http://www.razorfoss.org/tuckboxextension/'
class EffectDimensionProvider():
def __init__(self, effect, x = 0, y = 0):
self.Effect = effect
self.Layer = effect.current_layer
self.Width = effect.options.DeckWidth
self.Height = effect.options.DeckHeight
self.Depth = effect.options.DeckDepth
self.Allowance = effect.options.DeckAllowance
self.X = x
self.Y = y
def MMtoUU(self, mmval):
if hasattr(self.Effect, "unittouu"):
return str(self.Effect.unittouu("{0}mm".format(mmval)))
else:
MM_TO_PIXELS = 3.5433071
return str(MM_TO_PIXELS * mmval)
def MaximiseHeight(self):
if self.Height < self.Width: # always choose the smallest to be the "width"
temp = self.Width
self.Width = self.Height
self.Height = temp
class BoxBase():
def __init__(self, dimensionProvider):
#create a group
self.DimProvider = dimensionProvider
self.Group = inkex.etree.SubElement(dimensionProvider.Layer, inkex.addNS('g','svg'), {} )
self.Width = dimensionProvider.Width + dimensionProvider.Allowance
self.Height = dimensionProvider.Height + dimensionProvider.Allowance
self.Depth = dimensionProvider.Depth + dimensionProvider.Allowance
self.X = dimensionProvider.X
self.Y = dimensionProvider.Y
self.MinY = 0
self.MinX = 0
### init some common sizes ###
self.ThumbSize = 20
# tuck flap size
self.FlapOffset = 1.5
self.FlapHeight = self.Depth
if self.Depth < 7 or self.Depth > 25:
self.FlapHeight = 20
# main flap size
self.MainFlapHeight = (4 * self.Depth)/3
if self.MainFlapHeight < self.ThumbSize:
self.MainFlapHeight = 24
### colour ###
self.Fill = '#ffffff'
self.StrokeWidth = self.DimProvider.MMtoUU(0.5)
def _CreateRectangleInMillimetres(self, height, width, x, y):
style = {'stroke': '#000000', 'stroke-width': self.StrokeWidth, 'fill' : self.Fill}
attribs = {'style': simplestyle.formatStyle(style), 'height': self.DimProvider.MMtoUU(height), 'width': self.DimProvider.MMtoUU(width), 'x': self.DimProvider.MMtoUU(x), 'y': self.DimProvider.MMtoUU(y)}
inkex.etree.SubElement(self.Group, inkex.addNS('rect','svg'), attribs )
def _CreatePathinMillimetres(self, cmds):
pathStr = ""
for cmd in cmds:
pathStr += cmd[0] + " "
for coord in cmd[1:]:
pathStr += self.DimProvider.MMtoUU(coord) + " "
pathStr += "z"
#raise Exception(pathStr)
style = {'stroke': '#000000', 'stroke-width': self.StrokeWidth, 'fill' : self.Fill}
attribs = {'style': simplestyle.formatStyle(style), 'd': pathStr}
inkex.etree.SubElement(self.Group, inkex.addNS('path','svg'), attribs )
class SingleFlappedTuckBox(BoxBase):
def __init__(self, dimensionProvider):
BoxBase.__init__(self, dimensionProvider)
def Create(self):
self.FlapOffset = 1.5
self.FlapHeight = 20
# Figure out some row and column values,
# note rows and cols work left to right, top to bottom
col5 = self.X - self.Depth
col4 = col5 - self.Width
col3 = col4 - self.Depth
col2 = col3 - self.Width
col1 = col2 - self.Depth
self.MinX = col1
row4 = self.Y - self.Depth
row3 = row4 - self.Height
row2 = row3 - self.Depth
row1 = row2 - self.Depth
self.MinY = row1
### COLUMN 1 ###
#create left glue panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col1, row3)
### COLUMN 2 ###
#create box back print panel
self._CreatePathinMillimetres(
[
["m", col2, row3],
["h", (self.Width - self.ThumbSize)/2],
["c", 0, (3*self.ThumbSize)/4, self.ThumbSize, (3*self.ThumbSize)/4, self.ThumbSize, 0],
["h", (self.Width - self.ThumbSize)/2],
["v", self.Height],
["h", -self.Width]
])
#create box bottom glue panel
self._CreateRectangleInMillimetres(self.Depth, self.Width, col2, row4)
### COLUMN 3 ###
#create left flap
self._CreatePathinMillimetres(
[
["m", col3, row3],
["h", self.Depth],
["l", -self.FlapOffset, -self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
#create left print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col3, row3)
#create bottom left glue panel
self._CreateRectangleInMillimetres(self.Depth, self.Depth, col3, row4)
### COLUMN 4 ###
#create main flap
self._CreatePathinMillimetres(
[
["m", col4, row2],
["c", 0, -self.MainFlapHeight, self.Width, -self.MainFlapHeight, self.Width, 0]
])
#create box top print panel
self._CreateRectangleInMillimetres(self.Depth, self.Width, col4, row2)
#create box front print panel
self._CreateRectangleInMillimetres(self.Height, self.Width, col4, row3)
#create box bottom print panel
self._CreateRectangleInMillimetres(self.Depth, self.Width, col4, row4)
### COLUMN 5 ###
#create right flap
self._CreatePathinMillimetres(
[
["m", col5, row3],
["h", self.Depth],
["l", -self.FlapOffset, -self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
#create right print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col5, row3)
#create bottom right glue panel
self._CreateRectangleInMillimetres(self.Depth, self.Depth, col5, row4)
class DoubleFlappedTuckBox(BoxBase):
def __init__(self, dimensionProvider):
BoxBase.__init__(self, dimensionProvider)
def Create(self):
# Figure out some row and column values,
# note rows and cols work left to right, top to bottom
col5 = self.X - self.Depth
col4 = col5 - self.Width
col3 = col4 - self.Depth
col2 = col3 - self.Width
col1 = col2 - self.Depth
self.MinX = col1
row5 = self.Y - self.Depth
row4 = row5 - self.Depth
row3 = row4 - self.Height
row2 = row3 - self.Depth
row1 = row2 - self.Depth
self.MinY = row1
### COLUMN 1 ###
#create left glue panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col1, row3)
### COLUMN 2 ###
#create box back print panel
self._CreatePathinMillimetres(
[
["m", col2, row3],
["h", (self.Width - self.ThumbSize)/2],
["c", 0, (3*self.ThumbSize)/4, self.ThumbSize, (3*self.ThumbSize)/4, self.ThumbSize, 0],
["h", (self.Width - self.ThumbSize)/2],
["v", self.Height],
["h", -(self.Width - self.ThumbSize)/2],
["c", 0, -(3*self.ThumbSize)/4, -self.ThumbSize, -(3*self.ThumbSize)/4, -self.ThumbSize, 0],
["h", -(self.Width - self.ThumbSize)/2]
])
### COLUMN 3 ###
#create top left flap
self._CreatePathinMillimetres(
[
["m", col3, row3],
["h", self.Depth],
["l", -self.FlapOffset, -self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
#create left print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col3, row3)
#create bottom left flap
self._CreatePathinMillimetres(
[
["m", col3, row4],
["h", self.Depth],
["l", -self.FlapOffset, self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
### COLUMN 4 ###
#create top main flap
self._CreatePathinMillimetres(
[
["m", col4, row2],
["c", 0, -self.MainFlapHeight, self.Width, -self.MainFlapHeight, self.Width, 0]
])
#create box top print panel
self._CreateRectangleInMillimetres(self.Depth, self.Width, col4, row2)
#create box front print panel
self._CreateRectangleInMillimetres(self.Height, self.Width, col4, row3)
#create box bottom print panel
self._CreateRectangleInMillimetres(self.Depth, self.Width, col4, row4)
#create bottom main flap
self._CreatePathinMillimetres(
[
["m", col4, row5],
["c", 0, self.MainFlapHeight, self.Width, self.MainFlapHeight, self.Width, 0]
])
### COLUMN 5 ###
#create top right flap
self._CreatePathinMillimetres(
[
["m", col5, row3],
["h", self.Depth],
["l", -self.FlapOffset, -self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
#create right print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col5, row3)
#create bottom right flap
self._CreatePathinMillimetres(
[
["m", col5, row4],
["h", self.Depth],
["l", -self.FlapOffset, self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
class SlipcaseTuckBox(BoxBase):
def __init__(self, dimensionProvider):
BoxBase.__init__(self, dimensionProvider)
def Create(self):
self.FlapOffset = 1.5
# Figure out some row and column values,
# note rows and cols work left to right, top to bottom
col5 = self.X - self.Depth
col4 = col5 - self.Width
col3 = col4 - self.Depth
col2 = col3 - self.Width
col1 = col2 - self.Depth
row1 = self.Y - self.Height
### COLUMN 1 ###
#create left glue flap
self._CreatePathinMillimetres(
[
["m", col2, row1],
["v", self.Height],
["l", -(self.Depth - self.FlapOffset), -self.FlapOffset],
["v", -(self.Height - (2*self.FlapOffset))],
])
### COLUMN 2 ###
#create box back print panel
self._CreateRectangleInMillimetres(self.Height, self.Width, col2, row1)
### COLUMN 3 ###
#create left print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col3, row1)
### COLUMN 4 ###
#create box front print panel
self._CreateRectangleInMillimetres(self.Height, self.Width, col4, row1)
### COLUMN 5 ###
#create right print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col5, row1)
class Matchbox(BoxBase):
def __init__(self, dimensionProvider, numFlaps):
BoxBase.__init__(self, dimensionProvider)
self.NumFlaps = numFlaps
def Create(self):
if self.NumFlaps == 2:
tuckbox = DoubleFlappedTuckBox(self.DimProvider)
else:
tuckbox = SingleFlappedTuckBox(self.DimProvider)
tuckbox.Create()
#################################3
# Create matching double flap tuck box
dimProvider = copy.copy(self.DimProvider)
dimProvider.Width -= 2
dimProvider.Height -= 2
dimProvider.Depth -= 2
dimProvider.Y = tuckbox.MinY - 20
drawer = MatcboxDrawer(dimProvider)
drawer.Create()
class MatcboxDrawer(BoxBase):
def __init__(self, dimensionProvider):
BoxBase.__init__(self, dimensionProvider)
def Create(self):
fudgeDepth = self.Depth - 2 # overlap panels should be a little smaller to avoid touching box base
# Figure out some row and column co-ord values,
# note rows and cols work left to right, top to bottom, values start at 0 and go negative
col5 = self.X - fudgeDepth
col4 = col5 - self.Depth
col3 = col4 - self.Width
col2 = col3 - self.Depth
col1 = col2 - fudgeDepth
row5 = self.Y - fudgeDepth
row4 = row5 - self.Depth
row3 = row4 - self.Height
row2 = row3 - self.Depth
row1 = row2 - fudgeDepth
### COLUMN 1 ###
#create left overlap panel
self._CreateRectangleInMillimetres(self.Height, fudgeDepth, col1, row3)
### COLUMN 2 ###
#create top left flap
self._CreatePathinMillimetres(
[
["m", col2, row3],
["h", self.Depth],
["l", -self.FlapOffset, -self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
#create box left side print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col2, row3)
#create bottom left flap
self._CreatePathinMillimetres(
[
["m", col2, row4],
["h", self.Depth],
["l", -self.FlapOffset, self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
### COLUMN 3 ###
#create top side overlap panel
self._CreateRectangleInMillimetres(fudgeDepth, self.Width, col3, row1)
#create top box side panel
self._CreateRectangleInMillimetres(self.Depth, self.Width, col3, row2)
#create box bottom
self._CreateRectangleInMillimetres(self.Height, self.Width, col3, row3)
#create bottom box side panel
self._CreateRectangleInMillimetres(self.Depth, self.Width, col3, row4)
#create bottom side overlap panel
self._CreateRectangleInMillimetres(fudgeDepth, self.Width, col3, row5)
### COLUMN 4 ###
#create top right flap
self._CreatePathinMillimetres(
[
["m", col4, row3],
["h", self.Depth],
["l", -self.FlapOffset, -self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
#create box right side print panel
self._CreateRectangleInMillimetres(self.Height, self.Depth, col4, row3)
#create bottom right flap
self._CreatePathinMillimetres(
[
["m", col4, row4],
["h", self.Depth],
["l", -self.FlapOffset, self.FlapHeight],
["h", -(self.Depth - (2*self.FlapOffset))],
])
### COLUMN 5 ###
#create right overlap panel
self._CreateRectangleInMillimetres(self.Height, fudgeDepth, col5, row3)
class TuckboxCreateEffect(inkex.Effect):
def __init__(self):
inkex.Effect.__init__(self)
self.OptionParser.add_option('-t', '--type', action = 'store', type = 'string', dest = 'BoxType')
self.OptionParser.add_option('-n', '--num_flaps', action = 'store', type = 'int', dest = 'NumFlaps')
self.OptionParser.add_option('-w', '--deck_width', action = 'store', type = 'float', dest = 'DeckWidth')
self.OptionParser.add_option('-r', '--deck_height', action = 'store', type = 'float', dest = 'DeckHeight')
self.OptionParser.add_option('-d', '--deck_depth', action = 'store', type = 'float', dest = 'DeckDepth')
self.OptionParser.add_option('-a', '--box_allowance', action = 'store', type = 'float', dest = 'DeckAllowance')
def GetPaths(self):
paths = []
def effect(self):
dimProvider = EffectDimensionProvider(self)
if self.options.BoxType == "TUCKBOX":
if self.options.NumFlaps == 2:
box = DoubleFlappedTuckBox(dimProvider)
else:
box = SingleFlappedTuckBox(dimProvider)
elif self.options.BoxType == "SLIPCASE":
box = SlipcaseTuckBox(dimProvider)
elif self.options.BoxType == "MATCHBOX":
dimProvider.MaximiseHeight()
box = Matchbox(dimProvider, self.options.NumFlaps)
else:
raise Exception("Box type '{0}' is undefined".format(self.options.BoxType))
box.Create()
if __name__ == '__main__':
creator = TuckboxCreateEffect()
creator.affect()

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Hex Tiles</_name>
<id>fablabchemnitz.de.HexLayoutGuides</id>
<dependency type="executable" location="extensions">fablabchemnitz_HexLayoutGuides.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
<param name="hex_diameter" type="float" precision="1" min="5" max="1000" gui-text="Hex Diameter (mm)">19</param>
<param name="hex_margin" type="float" precision="1" min="0" max="200" gui-text="Hex margin(mm)">2</param>
<param name="bleed_margin" type="float" precision="1" min="0" max="200" gui-text="Bleed margin(mm)">2</param>
<param name="page_margin" type="float" precision="1" min="0" max="200" gui-text="Page margin(mm)">15</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="FabLab Chemnitz">
<submenu _name="Grids/Guides" />
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions" interpreter="python">fablabchemnitz_HexLayoutGuides.py</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,469 @@
#!/usr/bin/env python2
# Copyright 2016 Luke Phillips (lukerazor@hotmail.com)
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Extension dirs
# linux:~/.config/inkscape/extensions
# windows: [Drive]:\Program Files\Inkscape\share\extensions
import inkex
import simplestyle
import copy
import math
FOLD_GAP = 5
CROP_GAP = 2
CROP_LENGTH = 3
CSNS = ""
inkex.NSS[u'cs'] = u'http://www.razorfoss.org/tuckboxextension/'
def PrintDebug(string):
inkex.debug( _(str(string)) )
def RoundAndDeduplicatePoints(points):
return sorted(list(set(map(lambda x: round(x, 3), points))))
class Point():
def __init__(self, x, y):
self.x = x
self.y = y
def rotate(self, angle, origin):
"""
Rotate a point counterclockwise by a given angle around a given origin.
The angle should be given in degrees.
"""
rads = math.radians(angle)
newX = origin.x + math.cos(rads) * (self.x - origin.x) - math.sin(rads) * (self.y - origin.y)
newY = origin.y + math.sin(rads) * (self.x - origin.x) + math.cos(rads) * (self.y - origin.y)
return Point(newX, newY)
def add(self, point):
return Point(self.x + point.x, self.y + point.y)
@staticmethod
def parsePoint(pointString):
x, y = map(lambda v: float(v), pointString.split(","))
return Point(x, y)
@staticmethod
def parse(pointString, orientationString=None):
p1 = Point.parsePoint(pointString)
p = Point(p1.x, p1.y)
if orientationString != None:
po = Point.parsePoint(orientationString)
p = p1.add(po.rotate(270, Point(0, 0)))
return p
class HexGeneratorBase(object):
def __init__(self, hexDiameter, hexMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
self.UnitConverterFunc = unitConverterFunc
self.HexDiameter = hexDiameter
self.HexMargin = hexMargin
self.BleedMargin = bleedMargin
self.PageWidth = pageWidth
self.PageHeight = pageHeight
self.PageMargin = pageMargin
self.ContainerWidth = -1
self.ContainerHeight = -1
def CalcPageLeftMargin(self):
return (self.PageWidth - self.ContentWidth) / 2.0
def CalcPageBottomMargin(self):
return (self.PageHeight - self.ContentHeight) / 2.0
def DrawGuide(self, xmlParent, xpos, ypos):
posString = "{},{}".format(xpos, ypos)
attribs = {'position': posString, 'orientation': posString}
inkex.etree.SubElement(xmlParent, inkex.addNS('guide',"sodipodi"), attribs)
def DrawAngledGuide(self, xmlParent, xpos, ypos, angle):
# Angles are taken from the horizontal axis, positive angles move clockwise
posString = "{},{}".format(xpos, ypos)
orientationString = "{}, {}".format(math.sin(math.radians(angle)), math.cos(math.radians(angle)))
attribs = {'position': posString, 'orientation': orientationString}
inkex.etree.SubElement(xmlParent, inkex.addNS('guide',"sodipodi"), attribs)
def ConvertPoint(self, p):
# convert point into svg approriate values, including catering for inkscapes "alternative" axis sytem ie 0, 0 is bottom left not top left
newX = self.UnitConverterFunc("{}mm".format(p.x))
newY = self.PageHeight - self.UnitConverterFunc("{}mm".format(p.y))
return Point(newX, newY)
def DrawLine(self, xmlParent, p1, p2):
cp1 = self.ConvertPoint(p1)
cp2 = self.ConvertPoint(p2)
pathStr = "M {},{} {}, {}".format(cp1.x, cp1.y, cp2.x, cp2.y)
style = {'stroke': '#000000', 'stroke-width': self.UnitConverterFunc('0.25mm'), 'fill': 'none'}
attribs = {'style': simplestyle.formatStyle(style), 'd': pathStr}
inkex.etree.SubElement(xmlParent, inkex.addNS('path','svg'), attribs )
def DrawVerticleGuides(self, xmlParent, positions, gap):
curPos = self.CalcPageLeftMargin()
lastPos = -1
while curPos + self.ContainerWidth <= self.PageWidth - self.PageMargin:
for offset in positions:
curPos += offset
if curPos != lastPos: # don't double draw
self.DrawGuide(xmlParent, curPos, 0)
lastPos = curPos
curPos += gap
def DrawHorizontalGuides(self, xmlParent, positions, gap):
curPos = self.CalcPageBottomMargin()
lastPos = -1
while curPos + self.ContainerHeight <= self.PageHeight - self.PageMargin:
for offset in positions:
curPos += offset
if curPos != lastPos: # don't double draw
self.DrawGuide(xmlParent, 0, curPos)
lastPos = curPos
curPos += gap
def DrawAngledGuides(self, xmlParent, offsetPositions, angle, gap):
numExtraTopContainers = 0
numExtraBottomContainers = 0
if angle > 0:
numExtraTopContainers = math.ceil(self.NumContainersAcross / 2.0) - 1
if angle < 0:
numExtraBottomContainers = math.ceil(self.NumContainersAcross / 2.0) - 1
# draw sets of guides per point avoiding duplicate lines
# NOTE: Effectivly we draw the bottom guides first and then move up (ie y is increasing)
curPos = self.CalcPageBottomMargin() - numExtraBottomContainers * self.ContainerHeight
lastPos = -1
while curPos + self.ContainerHeight <= self.PageHeight - self.PageMargin + numExtraTopContainers*self.ContainerHeight:
for offset in offsetPositions:
curPos += offset
if curPos != lastPos: # don't double draw
self.DrawAngledGuide(xmlParent, self.CalcPageLeftMargin() + self.ContainerWidth/2, curPos, angle)
lastPos = curPos
curPos += gap
def GenerateFoldLines(self, xmlParent):
lines = self.GetFoldLinePositions()
for line in lines:
self.DrawLine(xmlParent, line[0], line[1])
def GenerateCropMarks(self, xmlParent):
lines = self.GetCropMarkLines()
for line in lines:
self.DrawLine(xmlParent, line[0], line[1])
@staticmethod
def CalculateBorderVerticalOffset(borderWidth):
if borderWidth == 0:
return 0
return borderWidth / math.sin(math.radians(60))
@staticmethod
def CreateHexGenerator(hexDiameter, hexMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
return SimpleHexGridLineGenerator(hexDiameter, hexMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
class SimpleHexGridLineGenerator(HexGeneratorBase):
def __init__(self, hexDiameter, hexMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc):
super(SimpleHexGridLineGenerator, self).__init__(hexDiameter, hexMargin, bleedMargin, pageWidth, pageHeight, pageMargin, unitConverterFunc)
self.HexWidth = math.sqrt(3) * (hexDiameter/2)
self.ContainerWidth = self.HexWidth + 2*bleedMargin
self.ContainerHeight = hexDiameter + 2*HexGeneratorBase.CalculateBorderVerticalOffset(bleedMargin)
# num across
# num down
self.NumContainersAcross = int((self.PageWidth - 2*self.PageMargin) // self.ContainerWidth) # round down division
self.NumContainersDown = int((self.PageHeight - 2*self.PageMargin) // self.ContainerHeight) # round down division
# content sizes
self.ContentWidth = self.NumContainersAcross * self.ContainerWidth
self.ContentHeight = self.NumContainersDown * self.ContainerHeight
def GenerateGuides(self, xmlParent):
verticalGuideOffsets = [
0,
self.BleedMargin,
self.HexMargin,
self.HexWidth - 2*self.HexMargin,
self.HexMargin,
self.BleedMargin
]
bleedVerticalOffset = HexGeneratorBase.CalculateBorderVerticalOffset(self.BleedMargin)
hexMarginVerticalOffset = HexGeneratorBase.CalculateBorderVerticalOffset(self.HexMargin)
horizontalGuideOffsets = [
0,
bleedVerticalOffset,
hexMarginVerticalOffset,
self.HexDiameter - 2*hexMarginVerticalOffset,
hexMarginVerticalOffset,
bleedVerticalOffset
]
self.DrawVerticleGuides(xmlParent, verticalGuideOffsets, 0)
self.DrawAngledGuides(xmlParent, horizontalGuideOffsets, -30, 0)
self.DrawAngledGuides(xmlParent, horizontalGuideOffsets, 30, 0)
def GetFoldLinePositions(self):
return [] # no fold lines in simple grid
def GetCropMarkLines(self):
lines = []
leftMargin = self.CalcPageLeftMargin()
bottomMargin = self.CalcPageBottomMargin()
bleedVerticalOffset = HexGeneratorBase.CalculateBorderVerticalOffset(self.BleedMargin)
def CalcOppositeDeltaGivenAdjacentDelta(xdelta, angle):
return math.tan(math.radians(angle)) * xdelta
#---------------------------------------------------------------------------------
#determine all vertical crop marks, duplicates possible
# figure out the xpos'
vertical_xpos = []
for idx in range(self.NumContainersAcross):
leftX = self.BleedMargin
rightX = leftX + self.HexWidth
containerOffset = leftMargin + idx * self.ContainerWidth
vertical_xpos.append(containerOffset + leftX)
vertical_xpos.append(containerOffset + rightX)
vertical_xpos = RoundAndDeduplicatePoints(vertical_xpos)
# add to list of lines
vertical_ypos = [bottomMargin - CROP_GAP, self.PageHeight - bottomMargin + CROP_GAP + CROP_LENGTH]
for xpos in vertical_xpos:
for ypos in vertical_ypos:
lines.append([
Point(xpos, ypos),
Point(xpos, ypos - CROP_LENGTH)
])
#---------------------------------------------------------------------------------
# figure out NW, SW, NE and SE crop marks for both sides of the page
vertical_ypos_nw = []
vertical_ypos_sw = []
vertical_ypos_ne = []
vertical_ypos_se = []
yoffset = CalcOppositeDeltaGivenAdjacentDelta(self.ContainerWidth/2 + CROP_GAP, 30)
lastColumnHasHalfStep = (self.NumContainersAcross % 2) == 0 # an even numbered containers across means that the last column is 1/2 a continer up and has 1 less container
staggeredContainerOffset = 0
if lastColumnHasHalfStep:
staggeredContainerOffset = self.ContainerHeight/2
for idx in range(self.NumContainersDown):
leftContainerOffset = idx * self.ContainerHeight + bottomMargin
rightContainerOffset = leftContainerOffset + staggeredContainerOffset
bottomY = bleedVerticalOffset
topY = self.ContainerHeight - bleedVerticalOffset
vertical_ypos_nw.append(leftContainerOffset + topY + yoffset)
vertical_ypos_nw.append(leftContainerOffset + bottomY + yoffset)
vertical_ypos_sw.append(leftContainerOffset + topY - yoffset)
vertical_ypos_sw.append(leftContainerOffset + bottomY - yoffset)
vertical_ypos_ne.append(rightContainerOffset + topY + yoffset)
vertical_ypos_ne.append(rightContainerOffset + bottomY + yoffset)
vertical_ypos_se.append(rightContainerOffset + topY - yoffset)
vertical_ypos_se.append(rightContainerOffset + bottomY - yoffset)
# sort out a staggered last col
if lastColumnHasHalfStep: # if it's a half step column we need to remove the last container and add acouple of extra lines
vertical_ypos_ne = vertical_ypos_ne[:-2]
vertical_ypos_se = vertical_ypos_se[:-2]
vertical_ypos_ne.append(max(vertical_ypos_ne) + 2*bleedVerticalOffset)
vertical_ypos_se.append(min(vertical_ypos_se) - 2*bleedVerticalOffset)
# remove duplicate positions
vertical_ypos_nw = RoundAndDeduplicatePoints(vertical_ypos_nw)
vertical_ypos_sw = RoundAndDeduplicatePoints(vertical_ypos_sw)
vertical_ypos_ne = RoundAndDeduplicatePoints(vertical_ypos_ne)
vertical_ypos_se = RoundAndDeduplicatePoints(vertical_ypos_se)
# add to list of lines
xpos_left = leftMargin - CROP_GAP
xpos_right = self.PageWidth - leftMargin + CROP_GAP
yoffset = CalcOppositeDeltaGivenAdjacentDelta(CROP_LENGTH, 30)
for ypos in vertical_ypos_nw:
lines.append([
Point(xpos_left, ypos),
Point(xpos_left - CROP_LENGTH, ypos + yoffset)
])
for ypos in vertical_ypos_sw:
lines.append([
Point(xpos_left, ypos),
Point(xpos_left - CROP_LENGTH, ypos - yoffset)
])
for ypos in vertical_ypos_ne:
lines.append([
Point(xpos_right, ypos),
Point(xpos_right + CROP_LENGTH, ypos + yoffset)
])
for ypos in vertical_ypos_se:
lines.append([
Point(xpos_right, ypos),
Point(xpos_right + CROP_LENGTH, ypos - yoffset)
])
#---------------------------------------------------------------------------------
# figure out NW, SW, NE and SE crop marks for top and bottom of the page
xpos_nw = []
xpos_sw = []
xpos_ne = []
xpos_se = []
xoffset_near = CalcOppositeDeltaGivenAdjacentDelta(bleedVerticalOffset + CROP_GAP, 60)
xoffset_far = CalcOppositeDeltaGivenAdjacentDelta(self.ContainerHeight - bleedVerticalOffset + CROP_GAP, 60)
for idx in range(0, self.NumContainersAcross, 2): #we only need to do every other container because of the stepping
containerOffset = idx * self.ContainerWidth + leftMargin
topY = self.ContainerHeight - bleedVerticalOffset
bottomY = bleedVerticalOffset
xpos = self.ContainerWidth/2
xpos_nw.append(containerOffset + xpos - xoffset_near)
xpos_nw.append(containerOffset + xpos - xoffset_far)
xpos_sw.append(containerOffset + xpos - xoffset_near)
xpos_sw.append(containerOffset + xpos - xoffset_far)
xpos_ne.append(containerOffset + xpos + xoffset_near)
xpos_ne.append(containerOffset + xpos + xoffset_far)
xpos_se.append(containerOffset + xpos + xoffset_near)
xpos_se.append(containerOffset + xpos + xoffset_far)
# remove duplicate positions
xpos_nw = RoundAndDeduplicatePoints(xpos_nw)
xpos_sw = RoundAndDeduplicatePoints(xpos_sw)
xpos_ne = RoundAndDeduplicatePoints(xpos_ne)
xpos_se = RoundAndDeduplicatePoints(xpos_se)
# add to list of lines
ypos_bottom = bottomMargin - CROP_GAP
ypos_top = self.PageHeight - bottomMargin + CROP_GAP
yoffset = CalcOppositeDeltaGivenAdjacentDelta(CROP_LENGTH, 30)
for xpos in xpos_nw:
if xpos > 0 and xpos < self.PageWidth:
lines.append([
Point(xpos, ypos_top),
Point(xpos - CROP_LENGTH, ypos_top + yoffset)
])
for xpos in xpos_sw:
if xpos > 0 and xpos < self.PageWidth:
lines.append([
Point(xpos, ypos_bottom),
Point(xpos - CROP_LENGTH, ypos_bottom - yoffset)
])
for xpos in xpos_ne:
if xpos > 0 and xpos < self.PageWidth:
lines.append([
Point(xpos, ypos_top),
Point(xpos + CROP_LENGTH, ypos_top + yoffset)
])
for xpos in xpos_se:
if xpos > 0 and xpos < self.PageWidth:
lines.append([
Point(xpos, ypos_bottom),
Point(xpos + CROP_LENGTH, ypos_bottom - yoffset)
])
#---------------------------------------------------------------------------------
return lines
class HexLayoutGuidesEffect(inkex.Effect):
def __init__(self):
inkex.Effect.__init__(self)
self.OptionParser.add_option('-d', '--hex_diameter', action = 'store', type = 'float', dest = 'HexDiameter')
self.OptionParser.add_option('-c', '--hex_margin', action = 'store', type = 'float', dest = 'HexMargin')
self.OptionParser.add_option('-b', '--bleed_margin', action = 'store', type = 'float', dest = 'BleedMargin')
self.OptionParser.add_option('-p', '--page_margin', action = 'store', type = 'float', dest = 'PageMargin')
def effect(self):
# find dimensions of page
pageWidth = self.uutounit(self.unittouu(self.getDocumentWidth()), "mm")
pageHeight = self.uutounit(self.unittouu(self.getDocumentHeight()), "mm")
opt = self.options
guideParent = self.document.xpath('//sodipodi:namedview',namespaces=inkex.NSS)[0]
### GUIDES
# remove all the existing guides
[node.getparent().remove(node) for node in self.document.xpath('//sodipodi:guide',namespaces=inkex.NSS)]
# create the object generator
gen = HexGeneratorBase.CreateHexGenerator(opt.HexDiameter, opt.HexMargin, opt.BleedMargin, pageWidth, pageHeight, opt.PageMargin, self.unittouu)
gen.GenerateGuides(guideParent)
### CROP MARKS
# remove any existing 'Crop marks' layer
[node.getparent().remove(node) for node in self.document.xpath("//svg:g[@inkscape:label='Crop Marks']",namespaces=inkex.NSS)]
svg = self.document.xpath('//svg:svg', namespaces=inkex.NSS)[0]
layer = inkex.etree.SubElement(svg, inkex.addNS('g',"svg"), {})
layer.set(inkex.addNS('label', 'inkscape'), "Crop Marks")
layer.set(inkex.addNS('groupmode', 'inkscape'), 'layer')
#layer.set(inkex.addNS('insensitive', 'sodipodi'), 'true')
gen.GenerateCropMarks(layer)
if __name__ == '__main__':
effect = HexLayoutGuidesEffect()
effect.affect()

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Insert Paper Template</_name>
<id>fablabchemnitz.de.InsertPaperTemplate</id>
<dependency type="executable" location="extensions">fablabchemnitz_InsertPaperTemplate.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
<param name="papertype" type="enum" gui-text="Box type">
<item value="A5">A5</item>
<item value="A4">A4</item>
<item value="A3">A3</item>
<item value="A2">A2</item>
<item value="A1">A1</item>
<item value="A0">A0</item>
<item value="POKER">Poker Card</item>
<item value="BRIDGE">Bridge Card</item>
<item value="MINI_US">Mini American Card</item>
<item value="MINI_EU">Mini European Card</item>
<item value="TAROT">Tarot Card</item>
</param>
<param name="show_type" type="boolean" gui-text="Include Label">true</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="FabLab Chemnitz">
<submenu _name="Grids/Guides" />
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions" interpreter="python">fablabchemnitz_InsertPaperTemplate.py</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,127 @@
#!/usr/bin/env python2
# Copyright 2016 Luke Phillips (lukerazor@hotmail.com)
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# Extension dirs
# linux:~/.config/inkscape/extensions
# windows: D:\Program Files\Inkscape\share\extensions
import inkex
import simplestyle
import simplepath
from inkex import *
import csv
import fnmatch
import re
import os
import os.path
import lxml
from lxml import etree
from copy import deepcopy
import sys
import copy
CSNS = ""
NSS[u'cs'] = u'http://www.razorfoss.org/tuckboxextension/'
class PaperBase():
def __init__(self, width, height):
self.Width = width
self.Height = height
class A5(PaperBase):
def __init__(self):
PaperBase.__init__(self, 150, 100)
class InsertPaperTemplateEffect(inkex.Effect):
def __init__(self):
inkex.Effect.__init__(self)
self.OptionParser.add_option('-p', '--papertype', action = 'store', type = 'string', dest = 'PaperType')
self.OptionParser.add_option('-s', '--show_type', action = 'store', type = 'string', dest = 'ShowType')
### colour ###
self.StrokeWidthFloat = 0.5
self.StrokeWidth = self.MMtoUU(self.StrokeWidthFloat)
self.FontSize = "11px"
def effect(self):
self.Group = inkex.etree.SubElement(self.current_layer, inkex.addNS('g','svg'), {} )
paperTypes = {}
paperTypes["A5"] = (148, 210, "#ffeeaa") # yellow
paperTypes["A4"] = (210, 297, "#ffccaa") # orange
paperTypes["A3"] = (297, 420, "#afdde9") # blue
paperTypes["A2"] = (420, 594, "#ccaaff") # purple
paperTypes["A1"] = (594, 841, "#afe9c6") # green
paperTypes["A0"] = (841, 1189, "#ffd5d5") # red
paperTypes["POKER"] = (63.5, 88, "#ffffff") # white
paperTypes["BRIDGE"] = (56, 88, "#ffffff") # white
paperTypes["MINI_US"] = (41, 63, "#ffffff") # white
paperTypes["MINI_EU"] = (44, 68, "#ffffff") # white
paperTypes["TAROT"] = (70, 120, "#ffffff") # white
if self.options.PaperType in paperTypes:
self.CreateTemplate(self.options.PaperType, *(paperTypes[self.options.PaperType]))
else:
raise Exception("Paper type '{0}' is undefined".format(self.options.PaperType))
def CreateTemplate(self, label, width, height, colour):
# TODO Read mouse position
x = 0
y = 0
self._CreateRectangleInMillimetres(width-self.StrokeWidthFloat, height-self.StrokeWidthFloat, x, y, colour)
if self.options.ShowType == "true":
self._CreateText(label, x + width/2 , y + height/2)
def _CreateText(self, labelText, x, y):
style = {'stroke': '#000000',
'stroke-width': self.StrokeWidth,
'fill' : '#000000',
'font-size' : self.FontSize,
'text-align' : 'center',
'text-anchor' : 'middle'
}
attribs = {'style': simplestyle.formatStyle(style), 'x': self.MMtoUU(x), 'y': self.MMtoUU(y)}
text = inkex.etree.Element(inkex.addNS('text','svg'), attribs)
text.text = labelText
self.Group.append(text)
def _CreateRectangleInMillimetres(self, width, height, x, y, color):
style = {'stroke': '#000000', 'stroke-width': self.StrokeWidth, 'fill' : color}
attribs = {'style': simplestyle.formatStyle(style), 'height': self.MMtoUU(height), 'width': self.MMtoUU(width), 'x': self.MMtoUU(x), 'y': self.MMtoUU(y)}
inkex.etree.SubElement(self.Group, inkex.addNS('rect','svg'), attribs )
def MMtoUU(self, mmval):
if hasattr(self, "xxxunittouu"):
return str(self.unittouu("{0}mm".format(mmval)))
else:
MM_TO_PIXELS = 1
return str(MM_TO_PIXELS * mmval)
if __name__ == '__main__':
creator = InsertPaperTemplateEffect()
creator.affect()

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>Kerf Width Offset</_name>
<id>fablabchemnitz.de.add_kerf_width_offset</id>
<dependency type="executable" location="extensions">fablabchemnitz_add_kerf_width_offset.py</dependency>
<dependency type="executable" location="extensions">fablabchemnitz_metaext.py</dependency>
<dependency type="executable" location="extensions">simplestyle.py</dependency>
<dependency type="executable" location="extensions">inkex.py</dependency>
<param name="what" type="float" min="-100" _gui-text="Keft in 1/10 mm.">0.</param>
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="FabLab Chemnitz">
<submenu _name="Modify existing Path(s)" />
</submenu>
</effects-menu>
</effect>
<script>
<command reldir="extensions" interpreter="python">fablabchemnitz_add_kerf_width_offset.py</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,87 @@
#!/usr/bin/env python
# These two lines are only needed if you don't put the script directly into
# the installation directory
import sys
import simplestyle # will be needed here for styles support
sys.path.append('/usr/share/inkscape/extensions')
# We will use the inkex module with the predefined Effect base class.
import inkex
import fablabchemnitz_metaext
class AddKerf(inkex.Effect):
"""
An Inkscape extension which joins multiple lines in one object and adds
kerf to it.
"""
def __init__(self):
"""
Constructor.
"""
# Call the base class constructor.
inkex.Effect.__init__(self)
# Define string option "--what" with "-w" shortcut and default value "World".
# TODO: better name
self.OptionParser.add_option('-w', '--what', action = 'store',
type = 'float', dest = 'what', default = '0.0',
help = 'Kerf in 1/10 mm.')
def set_appropriate_width(self, kerf_in_mm):
found = False
for _, node in self.selected.iteritems():
if node.tag == inkex.addNS('g', 'svg'):
inkex.error("Can't add kerf to a group, please ungroup first.")
if node.tag == inkex.addNS('path', 'svg'):
style = {'stroke-width': kerf_in_mm, 'fill': 'none',
'stroke':'#000000'}
style = simplestyle.formatStyle(style)
node.set('style', style)
found = True
return found
def effect(self):
"""% mod
Effect behaviour.
"""
# Get script's "--what" option value.
what = self.options.what / 10.
negative_kerf = False
if what < 0.:
what = -what
negative_kerf = True
kerf_in_mm = self.unittouu(str(what) + " mm")
operation_list = ["StrokeToPath", "SelectionUnion",
"SelectionBreakApart", "SelectionUnion", "SelectionBreakApart"]
if negative_kerf:
operation_list[-2] = "SelectionIntersect"
join_ext = fablabchemnitz_metaext.MetaEffect(operation_list)
if not self.set_appropriate_width(kerf_in_mm):
objectify = fablabchemnitz_metaext.MetaEffect(["ObjectToPath"])
objectify.effect(self.document, self.selected, self.doc_ids)
if not self.set_appropriate_width(kerf_in_mm):
inkex.error("Didn't found any selected path, breaking")
return
join_ext.effect(self.document, self.selected, self.doc_ids)
for _, node in self.selected.iteritems():
#inkex.debug("node %s" % inkex.etree.tostring(node))
if node.tag == inkex.addNS('path', 'svg'):
new_width = self.unittouu("0.5mm")
colour = '#ff0000' if negative_kerf else '#000000'
style = {'stroke-width': new_width, 'fill': 'none',
'stroke': colour}
style = simplestyle.formatStyle(style)
node.set('style', style)
# inkex.debug("node %s" % inkex.etree.tostring(node))
# Create effect instance and apply it.
effect = AddKerf()
effect.affect()

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<_name>AI compatible EPS output</_name>
<id>fablabchemnitz.de.ai_eps_output</id>
<dependency type="executable" location="extensions">fablabchemnitz_ai_eps_output.py</dependency>
<output>
<extension>.eps</extension>
<mimetype>application/eps</mimetype>
<_filetypename>Encapsulated PostScript - AI compatible (*.eps)</_filetypename>
<_filetypetooltip>Adobe Illustrator 7 compatible EPS</_filetypetooltip>
</output>
<script>
<command reldir="extensions" interpreter="python">fablabchemnitz_ai_eps_output.py</command>
</script>
</inkscape-extension>

File diff suppressed because it is too large Load Diff

195
fablabchemnitz_apollon.py Normal file
View File

@ -0,0 +1,195 @@
#!/usr/bin/python3
# Generate Apollonian Gaskets -- the math part.
# Copyright (c) 2014 Ludger Sandig
# This file is part of apollon.
# Apollon is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Apollon is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Apollon. If not, see <http://www.gnu.org/licenses/>.
from cmath import *
import random
class Circle(object):
"""
A circle represented by center point as complex number and radius.
"""
def __init__ ( self, mx, my, r ):
"""
@param mx: x center coordinate
@type mx: int or float
@param my: y center coordinate
@type my: int or float
@param r: radius
@type r: int or float
"""
self.r = r
self.m = (mx +my*1j)
def __repr__ ( self ):
"""
Pretty printing
"""
return "Circle( self, %s, %s, %s )" % (self.m.real, self.m.imag, self.r)
def __str__ ( self ):
"""
Pretty printing
"""
return "Circle x:%.3f y:%.3f r:%.3f [cur:%.3f]" % (self.m.real, self.m.imag, self.r.real, self.curvature().real)
def curvature (self):
"""
Get circle's curvature.
@rtype: float
@return: Curvature of the circle.
"""
return 1/self.r
def outerTangentCircle( circle1, circle2, circle3 ):
"""
Takes three externally tangent circles and calculates the fourth one enclosing them.
@param circle1: first circle
@param circle2: second circle
@param circle3: third circle
@type circle1: L{Circle}
@type circle2: L{Circle}
@type circle3: L{Circle}
@return: The enclosing circle
@rtype: L{Circle}
"""
cur1 = circle1.curvature()
cur2 = circle2.curvature()
cur3 = circle3.curvature()
m1 = circle1.m
m2 = circle2.m
m3 = circle3.m
cur4 = -2 * sqrt( cur1*cur2 + cur2*cur3 + cur1 * cur3 ) + cur1 + cur2 + cur3
m4 = ( -2 * sqrt( cur1*m1*cur2*m2 + cur2*m2*cur3*m3 + cur1*m1*cur3*m3 ) + cur1*m1 + cur2*m2 + cur3*m3 ) / cur4
circle4 = Circle( m4.real, m4.imag, 1/cur4 )
return circle4
def tangentCirclesFromRadii( r2, r3, r4 ):
"""
Takes three radii and calculates the corresponding externally
tangent circles as well as a fourth one enclosing them. The enclosing
circle is the first one.
@param r2, r3, r4: Radii of the circles to calculate
@type r2: int or float
@type r3: int or float
@type r4: int or float
@return: The four circles, where the first one is the enclosing one.
@rtype: (L{Circle}, L{Circle}, L{Circle}, L{Circle})
"""
circle2 = Circle( 0, 0, r2 )
circle3 = Circle( r2 + r3, 0, r3 )
m4x = (r2*r2 + r2*r4 + r2*r3 - r3*r4) / (r2 + r3)
m4y = sqrt( (r2 + r4) * (r2 + r4) - m4x*m4x )
circle4 = Circle( m4x, m4y, r4 )
circle1 = outerTangentCircle( circle2, circle3, circle4 )
return ( circle1, circle2, circle3, circle4 )
def secondSolution( fixed, c1, c2, c3 ):
"""
If given four tangent circles, calculate the other one that is tangent
to the last three.
@param fixed: The fixed circle touches the other three, but not
the one to be calculated.
@param c1, c2, c3: Three circles to which the other tangent circle
is to be calculated.
@type fixed: L{Circle}
@type c1: L{Circle}
@type c2: L{Circle}
@type c3: L{Circle}
@return: The circle.
@rtype: L{Circle}
"""
curf = fixed.curvature()
cur1 = c1.curvature()
cur2 = c2.curvature()
cur3 = c3.curvature()
curn = 2 * (cur1 + cur2 + cur3) - curf
mn = (2 * (cur1*c1.m + cur2*c2.m + cur3*c3.m) - curf*fixed.m ) / curn
return Circle( mn.real, mn.imag, 1/curn )
class ApollonianGasket(object):
"""
Container for an Apollonian Gasket.
"""
def __init__(self, c1, c2, c3):
"""
Creates a basic apollonian Gasket with four circles.
@param c1, c2, c3: The curvatures of the three inner circles of the
starting set (i.e. depth 0 of the recursion). The fourth,
enclosing circle will be calculated from them.
@type c1: int or float
@type c2: int or float
@type c3: int or float
"""
self.start = tangentCirclesFromRadii( 1/c1, 1/c2, 1/c3 )
self.genCircles = list(self.start)
def recurse(self, circles, depth, maxDepth):
"""Recursively calculate the smaller circles of the AG up to the
given depth. Note that for depth n we get 2*3^{n+1} circles.
@param maxDepth: Maximal depth of the recursion.
@type maxDepth: int
@param circles: 4-Tuple of circles for which the second
solutions are calculated
@type circles: (L{Circle}, L{Circle}, L{Circle}, L{Circle})
@param depth: Current depth
@type depth: int
"""
if( depth == maxDepth ):
return
(c1, c2, c3, c4) = circles
if( depth == 0 ):
# First recursive step, this is the only time we need to
# calculate 4 new circles.
del self.genCircles[4:]
cspecial = secondSolution( c1, c2, c3, c4 )
self.genCircles.append( cspecial )
self.recurse( (cspecial, c2, c3, c4), 1, maxDepth )
cn2 = secondSolution( c2, c1, c3, c4 )
self.genCircles.append( cn2 )
cn3 = secondSolution( c3, c1, c2, c4 )
self.genCircles.append( cn3 )
cn4 = secondSolution( c4, c1, c2, c3 )
self.genCircles.append( cn4 )
self.recurse( (cn2, c1, c3, c4), depth+1, maxDepth )
self.recurse( (cn3, c1, c2, c4), depth+1, maxDepth )
self.recurse( (cn4, c1, c2, c3), depth+1, maxDepth )
def generate(self, depth):
"""
Wrapper for the recurse function. Generate the AG,
@param depth: Recursion depth of the Gasket
@type depth: int
"""
self.recurse(self.start, 0, depth)

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<inkscape-extension xmlns="http://www.inkscape.org/namespace/inkscape/extension">
<!-- _name must have same name as .py file but capitalise it. Shows on Menu this way-->
<_name>Apollonian Gasket</_name>
<!-- id should be unique. Associates entered values with this menu -->
<id>fablabchemnitz.de.apollonian</id>
<!-- mention a dependency here and will check for existence (optional)-->
<dependency type="executable" location="extensions">fablabchemnitz_apollonian.py</dependency>
<dependency type="executable" location="extensions">simplestyle.py</dependency>
<!-- start notebook -->
<param name='active-tab' type="notebook">
<!-- one per page(tab) - unique names. Can discover which page in program-->
<page name="title" _gui-text="Settings">
<param name="depth" type="int" min="2" max="7" _gui-text="Depth">3</param>
<_param name="curvatures" type="description" xml:space="preserve">------------------------------</_param>
<param name="c1" type="float" min="0.1" max="10.0" precision="2" _gui-text="c1">2.0</param>
<param name="c2" type="float" min="0.1" max="10.0" precision="2" _gui-text="c2">3.0</param>
<param name="c3" type="float" min="0.1" max="10.0" precision="2" _gui-text="c3">3.0</param>
<_param name="help" type="description" xml:space="preserve">------------------------------</_param>
<param name="shrink" type="boolean" _gui-text="shrink circles for cutting">true</param>
</page>
<!-- next tab -->
<page name="Usage1" _gui-text="Usage">
<!-- space:preserve read for neat layout -->
<_param name="use1" type="description" xml:space="preserve">
Make an apollonian gasket:
Depth = depth in search tree
c1,c2,c3 = curvatures of first 3 osculating circles
See https://en.wikipedia.org/wiki/Apollonian_gasket
for details of construction.
</_param>
</page>
<page name="Usage2" _gui-text="Help">
<_param name="use2" type="description" xml:space="preserve">
No help needed.
</_param>
</page>
</param>
<!-- classify which menu it appears under - can be new name -->
<effect>
<object-type>all</object-type>
<effects-menu>
<submenu _name="FabLab Chemnitz">
<submenu _name="Shape/Pattern from Generator"/>
</submenu>
</effects-menu>
</effect>
<!-- py file again -->
<script>
<command reldir="extensions" interpreter="python">fablabchemnitz_apollonian.py</command>
</script>
</inkscape-extension>

View File

@ -0,0 +1,153 @@
#!$HOME/anaconda/bin/python
# -*- coding: utf-8 -*-
'''
Ripped from template.py
- makes an apollonian gasket
'''
import inkex # Required
import simplestyle # will be needed here for styles support
import fablabchemnitz_apolloniangasket_func
__version__ = '0.0'
inkex.localize()
### Your helper functions go here
def cplxs2pts(zs):
tt = []
for z in zs:
tt.extend([z.real,z.imag])
return tt
def draw_SVG_circle(parent, r, cx, cy, name):
" structre an SVG circle entity under parent "
circ_attribs = { 'cx': str(cx), 'cy': str(cy),
'r': str(r),
inkex.addNS('label','inkscape'): name}
circle = inkex.etree.SubElement(parent, inkex.addNS('circle','svg'), circ_attribs )
class Myextension(inkex.Effect): # choose a better name
def __init__(self):
" define how the options are mapped from the inx file "
inkex.Effect.__init__(self) # initialize the super class
# list of parameters defined in the .inx file
self.OptionParser.add_option("-d", "--depth",
action="store", type="int",
dest="depth", default=3,
help="command line help")
self.OptionParser.add_option("", "--c1",
action="store", type="float",
dest="c1", default=2.0,
help="command line help")
self.OptionParser.add_option("", "--c2",
action="store", type="float",
dest="c2", default=3.0,
help="command line help")
self.OptionParser.add_option("", "--c3",
action="store", type="float",
dest="c3", default=3.0,
help="command line help")
self.OptionParser.add_option("-x", "--shrink",
action="store", type="inkbool",
dest="shrink", default=True,
help="command line help")
# here so we can have tabs - but we do not use it directly - else error
self.OptionParser.add_option("", "--active-tab",
action="store", type="string",
dest="active_tab", default='title', # use a legitmate default
help="Active tab.")
def calc_unit_factor(self):
""" return the scale factor for all dimension conversions.
- The document units are always irrelevant as
everything in inkscape is expected to be in 90dpi pixel units
"""
# namedView = self.document.getroot().find(inkex.addNS('namedview', 'sodipodi'))
# doc_units = self.getUnittouu(str(1.0) + namedView.get(inkex.addNS('document-units', 'inkscape')))
unit_factor = self.getUnittouu(str(1.0) + self.options.units)
return unit_factor
### -------------------------------------------------------------------
### Main function and is called when the extension is run.
def effect(self):
#set up path styles
path_stroke = '#DD0000' # take color from tab3
path_fill = 'none' # no fill - just a line
path_stroke_width = 1. # can also be in form '0.6mm'
page_id = self.options.active_tab # sometimes wrong the very first time
style_curve = { 'stroke': path_stroke,
'fill': 'none',
'stroke-width': path_stroke_width }
# This finds center of current view in inkscape
t = 'translate(%s,%s)' % (self.view_center[0], self.view_center[1] )
# add a group to the document's current layer
#all the circles inherit style from this group
g_attribs = { inkex.addNS('label','inkscape'): 'zengon' + "_%d"%(self.options.depth),
inkex.addNS('transform-center-x','inkscape'): str(0),
inkex.addNS('transform-center-y','inkscape'): str(0),
'transform': t,
'style' : simplestyle.formatStyle(style_curve),
'info':'N: '}
topgroup = inkex.etree.SubElement(self.current_layer, 'g', g_attribs )
circles = fablabchemnitz_apolloniangasket_func.main(c1=self.options.c1,
c2=self.options.c2,
c3=self.options.c3,
depth=self.options.depth)
#shrink the circles so they don't touch
#useful for laser cutting
if self.options.shrink:
circles = circles[1:]
for cc in circles:
cc.r = abs(cc.r)
if cc.r >.5:
cc.r -= .1
else:
cc.r *= .9
scale_factor = 200
for c in circles:
cx, cy, r = c.m.real, c.m.imag, abs(c.r)
#rescale and add circle to document
cx, cy, r = scale_factor*cx , scale_factor*cy, scale_factor*r
draw_SVG_circle(topgroup,r,cx,cy,'apo')
if __name__ == '__main__':
e = Myextension()
e.affect()

View File

@ -0,0 +1,125 @@
#! /usr/bin/python3
# Command line program to create svg apollonian circles
# Copyright (c) 2014 Ludger Sandig
# This file is part of apollon.
# Apollon is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# Apollon is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with Apollon. If not, see <http://www.gnu.org/licenses/>.
#import sys
import math
from fablabchemnitz_apollon import ApollonianGasket
#from coloring import ColorMap, ColorScheme
def ag_to_svg(circles, colors, tresh=0.00005):
"""
Convert a list of circles to svg, optionally color them.
@param circles: A list of L{Circle}s
@param colors: A L{ColorMap} object
@param tresh: Only circles with a radius greater than the product of tresh and maximal radius are saved
"""
svg = []
tresh = .000005
print '>>', tresh
# Find the biggest circle, which hopefully is the enclosing one
# and has a negative radius because of this. Note that this does
# not have to be the case if we picked an unlucky set of radii at
# the start. If that was the case, we're screwed now.
big = min(circles, key=lambda c: c.r.real)
# Move biggest circle to front so it gets drawn first
circles.remove(big)
circles.insert(0, big)
if big.r.real < 0:
# Bounding box from biggest circle, lower left corner and two
# times the radius as width
corner = big.m - ( abs(big.r) + abs(big.r) * 1j )
vbwidth = abs(big.r)*2
width = 500 # Hardcoded!
# Line width independent of circle size
lw = (vbwidth/width)
svg.append('<svg xmlns="http://www.w3.org/2000/svg" width="%f" height="%f" viewBox="%f %f %f %f">\n' % (width, width, corner.real, corner.imag, vbwidth, vbwidth))
# Keep stroke width relative
svg.append('<g stroke-width="%f">\n' % lw)
# Iterate through circle list, circles with radius<radmin
# will not be saved because they are too small for printing.
radmin = tresh * abs(big.r)
print radmin
for c in circles:
if abs(c.r) > radmin:
fill = colors.color_for(abs(c.r))
svg.append(( '<circle cx="%f" cy="%f" r="%f" fill="%s" stroke="black"/>\n' % (c.m.real, c.m.imag, abs(c.r), fill)))
svg.append('</g>\n')
svg.append('</svg>\n')
return ''.join(svg)
def impossible_combination(c1, c2, c3):
# If any curvatures x, y, z satisfy the equation
# x = 2*sqrt(y*z) + y + z
# then no fourth enclosing circle can be genereated, because it
# would be a line.
# We need to see for c1, c2, c3 if they could be "x".
impossible = False
sets = [(c1,c2,c3), (c2,c3,c1), (c3,c1,c2)]
for (x, y, z) in sets:
if x == 2*math.sqrt(y*z) + y + z:
impossible = True
return impossible
def main(c1=3.,c2=2.,c3=2.,depth=5):
# Sanity checks
for c in [c1, c2,c3]:
if c == 0:
print("Error: curvature or radius can't be 0")
exit(1)
if impossible_combination(c1, c2, c3):
print("Error: no apollonian gasket possible for these curvatures")
exit(1)
ag = ApollonianGasket(c1, c2, c3)
ag.generate(depth)
# Get smallest and biggest radius
smallest = abs(min(ag.genCircles, key=lambda c: abs(c.r.real)).r.real)
biggest = abs(max(ag.genCircles, key=lambda c: abs(c.r.real)).r.real)
return ag.genCircles

Some files were not shown because too many files have changed in this diff Show More