Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

fixes

  • Loading branch information...
commit fbefc91baadf08a1ce195a0ab3101ff6b54c95b1 1 parent ce5af86
@ahmetcemturan authored
View
223 .idea/workspace.xml
@@ -3,10 +3,11 @@
<component name="ChangeListManager">
<list default="true" id="776eaf14-a295-457b-b16b-2e308ade59f0" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/fabmetheus_utilities/archive.py" afterPath="$PROJECT_DIR$/fabmetheus_utilities/archive.py" />
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py" afterPath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py" afterPath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py" afterPath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py" afterPath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py" afterPath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py" afterPath="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py" />
</list>
<ignored path="SFACT.iws" />
<ignored path=".idea/workspace.xml" />
@@ -29,28 +30,37 @@
</component>
<component name="FileEditorManager">
<leaf>
- <file leaf-file-name="xml_simple_writer.py" pinned="false" current="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/fabmetheus_utilities/xml_simple_writer.py">
+ <file leaf-file-name="preface.py" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
+ <state line="205" column="103" selection-start="9895" selection-end="9895" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="preface.py" pinned="false" current="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py">
+ <file leaf-file-name="speed.py" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="199" column="0" selection-start="9420" selection-end="9420" vertical-scroll-proportion="0.0">
+ <state line="291" column="31" selection-start="15304" selection-end="15304" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
- <file leaf-file-name="dwindle.py" pinned="false" current="false" current-in-tab="false">
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py">
+ <file leaf-file-name="raft.py" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="228" column="0" selection-start="11146" selection-end="11146" vertical-scroll-proportion="-10.461538">
+ <state line="627" column="42" selection-start="33879" selection-end="33879" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="settings.py" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/fabmetheus_utilities/settings.py">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -59,7 +69,7 @@
<file leaf-file-name="dimension.py" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="435" column="0" selection-start="21965" selection-end="21965" vertical-scroll-proportion="0.5477308">
+ <state line="231" column="78" selection-start="12583" selection-end="12605" vertical-scroll-proportion="0.33278957">
<folding />
</state>
</provider>
@@ -79,22 +89,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
- <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py" />
- <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py" />
- <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py" />
- <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py" />
- <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py" />
- <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py" />
<option value="$PROJECT_DIR$/fabmetheus_utilities/archive.py" />
+ <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py" />
+ <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py" />
+ <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py" />
+ <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py" />
+ <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py" />
+ <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py" />
+ <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py" />
<option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py" />
- <option value="$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py" />
</list>
</option>
</component>
@@ -210,6 +220,24 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
+ <option name="myItemId" value="skeinforge_application" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="profiles" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ </PATH>
+ <PATH>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="SFACT" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
+ <option name="myItemId" value="SFACT" />
+ <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+ </PATH_ELEMENT>
+ <PATH_ELEMENT>
<option name="myItemId" value="sfact_profiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
@@ -230,14 +258,19 @@
</PATH>
</subPane>
</pane>
- <pane id="Scope" />
<pane id="Favorites" />
+ <pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="recentsLimit" value="5" />
</component>
+ <component name="RecentsManager">
+ <key name="CopyFile.RECENT_KEYS">
+ <recent name="C:\Users\Ahmet\Documents\GitHub\SFACT\skeinforge_application\skeinforge_plugins\craft_plugins" />
+ </key>
+ </component>
<component name="RunManager" selected="Python.sfact">
<configuration default="false" name="sfact" type="PythonConfigurationType" factoryName="Python" temporary="true">
<option name="INTERPRETER_OPTIONS" value="" />
@@ -351,8 +384,8 @@
<servers />
</component>
<component name="ToolWindowManager">
- <frame x="-8" y="-8" width="1936" height="1056" extended-state="1" />
- <editor active="true" />
+ <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
+ <editor active="false" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32352942" sideWeight="0.0" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3292683" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
@@ -360,11 +393,11 @@
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2105541" sideWeight="0.74183005" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25816995" sideWeight="0.9991143" order="2" side_tool="false" content_ui="tabs" />
+ <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25816995" sideWeight="0.9991143" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32897604" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
- <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.4956427" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.34640524" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
@@ -415,35 +448,39 @@
<breakpoints>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py</url>
- <line>218</line>
+ <line>219</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py</url>
- <line>242</line>
+ <line>246</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>701</line>
+ <line>702</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>977</line>
+ <line>975</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>976</line>
+ <line>974</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>975</line>
+ <line>973</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>979</line>
+ <line>977</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>980</line>
+ <line>978</line>
+ </line-breakpoint>
+ <line-breakpoint enabled="true" type="python-line">
+ <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
+ <line>979</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
@@ -451,7 +488,7 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>983</line>
+ <line>984</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
@@ -463,43 +500,43 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>990</line>
+ <line>989</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>991</line>
+ <line>987</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>989</line>
+ <line>985</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>987</line>
+ <line>983</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>985</line>
+ <line>982</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>984</line>
+ <line>980</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>982</line>
+ <line>976</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>978</line>
+ <line>972</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>974</line>
+ <line>990</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>992</line>
+ <line>991</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
@@ -507,7 +544,7 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>995</line>
+ <line>992</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
@@ -515,6 +552,10 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
+ <line>995</line>
+ </line-breakpoint>
+ <line-breakpoint enabled="true" type="python-line">
+ <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
<line>996</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
@@ -535,14 +576,6 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>1001</line>
- </line-breakpoint>
- <line-breakpoint enabled="true" type="python-line">
- <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
- <line>1002</line>
- </line-breakpoint>
- <line-breakpoint enabled="true" type="python-line">
- <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
<line>472</line>
</line-breakpoint>
<line-breakpoint enabled="true" type="python-line">
@@ -645,98 +678,114 @@
<url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py</url>
<line>231</line>
</line-breakpoint>
+ <line-breakpoint enabled="true" type="python-line">
+ <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py</url>
+ <line>638</line>
+ </line-breakpoint>
+ <line-breakpoint enabled="true" type="python-line">
+ <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py</url>
+ <line>30</line>
+ </line-breakpoint>
+ <line-breakpoint enabled="true" type="python-line">
+ <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py</url>
+ <line>226</line>
+ </line-breakpoint>
+ <line-breakpoint enabled="true" type="python-line">
+ <url>file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py</url>
+ <line>229</line>
+ </line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
- <entry file="file://$PROJECT_DIR$/fabmetheus_utilities/settings.py">
+ <entry file="file://$PROJECT_DIR$/sfact.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="1172" column="0" selection-start="45165" selection-end="45165" vertical-scroll-proportion="0.33281735" />
+ <state line="12" column="58" selection-start="954" selection-end="954" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/runskeinforge.sh">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_utilities/skeinforge_craft.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="26" column="0" selection-start="674" selection-end="674" vertical-scroll-proportion="0.0" />
+ <state line="59" column="0" selection-start="2251" selection-end="2251" vertical-scroll-proportion="0.33282208" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/show_skeinforge.sh">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="8" column="0" selection-start="195" selection-end="195" vertical-scroll-proportion="0.0" />
+ <state line="118" column="37" selection-start="4718" selection-end="4718" vertical-scroll-proportion="0.24693252" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/terminal.sh">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="21" column="0" selection-start="598" selection-end="598" vertical-scroll-proportion="0.0" />
+ <state line="18" column="0" selection-start="1434" selection-end="1434" vertical-scroll-proportion="-1.9953052" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="14" column="92" selection-start="1018" selection-end="1018" vertical-scroll-proportion="0.020531401" />
+ <state line="23" column="32" selection-start="868" selection-end="868" vertical-scroll-proportion="-1.0429448" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skFrontend.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+ <state line="134" column="0" selection-start="6319" selection-end="6319" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
+ <state line="113" column="0" selection-start="4622" selection-end="4622" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_utilities/skeinforge_craft.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="59" column="0" selection-start="2251" selection-end="2251" vertical-scroll-proportion="0.0" />
+ <state line="172" column="36" selection-start="7136" selection-end="7136" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/fabmetheus_utilities/archive.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="20" column="0" selection-start="534" selection-end="534" vertical-scroll-proportion="0.0" />
+ <state line="31" column="65" selection-start="1700" selection-end="1700" vertical-scroll-proportion="0.0">
+ <folding />
+ </state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="897" column="118" selection-start="48209" selection-end="48269" vertical-scroll-proportion="0.019406393">
- <folding />
- </state>
+ <state line="205" column="103" selection-start="9895" selection-end="9895" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="123" column="88" selection-start="6427" selection-end="6480" vertical-scroll-proportion="0.64041096" />
+ <state line="291" column="31" selection-start="15304" selection-end="15304" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="238" column="44" selection-start="10185" selection-end="10185" vertical-scroll-proportion="0.31294116">
+ <state line="627" column="42" selection-start="33879" selection-end="33879" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/fabmetheus_utilities/xml_simple_writer.py">
+ <entry file="file://$PROJECT_DIR$/fabmetheus_utilities/settings.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
- <folding />
- </state>
+ <state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0" />
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="199" column="0" selection-start="9420" selection-end="9420" vertical-scroll-proportion="0.0">
+ <state line="445" column="136" selection-start="21406" selection-end="21438" vertical-scroll-proportion="3.2214613">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py">
+ <entry file="file://$PROJECT_DIR$/skeinforge_application/profiles/dimension2.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="228" column="0" selection-start="11146" selection-end="11146" vertical-scroll-proportion="-10.461538">
+ <state line="7" column="18" selection-start="395" selection-end="395" vertical-scroll-proportion="0.18622848">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py">
<provider selected="true" editor-type-id="text-editor">
- <state line="435" column="0" selection-start="21965" selection-end="21965" vertical-scroll-proportion="0.5477308">
+ <state line="231" column="78" selection-start="12583" selection-end="12605" vertical-scroll-proportion="0.33278957">
<folding />
</state>
</provider>
View
448 skeinforge_application/profiles/dimension2.py
@@ -0,0 +1,448 @@
+#! /usr/bin/env python
+"""
+This page is in the table of contents.
+Dimension adds Adrian's extruder distance E value so firmware does not have to calculate it on it's own and can set the extruder speed in relation to the distance that needs to be extruded. Some printers don't support this. Extruder distance is described at:
+
+http://blog.reprap.org/2009/05/4d-printing.html
+
+and in Erik de Bruijn's conversion script page at:
+
+http://objects.reprap.org/wiki/3D-to-5D-Gcode.php
+
+The dimension manual page is at:
+
+http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Dimension
+
+Nophead wrote an excellent article on how to set the filament parameters:
+
+http://hydraraptor.blogspot.com/2011/03/spot-on-flow-rate.html
+
+==Operation==
+The default 'Activate Dimension' checkbox is off. When it is on, the functions described below will work, when it is off, the functions will not be called.
+
+==Settings==
+===Extrusion Distance Format Choice===
+Default is 'Absolute Extrusion Distance' because in Adrian's description the distance is absolute. In future, because the relative distances are smaller than the cumulative absolute distances, hopefully the firmware will be able to use relative distance.
+
+====Absolute Extrusion Distance====
+When selected, the extrusion distance output will be the total extrusion distance to that gcode line.
+
+====Relative Extrusion Distance====
+When selected, the extrusion distance output will be the extrusion distance from the last gcode line.
+
+===Extruder Retraction Speed===
+Default is 13.3 mm/s.
+
+Defines the extruder retraction feed rate. A high value will allow the retraction operation to complete before much material oozes out. If your extruder can handle it, this value should be much larger than your feed rate.
+
+As an example, I have a feed rate of 48 mm/s and a 'Extruder Retraction Speed' of 150 mm/s.
+
+===Filament===
+====Filament Diameter====
+Default is 2.8 millimeters.
+
+Defines the filament diameter.
+
+====Filament Packing Density====
+Default is 0.85. This is for ABS.
+
+Defines the effective filament packing density.
+
+The default value is so low for ABS because ABS is relatively soft and with a pinch wheel extruder the teeth of the pinch dig in farther, so it sees a smaller effective diameter. With a hard plastic like PLA the teeth of the pinch wheel don't dig in as far, so it sees a larger effective diameter, so feeds faster, so for PLA the value should be around 0.97. This is with Wade's hobbed bolt. The effect is less significant with larger pinch wheels.
+
+Overall, you'll have to find the optimal filament packing density by experiment.
+
+===Maximum E Value before Reset===
+Default: 91234.0
+
+Defines the maximum E value before it is reset with the 'G92 E0' command line. The reason it is reset only after the maximum E value is reached is because at least one firmware takes time to reset. The problem with waiting until the E value is high before resetting is that more characters are sent. So if your firmware takes a lot of time to reset, set this parameter to a high value, if it doesn't set this parameter to a low value or even zero.
+
+===Minimum Travel for Retraction===
+Default: 1.0 millimeter
+
+Defines the minimum distance that the extruder head has to travel from the end of one thread to the beginning of another, in order to trigger the extruder retraction. Setting this to a high value means the extruder will retract only occasionally, setting it to a low value means the extruder will retract most of the time.
+
+===Retract Within Island===
+Default is off.
+
+When selected, retraction will work even when the next thread is within the same island. If it is not selected, retraction will only work when crossing a boundary.
+
+===Retraction Distance===
+Default is zero.
+
+Defines the amount the extruder retracts (sucks back) the extruded filament whenever an extruder stop is commanded. Using this seems to help prevent stringing. e.g. If set to 10 the extruder reverses the distance required to pull back 10mm of filament. In fact this does not actually happen but if you set this distance by trial and error you can get to a point where there is very little ooze from the extruder when it stops which is not normally the case.
+
+===Restart Extra Distance===
+Default is zero.
+
+Defines the restart extra distance when the thread restarts. The restart distance will be the retraction distance plus the restart extra distance.
+
+If this is greater than zero when the extruder starts this distance is added to the retract value giving extra filament. It can be a negative value in which case it is subtracted from the retraction distance. On some Repstrap machines a negative value can stop the build up of plastic that can occur at the start of edges.
+
+==Examples==
+The following examples dimension the file Screw Holder Bottom.stl. The examples are run in a terminal in the folder which contains Screw Holder Bottom.stl and dimension.py.
+
+> python dimension.py
+This brings up the dimension dialog.
+
+> python dimension.py Screw Holder Bottom.stl
+The dimension tool is parsing the file:
+Screw Holder Bottom.stl
+..
+The dimension tool has created the file:
+.. Screw Holder Bottom_dimension.gcode
+
+"""
+
+#Init has to be imported first because it has code to workaround the python bug where relative imports don't work if the module is imported as a main module.
+import __init__
+
+from datetime import date
+from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret
+from fabmetheus_utilities.geometry.solids import triangle_mesh
+from fabmetheus_utilities import archive
+from fabmetheus_utilities import euclidean
+from fabmetheus_utilities import gcodec
+from fabmetheus_utilities import intercircle
+from fabmetheus_utilities import settings
+from skeinforge_application.skeinforge_utilities import skeinforge_craft
+from skeinforge_application.skeinforge_utilities import skeinforge_polyfile
+from skeinforge_application.skeinforge_utilities import skeinforge_profile
+import math
+import os
+import sys
+
+
+__author__ = 'Enrique Perez (perez_enrique@yahoo.com)'
+__date__ = '$Date: 2008/02/05 $'
+__license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html'
+
+
+def getCraftedText( fileName, gcodeText = '', repository=None):
+ 'Dimension a gcode file or text.'
+ return getCraftedTextFromText( archive.getTextIfEmpty(fileName, gcodeText), repository )
+
+def getCraftedTextFromText(gcodeText, repository=None):
+ 'Dimension a gcode text.'
+ if gcodec.isProcedureDoneOrFileIsEmpty( gcodeText, 'dimension'):
+ return gcodeText
+ if repository is None:
+ repository = settings.getReadRepository( DimensionRepository() )
+ if not repository.activateDimension.value:
+ return gcodeText
+ return DimensionSkein().getCraftedGcode(gcodeText, repository)
+
+def getNewRepository():
+ 'Get new repository.'
+ return DimensionRepository()
+
+def writeOutput(fileName, shouldAnalyze=True):
+ 'Dimension a gcode file.'
+ skeinforge_craft.writeChainTextWithNounMessage(fileName, 'dimension', shouldAnalyze)
+
+
+class DimensionRepository:
+ 'A class to handle the dimension settings.'
+ def __init__(self):
+ 'Set the default settings, execute title & settings fileName.'
+ skeinforge_profile.addListsToCraftTypeRepository('skeinforge_application.skeinforge_plugins.craft_plugins.dimension.html', self )
+ self.fileNameInput = settings.FileNameInput().getFromFileName( fabmetheus_interpret.getGNUTranslatorGcodeFileTypeTuples(), 'Open File for Dimension', self, '')
+ self.openWikiManualHelpPage = settings.HelpPage().getOpenFromAbsolute('http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Dimension')
+ self.activateDimension = settings.BooleanSetting().getFromValue('Activate Volumetric Extrusion (Stepper driven Extruders)', self, True )
+ extrusionDistanceFormatLatentStringVar = settings.LatentStringVar()
+ self.extrusionDistanceFormatChoiceLabel = settings.LabelDisplay().getFromName('Extrusion Distance Format Choice: ', self )
+ settings.Radio().getFromRadio( extrusionDistanceFormatLatentStringVar, 'Absolute Extrusion Distance', self, True )
+ self.relativeExtrusionDistance = settings.Radio().getFromRadio( extrusionDistanceFormatLatentStringVar, 'Relative Extrusion Distance', self, False )
+ self.extruderRetractionSpeed = settings.FloatSpin().getFromValue( 10, 'Extruder Retraction Speed (mm/s):', self, 50, 30 )
+ settings.LabelSeparator().getFromRepository(self)
+ settings.LabelDisplay().getFromName('- Filament -', self )
+ self.filamentDiameter = settings.FloatSpin().getFromValue(1.0, 'Filament Diameter (mm):', self, 6.0, 2.8)
+ self.filamentPackingDensity = settings.FloatSpin().getFromValue(0.5, 'E-Steps corrector:', self, 1.5, 1.0)
+ self.activateCalibration = settings.BooleanSetting().getFromValue('Are You Calibrating?', self, False )
+ self.MeasuredXSection = settings.FloatSpin().getFromValue(0.20, 'Measured Width of Extrusion:', self, 2.0, 0.5)
+ settings.LabelSeparator().getFromRepository(self)
+ settings.LabelDisplay().getFromName('- Filament Retraction Settings -', self )
+ self.maximumEValueBeforeReset = settings.FloatSpin().getFromValue(0.0, 'Maximum E Value before Reset (float):', self, 999999.9, 91234.0)
+ self.minimumTravelForRetraction = settings.FloatSpin().getFromValue(0.0, 'Minimum Travelmove after Retraction (millimeters):', self, 10.0, 4.0)
+ self.retractWithinIsland = settings.BooleanSetting().getFromValue('Retract Within Island', self, False)
+ self.retractionDistance = settings.FloatSpin().getFromValue( 0.0, 'Retraction Distance (millimeters):', self, 3.0, 1.0 )
+ self.restartExtraDistance = settings.FloatSpin().getFromValue( 0.0, 'Restart Extra Distance (millimeters):', self, 1.0, 0.1 )
+ self.executeTitle = 'Dimension'
+
+ def execute(self):
+ 'Dimension button has been clicked.'
+ fileNames = skeinforge_polyfile.getFileOrDirectoryTypesUnmodifiedGcode(self.fileNameInput.value, fabmetheus_interpret.getImportPluginFileNames(), self.fileNameInput.wasCancelled)
+ for fileName in fileNames:
+ writeOutput(fileName)
+
+
+class DimensionSkein:
+ 'A class to dimension a skein of extrusions.'
+ def __init__(self):
+ 'Initialize.'
+ self.absoluteDistanceMode = True
+ self.boundaryLayers = []
+ self.distanceFeedRate = gcodec.DistanceFeedRate()
+ self.feedRateMinute = None
+ self.isExtruderActive = False
+ self.layerIndex = -1
+ self.lineIndex = 0
+ self.maximumZFeedRatePerSecond = None
+ self.oldLocation = None
+ self.operatingFlowRate = None
+ self.retractionRatio = 1.0
+ self.totalExtrusionDistance = 0.0
+ self.travelFeedRatePerSecond = None
+ self.zDistanceRatio = 5.0
+ self.oldFlowRateString = None
+ self.layerHeight = 0
+ self.edgeWidth = 0
+ self.nozzleXsection = 0
+ self.flowRate = 0
+ self.extrusionReduction = 1
+# self.oldExtrusionDistance = 0
+# self.restartDistance = 0
+
+ def addLinearMoveExtrusionDistanceLine(self, extrusionDistance):
+ 'Get the extrusion distance string from the extrusion distance.'
+# The lines that are inserted before extrusion starts
+ if self.repository.extruderRetractionSpeed.value != 0.0:
+ retractionString = self.getExtrusionDistanceStringFromExtrusionDistance(extrusionDistance) +' F'+ self.extruderRetractionSpeedMinuteString
+# self.distanceFeedRate.output.write('G1 F%s\n' % self.extruderRetractionSpeedMinuteString)
+ self.distanceFeedRate.output.write('G1%s\n' % retractionString)
+# self.distanceFeedRate.output.write('G1 F%s\n' % self.distanceFeedRate.getRounded(self.feedRateMinute))
+
+ def getCraftedGcode(self, gcodeText, repository):
+ 'Parse gcode text and store the dimension gcode.'
+ self.repository = repository
+ filamentRadius = 0.5 * repository.filamentDiameter.value
+ filamentPackingArea = filamentRadius ** 2 * math.pi
+ self.minimumTravelForRetraction = self.repository.minimumTravelForRetraction.value
+ self.doubleMinimumTravelForRetraction = self.minimumTravelForRetraction + self.minimumTravelForRetraction
+ self.lines = archive.getTextLines(gcodeText)
+ self.parseInitialization()
+ if not self.repository.retractWithinIsland.value:
+ self.parseBoundaries()
+# self.flowScaleSixty = (((self.layerHeight+self.edgeWidth)/4)*((self.layerHeight+self.edgeWidth)/4)) * math.pi
+ self.flowScaleSixty = ((self.edgeWidth-self.layerHeight)*self.layerHeight)+(self.layerHeight/2)** math.pi
+
+ if repository.activateCalibration.value:
+ self.calibrationFactor = (4 * (self.repository.MeasuredXSection.value - self.edgeWidth))/((math.pi-4)*self.layerHeight+ 4* self.edgeWidth )+1
+ self.newfilamentPackingDensity = repository.filamentPackingDensity.value * self.calibrationFactor
+ print('***************E-Steps corrector Value (For Calibration)*********************:')
+ print('****E-Steps corrector Value (For Calibration) STEPPER EXTRUDERS ONLY :*******', self.newfilamentPackingDensity )
+ print('***************E-Steps corrector Value (For Calibration)*********************')
+ print('**********this created G-CODE is only for calculating The Value**************')
+ print('****Enter the Value into SFACT, uncheck the calibration box, RE-Skein********')
+ else :
+ self.calibrationFactor = repository.filamentPackingDensity.value
+ if self.calibrationFactor is None:
+ print('Measured extrusion width cant be 0, either un-check calibration or set measured width to what you have measured!')
+ if self.operatingFlowRate is None:
+ print('There is no operatingFlowRate so dimension will do nothing.')
+ return gcodeText
+# Calculate the extrusion volume
+ self.extrusionReduction = filamentPackingArea * self.calibrationFactor #todo comment out later
+# Retraction for fixed
+ self.restartDistance = self.repository.retractionDistance.value + self.repository.restartExtraDistance.value
+ self.extruderRetractionSpeedMinuteString = self.distanceFeedRate.getRounded(60.0 * self.repository.extruderRetractionSpeed.value)
+ if self.maximumZFeedRatePerSecond != None and self.travelFeedRatePerSecond != None:
+ self.zDistanceRatio = self.travelFeedRatePerSecond / self.maximumZFeedRatePerSecond
+ for lineIndex in xrange(self.lineIndex, len(self.lines)):
+ self.parseLine( lineIndex )
+ return self.distanceFeedRate.output.getvalue()
+
+ def getDimensionedArcMovement(self, line, splitLine):
+ 'Get a dimensioned arc movement.'
+ if self.oldLocation == None:
+ return line
+ relativeLocation = gcodec.getLocationFromSplitLine(self.oldLocation, splitLine)
+ self.oldLocation += relativeLocation
+ distance = gcodec.getArcDistance(relativeLocation, splitLine)
+ return line + self.getExtrusionDistanceString(distance, splitLine)
+
+ def getDimensionedLinearMovement( self, line, splitLine ):
+ 'Get a dimensioned linear movement.'
+ distance = 0.0
+ if self.absoluteDistanceMode:
+ location = gcodec.getLocationFromSplitLine(self.oldLocation, splitLine)
+ if self.oldLocation != None:
+ distance = abs( location - self.oldLocation )
+ self.oldLocation = location
+ else:
+ if self.oldLocation == None:
+ print('Warning: There was no absolute location when the G91 command was parsed, so the absolute location will be set to the origin.')
+ self.oldLocation = Vector3()
+ location = gcodec.getLocationFromSplitLine(None, splitLine)
+ distance = abs( location )
+ self.oldLocation += location
+ return line + self.getExtrusionDistanceString( distance, splitLine )
+
+ def getDistanceToNextThread(self, lineIndex):
+ 'Get the travel distance to the next thread.'
+ if self.oldLocation == None:
+ return None
+ isActive = False
+ location = self.oldLocation
+ for afterIndex in xrange(lineIndex + 1, len(self.lines)):
+ line = self.lines[afterIndex]
+ splitLine = gcodec.getSplitLineBeforeBracketSemicolon(line)
+ firstWord = gcodec.getFirstWord(splitLine)
+ if firstWord == 'G1':
+ if isActive:
+ if not self.repository.retractWithinIsland.value:
+ locationEnclosureIndex = self.getSmallestEnclosureIndex(location.dropAxis())
+ if locationEnclosureIndex != self.getSmallestEnclosureIndex(self.oldLocation.dropAxis()):
+ return None
+ locationMinusOld = location - self.oldLocation
+ xyTravel = abs(locationMinusOld.dropAxis())
+ zTravelMultiplied = locationMinusOld.z * self.zDistanceRatio
+ return math.sqrt(xyTravel * xyTravel + zTravelMultiplied * zTravelMultiplied)
+ location = gcodec.getLocationFromSplitLine(location, splitLine)
+ elif firstWord == 'M101':
+ isActive = True
+ elif firstWord == 'M103':
+ isActive = False
+ return None
+
+ def getExtrusionDistanceString( self, distance, splitLine ):
+ 'Get the extrusion distance string.'
+ self.feedRateMinute = gcodec.getFeedRateMinute( self.feedRateMinute, splitLine )
+ if not self.isExtruderActive:
+ return ''
+ if distance == 0.0:
+ return ''
+ if distance < 0.0:
+ print('Warning, the distance is less than zero in getExtrusionDistanceString in dimension; so there will not be an E value')
+ print(distance)
+ print(splitLine)
+ return ''
+ scaledFlowRate = self.flowRate * self.flowScaleSixty
+ return self.getExtrusionDistanceStringFromExtrusionDistance(scaledFlowRate/ self.extrusionReduction * distance)
+
+ def getExtrusionDistanceStringFromExtrusionDistance( self, extrusionDistance ):
+ 'Get the extrusion distance string from the extrusion distance.'
+ if self.repository.relativeExtrusionDistance.value:
+ return ' E' + self.distanceFeedRate.getRounded(extrusionDistance)
+ self.totalExtrusionDistance += extrusionDistance
+ return ' E' + self.distanceFeedRate.getRounded( self.totalExtrusionDistance )
+
+ def getRetractionRatio(self, lineIndex):
+ 'Get the retraction ratio.'
+ distanceToNextThread = self.getDistanceToNextThread(lineIndex)
+ if distanceToNextThread is None:
+ return 1.0
+ if distanceToNextThread >= self.doubleMinimumTravelForRetraction:
+ return 1.0
+ if distanceToNextThread <= self.minimumTravelForRetraction:
+ return 0.0
+ return (distanceToNextThread - self.minimumTravelForRetraction) / self.minimumTravelForRetraction
+
+ def getSmallestEnclosureIndex(self, point):
+ 'Get the index of the smallest boundary loop which encloses the point.'
+ boundaryLayer = self.boundaryLayers[self.layerIndex]
+ for loopIndex, loop in enumerate(boundaryLayer.loops):
+ if euclidean.isPointInsideLoop(loop, point):
+ return loopIndex
+ return None
+
+ def parseBoundaries(self):
+ 'Parse the boundaries and add them to the boundary layers.'
+ boundaryLoop = None
+ boundaryLayer = None
+ for line in self.lines[self.lineIndex :]:
+ splitLine = gcodec.getSplitLineBeforeBracketSemicolon(line)
+ firstWord = gcodec.getFirstWord(splitLine)
+ if firstWord == '(</boundaryPerimeter>)':
+ boundaryLoop = None
+ elif firstWord == '(<boundaryPoint>':
+ location = gcodec.getLocationFromSplitLine(None, splitLine)
+ if boundaryLoop is None:
+ boundaryLoop = []
+ boundaryLayer.loops.append(boundaryLoop)
+ boundaryLoop.append(location.dropAxis())
+ elif firstWord == '(<layer>':
+ boundaryLayer = euclidean.LoopLayer(float(splitLine[1]))
+ self.boundaryLayers.append(boundaryLayer)
+ for boundaryLayer in self.boundaryLayers:
+ triangle_mesh.sortLoopsInOrderOfArea(False, boundaryLayer.loops)
+
+ def parseInitialization(self):
+ 'Parse gcode initialization and store the parameters.'
+ for self.lineIndex in xrange(len(self.lines)):
+ line = self.lines[self.lineIndex]
+ splitLine = gcodec.getSplitLineBeforeBracketSemicolon(line)
+ firstWord = gcodec.getFirstWord(splitLine)
+ self.distanceFeedRate.parseSplitLine(firstWord, splitLine)
+ if firstWord == '(</extruderInitialization>)':
+ self.distanceFeedRate.addTagBracketedProcedure('dimension')
+ return
+ elif firstWord == '(<layerHeight>':
+ self.layerHeight = float(splitLine[1])
+ elif firstWord == '(<maximumZDrillFeedRatePerSecond>':
+ self.maximumZFeedRatePerSecond = float(splitLine[1])
+ elif firstWord == '(<maximumZFeedRatePerSecond>':
+ self.maximumZFeedRatePerSecond = float(splitLine[1])
+ elif firstWord == '(<operatingFeedRatePerSecond>':
+ self.feedRateMinute = 60.0 * float(splitLine[1])
+ elif firstWord == '(<operatingFlowRate>':
+ self.operatingFlowRate = float(splitLine[1])
+ self.flowRate = self.operatingFlowRate
+ elif firstWord == '(<edgeWidth>':
+ self.edgeWidth = float(splitLine[1])
+ elif firstWord == '(<travelFeedRatePerSecond>':
+ self.travelFeedRatePerSecond = float(splitLine[1])
+ elif firstWord == '(<FirstLayerTravelSpeed>':
+ self.FirstLayerTravelSpeed = float(splitLine[1])
+ elif firstWord == '(<nozzleDiameter>':
+ self.nozzleDiameter = float(splitLine[1])
+ self.nozzleXsection = (self.nozzleDiameter/2)**2*math.pi
+ self.distanceFeedRate.addLine(line)
+
+ def parseLine( self, lineIndex ):
+ 'Parse a gcode line and add it to the dimension skein.'
+ line = self.lines[lineIndex].lstrip()
+ splitLine = gcodec.getSplitLineBeforeBracketSemicolon(line)
+ if len(splitLine) < 1:
+ return
+ firstWord = splitLine[0]
+ if firstWord == '(<crafting>)':
+ if not self.repository.relativeExtrusionDistance.value:
+ self.distanceFeedRate.addLine('M82')
+ else: self.distanceFeedRate.addLine('M83')
+ if firstWord == 'G2' or firstWord == 'G3':
+ line = self.getDimensionedArcMovement( line, splitLine )
+ if firstWord == 'G1':
+ line = self.getDimensionedLinearMovement( line, splitLine )
+ if firstWord == 'G90':
+ self.absoluteDistanceMode = True
+ elif firstWord == 'G91':
+ self.absoluteDistanceMode = False
+ elif firstWord == '(<layer>':
+ self.layerIndex += 1
+ settings.printProgress(self.layerIndex, 'dimension')
+ elif firstWord == 'M101': #counterretract
+ self.addLinearMoveExtrusionDistanceLine(self.restartDistance * self.retractionRatio)
+ if self.totalExtrusionDistance > self.repository.maximumEValueBeforeReset.value:
+ if not self.repository.relativeExtrusionDistance.value:
+ self.distanceFeedRate.addLine('G92 E0')
+ self.totalExtrusionDistance = 0.0
+ self.isExtruderActive = True
+ elif firstWord == 'M103': #retract
+ self.retractionRatio = self.getRetractionRatio(lineIndex)
+ self.addLinearMoveExtrusionDistanceLine(-self.repository.retractionDistance.value*self.retractionRatio)
+ self.isExtruderActive = False
+ elif firstWord == 'M108':
+ self.flowRate = float( splitLine[1][1 :] )
+ self.distanceFeedRate.addLine(line)
+
+
+def main():
+ 'Display the dimension dialog.'
+ if len(sys.argv) > 1:
+ writeOutput(' '.join(sys.argv[1 :]))
+ else:
+ settings.startMainLoopFromConstructor(getNewRepository())
+
+if __name__ == '__main__':
+ main()
View
36 skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py
@@ -157,9 +157,10 @@ def __init__(self):
settings.LabelSeparator().getFromRepository(self)
settings.LabelDisplay().getFromName('- Filament -', self )
self.filamentDiameter = settings.FloatSpin().getFromValue(1.0, 'Filament Diameter (mm):', self, 6.0, 2.8)
- self.filamentPackingDensity = settings.FloatSpin().getFromValue(0.5, 'E-Steps corrector:', self, 1.5, 1.0)
- self.activateCalibration = settings.BooleanSetting().getFromValue('Are You Calibrating?', self, False )
- self.MeasuredXSection = settings.FloatSpin().getFromValue(0.20, 'Measured Width of Extrusion:', self, 2.0, 0.5)
+# self.filamentPackingDensity = settings.FloatSpin().getFromValue(0.5, 'E-Steps corrector:', self, 1.5, 1.0)
+ self.filamentPackingDensityx = settings.FloatSpin().getFromValue(-0.25, 'Add/remove to actual extrusion width (mm):', self, 0.25, 0.0)
+# self.activateCalibration = settings.BooleanSetting().getFromValue('Are You Calibrating?', self, False )
+# self.MeasuredXSection = settings.FloatSpin().getFromValue(0.20, 'Measured Width of Extrusion:', self, 2.0, 0.5)
settings.LabelSeparator().getFromRepository(self)
settings.LabelDisplay().getFromName('- Filament Retraction Settings -', self )
self.maximumEValueBeforeReset = settings.FloatSpin().getFromValue(0.0, 'Maximum E Value before Reset (float):', self, 999999.9, 91234.0)
@@ -223,19 +224,22 @@ def getCraftedGcode(self, gcodeText, repository):
self.parseInitialization()
if not self.repository.retractWithinIsland.value:
self.parseBoundaries()
- self.flowScaleSixty = (((self.layerHeight+self.edgeWidth)/4)*((self.layerHeight+self.edgeWidth)/4)) * math.pi
- if repository.activateCalibration.value:
- self.calibrationFactor = (4 * (self.repository.MeasuredXSection.value - self.edgeWidth))/((math.pi-4)*self.layerHeight+ 4* self.edgeWidth )+1
- self.newfilamentPackingDensity = repository.filamentPackingDensity.value * self.calibrationFactor
- print('***************E-Steps corrector Value (For Calibration)*********************:')
- print('****E-Steps corrector Value (For Calibration) STEPPER EXTRUDERS ONLY :*******', self.newfilamentPackingDensity )
- print('***************E-Steps corrector Value (For Calibration)*********************')
- print('**********this created G-CODE is only for calculating The Value**************')
- print('****Enter the Value into SFACT, uncheck the calibration box, RE-Skein********')
- else :
- self.calibrationFactor = repository.filamentPackingDensity.value
- if self.calibrationFactor is None:
- print('Measured extrusion width cant be 0, either un-check calibration or set measured width to what you have measured!')
+# self.flowScaleSixty = (((self.layerHeight+self.edgeWidth)/4)*((self.layerHeight+self.edgeWidth)/4)) * math.pi
+ self.flowScaleSixty = ((self.edgeWidth-self.layerHeight)*self.layerHeight)+(self.layerHeight/2)**2* math.pi
+
+# if repository.activateCalibration.value:
+# self.calibrationFactor = (4 * (self.repository.MeasuredXSection.value - self.edgeWidth))/((math.pi-4)*self.layerHeight+ 4* self.edgeWidth )+1
+# self.newfilamentPackingDensity = repository.filamentPackingDensity.value * self.calibrationFactor
+# print('***************E-Steps corrector Value (For Calibration)*********************:')
+# print('****E-Steps corrector Value (For Calibration) STEPPER EXTRUDERS ONLY :*******', self.newfilamentPackingDensity )
+# print('***************E-Steps corrector Value (For Calibration)*********************')
+# print('**********this created G-CODE is only for calculating The Value**************')
+# print('****Enter the Value into SFACT, uncheck the calibration box, RE-Skein********')
+# else :
+# self.calibrationFactor = repository.filamentPackingDensity.value
+ self.calibrationFactor = (4 * (-repository.filamentPackingDensityx.value))/((math.pi-4)*self.layerHeight+ 4* self.edgeWidth )+1
+# if self.calibrationFactor is None:
+# print('Measured extrusion width cant be 0, either un-check calibration or set measured width to what you have measured!')
if self.operatingFlowRate is None:
print('There is no operatingFlowRate so dimension will do nothing.')
return gcodeText
View
30 skeinforge_application/skeinforge_plugins/craft_plugins/raft.py
@@ -406,7 +406,7 @@ def __init__(self):
self.edgeWidth = 0.6
self.extrusionStart = True
self.extrusionTop = 0.0
- self.feedRateMinute = 961.0
+ self.feedRateMinute = None
self.heatingRate = None
self.insetTable = {}
self.interfaceTemperature = None
@@ -428,9 +428,9 @@ def __init__(self):
self.operatingFlowRate = None
self.operatingLayerEndLine = '(<operatingLayerEnd> </operatingLayerEnd>)'
self.operatingJump = None
- self.orbitalFeedRatePerSecond = 2.01
+ self.orbitalFeedRatePerSecond = None
self.sharpestProduct = 0.94
- self.supportFeedRate = 10
+ self.supportFeedRate = None
self.supportFlowRate = None
self.supportLayers = []
self.supportLayersTemperature = None
@@ -698,11 +698,12 @@ def addSupportLayerTemperature(self, endpoints, z):
paths = euclidean.getPathsFromEndpoints(endpoints, 1.5 * self.interfaceStep, aroundPixelTable, self.sharpestProduct, aroundWidth)
feedRateMinuteMultiplied = self.repository.supportFeedRate.value * 60
supportFlowRateMultiplied = self.repository.supportFlowRateOverOperatingFlowRate.value*(self.nozzleXsection / self.extrusionXsection)
+ self.travelFeedRateMinute = None #self.repository.supportFeedRate.value * 60
if self.layerIndex == 0:
- feedRateMinuteMultiplied = self.objectFirstLayerFeedRateInfillMultiplier * 60
+ feedRateMinuteMultiplied = None #self.objectFirstLayerFeedRateInfillMultiplier * 60
if supportFlowRateMultiplied != None:
supportFlowRateMultiplied = supportFlowRateMultiplied *1.25
- self.travelFeedRateMinute = self.firstLayertravelFeedRateMinute
+ self.travelFeedRateMinute = None #self.firstLayertravelFeedRateMinute
self.addFlowRate(supportFlowRateMultiplied)
for path in paths:
self.distanceFeedRate.addGcodeFromFeedRateThreadZ(feedRateMinuteMultiplied, path, self.travelFeedRateMinute, z)
@@ -801,9 +802,6 @@ def extendXIntersections( self, loops, radius, xIntersectionsTable ):
def getCraftedGcode(self, gcodeText, repository):
'Parse gcode text and store the raft gcode.'
self.repository = repository
-# self.minimumSupportRatio = math.tan( math.radians( repository.supportMinimumAngle.value ) )
-# print self.supportAutoAngle
-# self.minimumSupportRatio = math.tan( math.radians( 56.91 ) )
self.supportEndLines = settings.getAlterationFileLines(repository.nameOfSupportEndFile.value)
self.supportStartLines = settings.getAlterationFileLines(repository.nameOfSupportStartFile.value)
self.lines = archive.getTextLines(gcodeText)
@@ -911,7 +909,7 @@ def parseInitialization(self):
elif firstWord == 'M108':
self.oldFlowRate = float(splitLine[1][1 :])
elif firstWord == '(<objectFirstLayerFeedRateInfillMultiplier>':
- self.objectFirstLayerFeedRateInfillMultiplier = float(splitLine[1])
+ self.objectFirstLayerFeedRateInfillMultiplier = None #float(splitLine[1])
elif firstWord == '(<objectFirstLayerFlowRateInfillMultiplier>':
self.objectFirstLayerFlowRateInfillMultiplier = float(splitLine[1])
elif firstWord == '(<objectFirstLayerInfillTemperature>':
@@ -922,9 +920,9 @@ def parseInitialization(self):
self.objectNextLayersTemperature = float(splitLine[1])
elif firstWord == '(<orbitalFeedRatePerSecond>':
self.orbitalFeedRatePerSecond = float(splitLine[1])
- elif firstWord == '(<operatingFeedRatePerSecond>':
- self.operatingFeedRateMinute = 60.0 * float(splitLine[1])
- self.feedRateMinute = self.operatingFeedRateMinute
+# elif firstWord == '(<operatingFeedRatePerSecond>':
+# self.operatingFeedRateMinute = None # 60.0 * float(splitLine[1])
+# self.feedRateMinute = None # self.operatingFeedRateMinute
elif firstWord == '(<operatingFlowRate>':
self.operatingFlowRate = float(splitLine[1])
self.oldFlowRate = self.operatingFlowRate
@@ -935,10 +933,10 @@ def parseInitialization(self):
self.supportLayersTemperature = float(splitLine[1])
elif firstWord == '(<supportedLayersTemperature>':
self.supportedLayersTemperature = float(splitLine[1])
- elif firstWord == '(<travelFeedRatePerSecond>':
- self.travelFeedRateMinute = 60.0 * float(splitLine[1])
- elif firstWord == '(<FirstLayerTravelSpeed>':
- self.firstLayertravelFeedRateMinute = 60.0 * float(splitLine[1])
+# elif firstWord == '(<travelFeedRatePerSecond>':
+# self.travelFeedRateMinute = None # 60.0 * float(splitLine[1])
+# elif firstWord == '(<FirstLayerTravelSpeed>':
+# self.firstLayertravelFeedRateMinute = None # 60.0 * float(splitLine[1])
elif firstWord == '(<nozzleDiameter>':
self.nozzleDiameter = float(splitLine[1])
elif firstWord == '(<nozzleXsection>':
View
4 skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py
@@ -159,7 +159,7 @@ class SkirtSkein:
def __init__(self):
'Initialize variables.'
self.distanceFeedRate = gcodec.DistanceFeedRate()
- self.feedRateMinute = 961.0
+ self.feedRateMinute = None
self.isExtruderActive = False
self.isSupportLayer = False
self.layerIndex = -1
@@ -171,7 +171,7 @@ def __init__(self):
self.oldTemperatureInput = None
self.skirtFlowRate = None
self.skirtTemperature = None
- self.travelFeedRateMinute = 957.0
+ self.travelFeedRateMinute = None
self.unifiedLoop = LoopCrossDictionary()
View
31 skeinforge_application/skeinforge_plugins/craft_plugins/speed.py
@@ -216,9 +216,10 @@ class SpeedSkein:
def __init__(self):
'Initialize.'
self.distanceFeedRate = gcodec.DistanceFeedRate()
- self.feedRatePerSecond = 16.0
+ self.feedRatePerSecond = 11.0
self.isBridgeLayer = False
self.isEdgePath = False
+ self.isSupportPath = False
self.isExtruderActive = False
self.layerIndex = -1
self.lineIndex = 0
@@ -269,25 +270,31 @@ def getSpeededLine(self, line, splitLine):
'Get gcode line with feed rate.'
if gcodec.getIndexOfStartingWithSecond('F', splitLine) > 0:
return line
- tempfeedRateMinute = 60.0 * self.feedRatePerSecond
- travelFeedRateMinute = self.repository.travelFeedRatePerSecond.value * 60
- if self.layerIndex <= 0:
+ if self.layerIndex < 1:
travelFeedRateMinute = self.repository.objectFirstLayerTravelSpeed.value * 60
- if self.isEdgePath:
+
+ if self.isSupportPath:
+ tempfeedRateMinute = self.repository.objectFirstLayerFeedRateEdgeMultiplier.value * 60
+
+ elif self.isEdgePath:
tempfeedRateMinute = self.repository.objectFirstLayerFeedRateEdgeMultiplier.value * 60
else:
tempfeedRateMinute = self.repository.objectFirstLayerFeedRateInfillMultiplier.value * 60
- elif self.layerIndex > 0:
+ else:
travelFeedRateMinute = self.repository.travelFeedRatePerSecond.value * 60
- if self.isEdgePath:
+ if self.isSupportPath:
tempfeedRateMinute = self.repository.edgeFeedRateMultiplier.value * 60
- if self.isBridgeLayer:
+ elif self.isBridgeLayer:
tempfeedRateMinute = self.repository.bridgeFeedRateMultiplier.value * self.repository.edgeFeedRateMultiplier.value * 60
+ elif self.isEdgePath:
+ tempfeedRateMinute = self.repository.edgeFeedRateMultiplier.value * 60
+ else:
+ tempfeedRateMinute = 60.0 * self.feedRatePerSecond
if self.isExtruderActive is True:
feedRateMinute = tempfeedRateMinute
- self.addFlowRateLine()
+ self.addFlowRateLine()
if not self.isExtruderActive:
- feedRateMinute = self.travelFeedRateMinute
+ feedRateMinute = travelFeedRateMinute
return self.distanceFeedRate.getLineWithFeedRate(feedRateMinute, line, splitLine)
def parseInitialization(self):
@@ -350,6 +357,10 @@ def parseLine(self, line):
self.isEdgePath = True
elif firstWord == '(</edge>)' or firstWord == '(</edgePath>)':
self.isEdgePath = False
+ elif firstWord == '(<supportLayer>' :
+ self.isSupportPath = True
+ elif firstWord == '(</supportLayer>)' :
+ self.isSupportPath = False
self.distanceFeedRate.addLine(line)
View
3  skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py
@@ -28,7 +28,8 @@
def getCraftSequence():
'Get the extrusion craft sequence.'
- return 'carve scale bottom preface widen inset fill multiply speed temperature raft skirt chamber tower jitter clip smooth stretch skin comb cool hop wipe oozebane dwindle splodge home lash fillet limit unpause dimension alteration export'.split()
+# return 'carve scale bottom preface widen inset fill multiply speed temperature raft skirt chamber tower jitter clip smooth stretch skin comb cool hop wipe oozebane dwindle splodge home lash fillet limit unpause dimension alteration export'.split()
+ return 'carve scale bottom preface widen inset fill multiply temperature raft skirt speed chamber tower jitter clip smooth stretch skin comb cool hop wipe oozebane dwindle splodge home lash fillet limit unpause dimension alteration export'.split()
def getNewRepository():
'Get new repository.'
Please sign in to comment.
Something went wrong with that request. Please try again.