[PlugIn] 3D Printers G-Code importer/Exporter Ver0.0.9
-
I could sure use this. Looking forward to trying it out. Thanks!
-
I find a problem with the Get_Filament_component method. The problem occurs when you run the plugin a second time. The @filamentComp and @HeadMoveComp are not remembered from the first to the second run so @HeadMoveComp is not redefined because of the return executed when @filamentComp is found and redefined.
Here is my re-write
def Get_Filament_component @filamentComp =Sketchup.active_model.definitions[ "filament" ] # if there is no existing component named "filament", make one unless @filamentComp @nozel = 0.4.mm @layerH = 1.mm # the Z axis movements will scale this parameter @filamentComp = Sketchup.active_model.definitions.add("filament") @pts = [ ORIGIN, [-@nozel/2, 0.mm , -@layerH/2], [-@nozel/2, 0.mm , -@layerH ], [ @nozel/2, 0.mm , -@layerH ], [ @nozel/2, 0.mm , -@layerH/2] ] @newface = @filamentComp.entities.add_face(@pts) @newface.reverse! if @newface.normal.y < 0 @newface.pushpull(1.mm) end @HeadMoveComp = Sketchup.active_model.definitions[ "HeadMove" ] unless @HeadMoveComp @HeadMoveComp = Sketchup.active_model.definitions.add("HeadMove") @oldPoint = [0, 0, 0] @newPoint = [0, 1.mm, 0] @HeadMoveComp.entities.add_line @oldPoint, @newPoint end end # def Get_Filament_component
-
In Ruby, everything is an object, and every object has a reference.
References that begin with a capital letter are constants. Module and Class references (names) are constants that are in title case (without underscore spacing, such as
FileImporter
).
Other constants are all capital characters (with underscore spacing, such asROOT_PATH
.)Methods are also objects, and the method name is it's reference, which by convention is lower case (with underscore spacing, such as
get_filament_component
.)The Ruby interpreter is designed to work fastest when we follow these conventions.
-
When choosing a file to import... and clicking the "Options..." button (in the import file dialog,) I get an error:
Error: #<NoMethodError: undefined method
[]' for nil:NilClass>
C:/Program Files/Google/Google SketchUp 8/Plugins/Fishelzon/GcodeImporterVer0.0.3.rb:262:inunits_dialog' C:/Program Files/Google/Google SketchUp 8/Plugins/Fishelzon/GcodeImporterVer0.0.3.rb:102:in
do_options'`The error occurs on line 262 of the plugin file, viz:
cu = Sketchup.active_model.options["unitsOptions"]["LengthUnit"]
Reason: The Sketchup::OptionsManager instance method
[]
returns a valid Sketchup::OptionsProvider instance object IF the key is valid, otherwise it returnsnil
(the singleton instance of theNilClass
class.)
Since the key is invalid,nil
is returned, and since theNilClass
class does not have a[]
instance method, theNoMethodError
exception is raised.The valid key name to get a reference to the units options provider is
"UnitsOptions"
NOW... there are ONLY TWO possible import units in a Gcode file.. inches (G20) and mm (G21), so can the plugin set mm as default, and then recognize the Gcodes G20 and G21, to change the import units "on-the-fly" as needed ?
This would actually make the import file options dialog unnecessary (at least when it comes to setting import units.)
-
Key for saving defaults:
It is preferable to use underscore "" instead of spaces, and to prepend "Plugin" to the key, thus:
"Plugin_Fishelzon_GcodeImporter"
-
OK Guys - Thank you.
I fixed the code according to your suggestions in the next version
I added a "last version" load to the loader and updated the version number.
Waiting for yor remarks befor moving on.I am thinking about how to implement a "G-Code exporter"
I need to figure out a way to keep the unused G-Code lines.
The adding of these lines will enable the exporter to put these lines
back to the exported G-Code. -
Hi,
Call me stupid but how to launch the script ?? -
@didier bur said:
Hi,
Call me stupid but how to launch the script ??It's an importer, you find in the list of import formats. File > Import and in the file dialogue you pick the fileformat for G code.
-
Uploaded vertion 0.0.5.
Include impruvment to speed and renderingPlease let me know if you like it
-
Line 117:
if (Sketchup.version_number < 7)
should be:
if (Sketchup.version.to_i < 7)
Line 135:
# wait forever while 1==1 do end # while 1
That is dangerous! It could lock up SketchUp if an error occurs, causing file handles to remain open.
Use a continue messagebox instead.
And you should return a numeric error code instead of 0 when an exception occurs.
-
@davidfi1 said:
Uploaded vertion 0.0.5.
Include improvment to speed and renderingJust so you know...
The native Ruby Console, is not actually a "true console interface".
It is really a dialog with a non-editable multi-line text control.
Writing output to the text control is VERY slow, and gets SLOWER the more that is written.(*) Write only what you NEED to.
OR ...
Perhaps write output to a log file instead, and after the import, display the log file's text in a Webdialog frame. (The browser can display plain text files.) -
Dan.
Thank you, you are very helpfull.
I don't really know what to do with these errors in the G-Code I am getting.
It is not even correct to say they are errors at all.
I use the ruby console as a very simple "information console"
There is nothing to do with these "errors" just know about them...If somone don't want to see these messages he could just close the console.
In the following versions I will not open the ruby console at all.
Thank you again.
David. -
@dan rathbun said:
Line 117:
Line 135:# wait forever > while 1==1 do > end # while 1 >
That is dangerous! It could lock up SketchUp if an error occurs, causing file handles to remain open.
will do.
Thank you. -
New Version 0.0.6 posted
Thank you. -
I'm getting the following error in the ruby console every time I start SU and it doesn’t show the G-code file type in the import file types list:
GcodeImporterVer0.0.6.rb:38: warning: Object#type is deprecated; use Object#class
I installed the plugin through the "Preferences/Extensions/Install Extension" option. I have SU V8.0.16845 for Mac, any idea on what I should do?
Thanks
Antonio -
@antoninoion said:
I'm getting the following error in the ruby console every time I start SU and it doesn’t show the G-code file type in the import file types list:
GcodeImporterVer0.0.6.rb:38: warning: Object#type is deprecated; use Object#class
I installed the plugin through the "Preferences/Extensions/Install Extension" option. I have SU V8.0.16845 for Mac, any idea on what I should do?
Thanks
AntonioI found the problem - fixing it soon.
change line 38 from:
if @ent.type == Sketchup::Edge
to:
if @ent.class == Sketchup::EdgeBut wait for more testing - I will post a fix soon
Thank you. -
Version 0.0.7
Now we have a G-Code Exporter of the previously imported G-Code in the plugin menu.
So I changed the name to GcodeTools ... (please delete the old one)
The new exporter is a very simple assuming that in the next versions will be
adding all the needed features to make it usable- so please let me know what need's to be fixed!.
-
Version 0.0.8
Added to the exporter the ability to connect "unconnected" components
so now if a component is deleted - the exporter will just put a link to the
first component of the disconnected chain -
Version 0.0.9
New in Importer:
Will put a Attribute with the value of speed from the imported G-Code in the
"filament" & "MotorMove" components
Change the Z scale of the "filament" component according to the amount of
extruded filament in the imported G-Code
New in Exporter:
Export to the G-Code the Attribute of speed as was imported by the importer.
Export the Extruded length according to the Z scale of the "filament" component -
What should the next feature be?
If you have an idea, I will be very happy to try implementing it.
Advertisement