Cura work-around
-
@jens55 said in Cura work-around:
@fcwilt, we discussed part of this before when it was suggested to use the start.g file.
Could you tell me more on the dummy tool idea?
I would but it just pop into my mind while reading your post. I thought if you could define a dummy tool then it could bypass the tool loading feature and not cause a problem because the printer wasn't homed.
I have never used the filament features of DWC. Do you happen to have a link to more details on that feature?
As to the Filament feature:
When you add a filament the DWC creates a folder for that filament and in that folder it creates three empty files for you to fill in as desired/needed.
- load.g
- unload.g
- config.g (not to be confused with the main config.g)
There are three M commands for those files.
- M701 runs load.g
- M702 runs unload.g
- M703 runs config.g
I don't use the load/unload files, just the config one.
Here is a simplified version of one of my filament config files:
M291 R"PLA - Amazon - Copper" P"Configuring..." T0 M221 S100 D0 ; set extrusion multiplier G10 S190 R0 ; set extruder temps M140 S60 R0 ; set bed temps M291 R"PLA - Amazon - Copper" P"Configuring - Done" T1
The only code I have in my slicer "user" code is M98 P"print_begin.g" and M98 P"print_end.g". That code goes in the obvious places in the slicer.
And in those files I have the commands needed to prepare to print and to finish a print.
Here is a simplified version of print_begin.g:
; Cura (Repeteir flavor - no temps) inserts the following around the call to this file ;M109 S0 ; set extruder temp and wait (no wait with S0) ;M82 ; absolute E moves ;M98 P"print_begin.g" ; invokes this file ;G92 E0 ; set E position ;G92 E0 ; set E position again (have no idea why) ;G1 F1800 E-1 ; do initial retract ; select tool and configure based on filament selected T0 ; select tool 0 so extruder commands below will work M703 ; configure selected filament (sets bed/extruder temps, extrusion multiplier) ; the following are some "sanity" checks to verify all is good to proceed - they can be whatever is needed/wanted ; check for selected filament if move.extruders[0].filament = "" M291 R"No Filament Selected" P"Cannot Continue" S2 T0 abort ; check bed heater active temp setting if heat.heaters[0].active = 0 M291 R"Bed Heater Active Temp = 0" P"Cannot Continue" S2 T0 abort ; check extruder heater active temp setting if heat.heaters[1].active = 0 M291 R"Extruder Heater Active Temp = 0" P"Cannot Continue" S2 T0 abort ; setup to print G90 ; absolute moves G1 Z100 F1200 ; position for cleaning G1 X0 Y-145 F6000 ; position for cleaning M116 ; wait for temps to reach set points M83 ; insure extruder relative mode G92 E0 ; reset the extruder logical position G1 E20 F120 ; prime the extruder M400 ; wait for extruding to finish G92 E0 ; reset the extruder logical position M291 R"Clean Nozzle and Bed" P"Click OK to begin printing" S3 T0 G1 E-0.1 F120 ; retract to control oosing M400 ; wait for extruding to finish G92 E0 ; reset the extruder logical position M98 P"mesh_load.g" ; load height map as needed
The key is the T0/M703 are the start. M703 runs the config file for the current selected filament and sets things up as wanted/needed
You could insure that homing is done before the T0 and avoid that issue.
Frederick
-
@jens55 said in Cura work-around:
@fcwilt, I found some more detail on the 'filaments' features and will look into that. Thanks !
Whoops - I just finished posting some info on how I do it.
Frederick
-
@jens55 Yeah, don't worry you basically won't need to know any programming.
Once you have the source code in a state where you can build it and get the program working. Then, you just have to ctrl+F in the entire codebase (ctrl+shift+f in visual studio) and look for something like "tool change."
If that doesn't turn up what you want, you can use a few different approaches. Good codebases will be fairly easy to understand, even if you don't know what the code is doing. The functions should be named in a descriptive manner ie: toolChange() or tool_initialize() or something. There will also be comments.
Once you find the place where this happens it will be as simple as replacing a few characters with blank spaces, or removing a line, or adding to it.
-
@jens55 are you using the DuetRRF plugin by any chance?
https://github.com/Kriechi/Cura-DuetRRFPluginShould be easy to add a few lines of code to filter/search/replace the gcode commands in the file before uploading it to your printer.
Here might be a good entry point if you know a little bit of Python: https://github.com/Kriechi/Cura-DuetRRFPlugin/blob/6ea133110c3b7e7f142f83247ca03a019676d27e/DuetRRFOutputDevice.py#L264 -
@fcwilt said in Cura work-around:
@jens55 said in Cura work-around:
@fcwilt, I found some more detail on the 'filaments' features and will look into that. Thanks !
Whoops - I just finished posting some info on how I do it.
Thanks, any input is appreciated and you have given me some more info I didn't have before!
-
@fcwilt, a couple (or more) quick questions on the filament system overall concept:
Suppose I have a model sliced with Cura and four different filaments defined PLA-Black, PLA-Red', PLA-White and PLA-Green.
Do I manually load all the filaments into all the tools or do I just load the first filament to heat up the tool?
How do I deal with the requirement to have no tool selected in order to home the printer? This is currently done in start.g .... I would have to unload the filament in order to allow homing which I suppose I can also do in start.g
Depending on how long the homing takes, couldn't the tool cool enough to no longer allow extrusion?What is the difference between me manually setting T0 temperature in DWC and me loading a filament - isn't it basically the same? In either case I wait til the nozzle is up to temperature, unload the filament or deselect the tool and then start the Cura print file.
I am not seeing the advantage here if all I do is set a temperature and not bother with load.g and unload.g. I suppose if you have more commands in the filament gcode files then it would make sense but for just the temperature?
Am I missing something?
-
@bot, I thought through your suggestion but decided that it isn't feasible for me. It's been probably a decade since I had a quick look at Visual C and am currently running Linux so I'd have to find some build environment under Linux. I am also anything but fluent in C or C++ or anything else for that matter. Last but not least, I would have to re-learn the whole mess every three or so months when a new version of Cura is released. Unfortunately at my age, my brain does not retain knowledge like this over 3 months of not touching things.
Thank you for your input though, it is an interesting idea and I wish I was able to implement it. -
@jens55 did you see my post above? no recompile needed, no difficult C knowledge either, just a bit of simple Python that should be easily google-able if you ever have seen a programming language.
Cura even has a built-in Search-Replace PostProcessing plugin script, though I'm not sure if it can access the very early setup commands.
-
@resam said in Cura work-around:
Cura even has a built-in Search-Replace PostProcessing plugin script, though I'm not sure if it can access the very early setup commands.
Yes it works for that.
Frederick
-
@jens55 on my toolchanger, i run all the prep stuff as part of start.g
So G32 etc,
Then who cares what tool cura picks as the printer is ready -
@resam, yes I did see your post but to be honest I don't know how the DuetRRF plugin (which I use) could be used to help. At first I thought you meant to tell me about the search and replace post processing plugin which I could probably use somehow but again I would have substantial difficulty trying to limit the search/replace to just the very few lines at the beginning of the Cura print code. I am no wizard with regular expressions so I would be looking for a single code block of multiple lines and replacing that. Since the block is likely to change based on slicer settings, it would probably be easier to just edit the code manually which is certainly doable but would be very annoying to do with every re-slice of the model.
It is something I want to try to see just what is involved with it but I am still trying to sort out the filament system and what it can do for me. -
@jay_s_uk said in Cura work-around:
@jens55 on my toolchanger, i run all the prep stuff as part of start.g
So G32 etc,
Then who cares what tool cura picks as the printer is readyDo you include anything in your start.g that Cura's code may override, such as a temperature setting?
Just curious.
Frederick
-
This post is deleted! -
@fcwilt On the toolchanger no. On my Delta, yes
-
-
@jay_s_uk said in Cura work-around:
@jens55 on my toolchanger, i run all the prep stuff as part of start.g
So G32 etc,
Then who cares what tool cura picks as the printer is readyI currently have a single G28 in my start.g.
Suppose I want to put in a command to heat the very first extruder that Cura calls. How is that possible? I can only see heating up all 4 tools to cover every possibility. If I choose 210C for the nozzle temperature I have PLA and PETG covered but will likely be too cold for ABS.
Would it be possible to post your start.g? Do you switch between different start.g versions based on the filament you are running? I am having difficulty envisioning just how this would be done so that you set it up once and then it just works after that. -
@jens55 this is what I have
T-1 if !move.axes[0].homed || !move.axes[1].homed|| !move.axes[2].homed ; If the printer hasn't been homed, home it M98 P"0:/sys/homeall.g" ; home y and x G32 G1 X0 Y0 G29 S1
Once I've homed, levelled and loaded my height map its pretty much over to cura to do what it likes
-
@jay_s_uk said in Cura work-around:
M98 P"0:/sys/homeall.g" ; home y and x
This is just a bit of information you may not have but it may be good to know.
G28 will invoke homeall.g as does your M98 command but there is a least one difference, G28 first marks all the axes as un-homed.
In some cases that might be important.
Frederick
-
@jay_s_uk, thanks ... so if I can compare that to what I have, the single G28, it is very similar. I have T-1 in my Cura start code, you test for un-homed conditions and I just blanket home. I don't bother with mesh bed probes.
There is no setting of any hot end temperatures so Cura will run just fine but at least the way I have things, there is no priming happening on the first tool and any subsequent tools are retrieved and then primed rather than primed and retrieved to wipe the nozzle tip clean.
Do you maybe have a separate nozzle wiping routine (pebble extruder maybe?) .... maybe that is a better way of approaching it rather than to utilize the standard wiping action that is part of the park/un-park action.
As I am thinking about this, this seems like it could take care of all the issues .... some more thinking is required.Where do you call for your wiping routines and what do you have in your wiping macro?
-
@jens55 I have a little steel brush mounted in front of the hotend so when it's picked up from the tool holder it's also wiped clean.