FormerLurker / Octolapse

Stabilized timelapses for Octoprint
GNU Affero General Public License v3.0
638 stars 99 forks source link

[Request] Automatic settings import from IdeaMaker #583

Open kylelemons opened 4 years ago

kylelemons commented 4 years ago

If this is a feature request describe it here

Settings for Cura can be imported by adding a special G-Code template. IdeaMaker also has the ability to insert settings into a G-Code snippet as well using an identical {brace_syntax}, and has the ability to insert basically every setting that it knows about as far as I can tell.

For funzies I tried to translate the Cura G-Code for IdeaMaker:

; layer_height = {layer_height}
; smooth_spiralized_contours = {spiral_mode_enable}
; magic_mesh_surface_mode = normal
; machine_extruder_count = 1
; speed_z_hop = {travel_z_speed}
; retraction_amount = {retraction_amount1}
; retraction_hop = {retraction_zhop1}
; retraction_hop_enabled = {retraction_enable1}
; retraction_enable = {retraction_enable1}
; retraction_speed = {retraction_speed1}
; retraction_retract_speed = {retraction_speed1}
; retraction_prime_speed = {retraction_speed1}
; speed_travel = {travel_xy_speed}

I don't really know what to make of the output though:

; layer_height = 0.1500
; smooth_spiralized_contours = 0
; magic_mesh_surface_mode = normal
; machine_extruder_count = 1
; speed_z_hop = 900.0
; retraction_amount = 1.70
; retraction_hop = 0.000
; retraction_hop_enabled = 1
; retraction_enable = 1
; retraction_speed = 2400.0
; retraction_retract_speed = 2400.0
; retraction_prime_speed = 2400.0
; speed_travel = 6000.0

I'd be happy to provide more information, example G-Code with specific kinds of settings, etc if it would help. I tried to dig into the code to see if I could potentially send the PR myself but I couldn't figure out all of the places that would have to be touched to make it work.

Version of Octolapse

Octolapse Version: Octolapse 0.4.0

Version of OctoPrint

OctoPrint Version: OctoPrint 1.4.2 Python 2.7.16 OctoPi 0.17.0

When you ran into the problem, did you have diagnostic logging enabled?

Diagnostic Logging was Enabled: _REPLACE_THISYES_OR_NO

What were you doing when the problem occurred

  1. _REPLACE_THISSTEP_ONE_GOES_HERE
  2. _REPLACE_THISSTEP_TWO_GOES_HERE
  3. _REPLACE_THISSTEP_...

What should have happened?

_REPLACE_THISPUT_YOUR_DESCRIPTION_HERE

What happened instead?

_REPLACE_THISPUT_YOUR_DESCRIPTION_HERE

Operating System running OctoPrint and Octolapse

OS Name: _REPLACE_THISOS_NAME_GOES_HERE Os Version: _REPLACE_THISOS_VERSION_GOES_HERE

Printer model & used firmware incl. version

Printer Model: _REPLACE_THISPRINTER_MODEL_GOES_HERE Printer Firmware Version: _REPLACE_THISPRINTER_FIRMWARE_VERSION_GOES_HERE

Browser and version of browser, operating system running browser

Browser: _REPLACE_THISBROWSER_VERSION_GOES_HERE Browser OS: _REPLACE_THISBROWSER_OS_GOES_HERE

Link to the gcode file you were printing when the problem occurred

Link to Gcode File: _REPLACE_THISGCODE_FILE_LINK_GOES_HERE

Link to settings.json

Link to settings.json with all passwords removed: _REPLACE_THISSETTINGS_JSON_LINK_GOES_HERE

Link to plugin_octolapse.log

Link to plugin_octolapse.log: LINK_GOES_HERE

Link to octoprint.log

Link to octoprint.log: _REPLACE_THISLINK_GOES_HERE

Link to contents of Javascript console in the browser

Link to javascript console output: _REPLACE_THISLINK_GOES_HERE

Screenshots and/or videos of the problem:

Screenshot/Video Links: _REPLACE_THISLINKs_GO_HERE

Please consider becoming a patron

If you like this project, please support my work by becoming a patron, and consider adding a 'star' to the repository. It takes a lot of time and effort to maintain the project and respond to issues. The cost of test prints, software, cameras, printer parts, etc. can quickly add up, so every bit helps.

You can find various videos and tutorials by subscribing to my Youtube channel. You can also follow me on Twitter.

FormerLurker commented 4 years ago

Hi and thanks for posting!

Can you send a complete gcode file containing the values you used above please? It would be useful for testing. Something very small, like a calibration cube, would be ideal.

I think everything else is pretty self explanatory, so that may be all I need :)

Titome commented 4 years ago

Hi ! I would like to see support IdeaMaker for Octolapse :) I link a file with small piece (clip for filament, very useful :p ) ~10min for print : https://timotheegirard.com/Octave_Spool_Clip_v3-1_test.gcode I paste portion of Gcode into my IdeaMaker profil & it's print between lines 19 & 31.

Thanks for your work :)

pierremilcent commented 3 years ago

Any progress about Ideamakersupport with Octolapse ? I tried to add start gcode from Cura in Ideamaker but it does not work and print with octolapse 0.4 does not start, Octolapse 0.4.1 with Octoprint 1.5.2

FormerLurker commented 3 years ago

@pierremilcent, no, sadly I had to fix some incompatibility with the newest version of Octoprint first (it was a total showstopper) and have been slaving away with a year end project for work. However, I got things working with the new octoprint version, and I just finished my work project, and have been slowly working my way through the backlog. I havet forgotten about this. If you want, open a new issue for the cura problem. That can be solved for sure to get you by in the meantime.

kscheff commented 3 years ago

Looking at the output of the IdeaMaker (4.1.1.5050), they are using Cura compatible comments. The issue is that Octolaps is not identifying the generated G-Code automatically. The automatic detection is based on the version information, thus putting the right fingerprint in the start code does the trick to get it going. Alternatively got to printer settings in Octolaps, select manually Cura 4.2, enable customised profiles, fill all required parameters.

I have only tested a simple G-Code for a small part (no vase mode, single extruder), so you milage may vary with the below G-Code:

; === info needed for octolaps to identify Cura profile ===
;Generated with Cura_SteamEngine 4.2.1
; layer_height = {layer_height}
; smooth_spiralized_contours = {spiral_mode_enable}
; magic_mesh_surface_mode = normal
; machine_extruder_count = 1
; speed_z_hop = {travel_z_speed}
; retraction_amount = {retraction_amount1}
; retraction_hop = {retraction_zhop1}
; retraction_hop_enabled = {retraction_enable1}
; retraction_enable = {retraction_enable1}
; retraction_speed = {retraction_speed1}
; retraction_retract_speed = {retraction_speed1}
; retraction_prime_speed = {retraction_speed1}
; speed_travel = {travel_xy_speed}
;=== end octolaps ===

Here is the beginning of the sliced G-Code as an example:

;Sliced by ideaMaker 4.1.1.5050, 2021-06-08 09:56:05 UTC+0200
;Dimension: 210.000 210.000 205.000 0.400
;Plate Shape: 0
;Origin Center: 0
;Extruder Offset #1: 25.000 0.000
;Filament Diameter #1: 1.750
;Filament Diameter #2: 1.750
;Filament Compensation #1: 100.00
;Filament Compensation #2: 90.00
;Filament Density #1: 1110.00
;Filament Density #2: 1240.00
;Bounding Box: 71.890 138.112 66.215 143.779 0.000 7.700
;Model Gap: 0.000
M221 T0 S100.00
M140 S105.00
M104 T0 S235.00
M109 T0 S235.00
T0
M190 S105.00
; === info needed for octolaps to identify Cura profile ===
;Generated with Cura_SteamEngine 4.2.1
; layer_height = 0.3000
; smooth_spiralized_contours = 0
; magic_mesh_surface_mode = normal
; machine_extruder_count = 1
; speed_z_hop = 1002.0
; retraction_amount = 1.50
; retraction_hop = 0.000
; retraction_hop_enabled = 1
; retraction_enable = 1
; retraction_speed = 2700.0
; retraction_retract_speed = 2700.0
; retraction_prime_speed = 2700.0
; speed_travel = 7200.0
;=== end octolaps ===

PS One remaining issue is that the speeds from IdeaMaker are given in mm/min and Ocotlapse expects mm/s. I did not find a way to convert this units (simple /60 division) automatically :-(

mech422 commented 3 years ago

@kscheff You got us there :-) Turns out Simplify3d uses the correct units...

This is what I have so far: ; === info needed for octolaps to identify Simplyfi3d profile Leave the next 4 lines as is! === ; G-Code generated by Simplify3D(R) Version 4.1.2 ; Jun 14, 2021 at 6:03:39 AM ; Settings Summary ; printerModelsOverride ; layerHeight,{layer_height} ; extruderToolheadNumber,0 ; primaryExtruder,0 ; extruderUseRetract,{retraction_enable1} ; extruderRetractionDistance,{retraction_amount1} ; extruderRetractionZLift,{retraction_zhop1} ; extruderRetractionSpeed,{retraction_speed1} ; rapidXYspeed,{travel_xy_speed} ; rapidZspeed,{travel_z_speed} ; spiralVaseMode,{spiral_mode_enable} ;=== end octolaps ===

Note: I'm not sure how to handle this with multiple extruders though. Also, the indentation is significant..the regexes seem to match '\s\s\s' and not '\s+'

Now we just need the ability to set a 'printer wide' startup script in ideaMaker instead of having to stuff it in every printer/filament/quality.

mech422 commented 3 years ago

nope - its not quite right - octolapse keeps retracting the filament all the way out of the extruder gears :-P Not sure why. I thought it was the printer profile I was testing, but turning off octolapse seemed to have fixed it. I guess there is something else it needs. I don't think its the units, as they match what I get from Simplify3d and that prints fine. Probably another field I need to add in...

mech422 commented 3 years ago

Ahh - I'm using Marlin 2.x - so I had to set the g90/g91 thing. See https://github.com/OctoPrint/OctoPrint/issues/4101

It appears the following code works with octolaps 'autodect' and properly mimics a Simplify3d file: ; === info needed for octolaps to identify Simplyfi3d profile Leave the next 4 lines as is! === ; G-Code generated by Simplify3D(R) Version 4.1.2 ; Jun 14, 2021 at 6:03:39 AM ; Settings Summary ; printerModelsOverride ; layerHeight,{layer_height} ; extruderToolheadNumber,0 ; primaryExtruder,0 ; extruderUseRetract,{retraction_enable1} ; extruderRetractionDistance,{retraction_amount1} ; extruderRetractionZLift,{retraction_zhop1} ; extruderRetractionSpeed,{retraction_speed1} ; rapidXYspeed,{travel_xy_speed} ; rapidZspeed,{travel_z_speed} ; spiralVaseMode,{spiral_mode_enable} ;=== end octolaps ===

This gives: ;Sliced by ideaMaker 4.1.1.5050, 2021-06-14 21:01:53 UTC-0700 ;Dimension: 300.000 300.000 400.000 0.400 ;Plate Shape: 0 ;Origin Center: 0 ;Extruder Offset #1: 25.000 0.000 ;Filament Diameter #1: 1.750 ;Filament Diameter #2: 1.750 ;Filament Compensation #1: 100.00 ;Filament Compensation #2: 90.00 ;Filament Density #1: 1240.00 ;Filament Density #2: 1240.00 ;Bounding Box: 140.000 160.000 140.000 160.000 0.000 20.100 ;Model Gap: 0.000 M92 E415.00000 M221 T0 S100.00 M140 S85.00 M190 S85.00 M104 T0 S245.00 M109 T0 S245.00 T0 ; === info needed for octolaps to identify Simplyfi3d profile Leave the next 4 lines as is! === ; G-Code generated by Simplify3D(R) Version 4.1.2 ; Jun 14, 2021 at 6:03:39 AM ; Settings Summary ; printerModelsOverride ; layerHeight,0.3000 ; extruderToolheadNumber,0 ; primaryExtruder,0 ; extruderUseRetract,1 ; extruderRetractionDistance,1.00 ; extruderRetractionZLift,0.200 ; extruderRetractionSpeed,2100.0 ; rapidXYspeed,15000.0 ; rapidZspeed,1002.0 ; spiralVaseMode,0 ;=== end octolaps ===

@FormerLurker - If this looks right/is all that's required by OctoLapse - maybe we can add it to a readme or wiki?

Edit: crap - looks like github ate the spaces. The lines after 'Settings Summary' need 3 spaces between the leading ';' and the setting.

kscheff commented 3 years ago

@mech422 use the <> insert code command above the text in edit mode to preserve the formatting. Just select the code portion and hit the above <> button. Alternatively you can use the triple marker ``` for start end end directly when typing.

; === info needed for octolaps to identify Simplyfi3d profile Leave the next 4 lines as is! ===
; G-Code generated by Simplify3D(R) Version 4.1.2
; Jun 14, 2021 at 6:03:39 AM
; Settings Summary
;   printerModelsOverride
;   layerHeight,{layer_height}
;   extruderToolheadNumber,0
;   primaryExtruder,0
;   extruderUseRetract,{retraction_enable1}
;   extruderRetractionDistance,{retraction_amount1}
;   extruderRetractionZLift,{retraction_zhop1}
;   extruderRetractionSpeed,{retraction_speed1}
;   rapidXYspeed,{travel_xy_speed}
;   rapidZspeed,{travel_z_speed}
;   spiralVaseMode,{spiral_mode_enable}
;=== end octolaps === 

I am going to test these with my new RP4 and see how that works.

mech422 commented 3 years ago

Yeah - I didn't really expect it to be 'code' ... oh well

Hope it works well for you. Remember if you use marlin v2.X you have to set the G90/G91 thing in octoprint. That really was the only problem I had.

TheIvoryDisaster commented 2 years ago

How close is this to making it out of the backlog?

19Forty commented 9 months ago

; === info needed for octolaps to identify Simplyfi3d profile Leave the next 4 lines as is! === ; G-Code generated by Simplify3D(R) Version 4.1.2 ; Jun 14, 2021 at 6:03:39 AM ; Settings Summary ; printerModelsOverride ; layerHeight,{layer_height} ; extruderToolheadNumber,0 ; primaryExtruder,0 ; extruderUseRetract,{retraction_enable1} ; extruderRetractionDistance,{retraction_amount1} ; extruderRetractionZLift,{retraction_zhop1} ; extruderRetractionSpeed,{retraction_speed1} ; rapidXYspeed,{travel_xy_speed} ; rapidZspeed,{travel_z_speed} ; spiralVaseMode,{spiral_mode_enable} ;=== end octolaps ===

This Worked first time for me. Thanks!