Jump to content
Ultimaker Community of 3D Printing Experts
24c

Resources info for a custom printer

Recommended Posts

Sorry about this question, but I'm struggling to get my head around writing a new set of resources, aka  definition, variants, extruders and materials. Well not the last one to be fair. I have a dual extruder printer, and three different head combinations, so I thought you create a definition first, and add some metadata tags, as well as some overrides common to all, then add specific overrides in the variants folder, with all the nozzle variations in the extruder section, but I'm wading in the sticky stuff now.

 

I can get one version to work by just user the Printer custom fdmprinter settings in other, but it seems more elegant to place these within the resources folder, so I'd like to learn how. I've managed to get this to work in Simplify3D & flavours of Slic3r, but I'm liking how Cura is going, so I'd really like to hang in here and get it up and running, as the test pieces are every bit as good and better than the closed OEM software.

 

Is there any place where this is explained, or any examples elsewhere anybody can point me to please. I have opened more than a few JSON files now, and it's getting a little muddy between the ears. :)

 

Thanks for any help.

Edited by 24c

Share this post


Link to post
Share on other sites

Well, while there isn't a handy api resource page for you to help you understand and interpret the various settings, there ARE a number of great custom profiles and the Ultimaker machine profiles themselves that you can load and inspect to learn how they function. The "house style" for Ultimaker is to use a cascade to stack profiles against each other, so that tweaks for a particular model or configuration are later in the cascade of inheritance than the features that apply to more ranges of models and configurations earlier in the inheritance treee. What this also means for you is that you can setup a simple default profile for your custom machine, and then add other selectable configurations to tune or tweak to help with specific nozzle/hotend configurations. I wish we had a developers manual as well as an operating manual, but with Cura advancing so quickly, that's tough! Spend some time in some profiles and then see if you can ask some of your deeper questions here or at Freenode on IRC #cura or #cura-dev channels.

Share this post


Link to post
Share on other sites

Try to be specific with the problems you run into. We don't know what stuff is sticky for you.

 

First get a single extrusion printer going. Start without machine specific profiles ("has_machine_materials": false, "has_machine_quality": false ). Then add multiple extruders, and finally use "has_variants": true and add variant definitions.

 

Share this post


Link to post
Share on other sites

@ahoeben & @mattgriffin. I'm sorry for the non-specific stuff, I'm just trying to get my head around this, but thank you both for your directions. I'm not a code bunny, so I expect some more daft questions will happen later. In the past I have compared slicer generated gcode in other slicers and vs the gcode the firmware in these printers accept, so I am just trying to grasp the Cura "syntax" & its generated gcode, and by comparison plus experimenting with settings I should mimic part of what I need. 

 

To give you a more specific idea, my Dual Material printer expects to see this format

M104 S200 T200 where T is the second nozzle & material temperature, whereas Cura uses M104 T(extruder_number) S200, which would keep that nozzle at 0 or 1ºC

and 

"E" refers to one extruder, and "D" the other extruder. This is easy to swap around in Simplify3D by using a post process like

{TOOL0REPLACE " E" " D"} ;post process E values to Robox required D extruder values at toolchange

 

BTW, a M105 call gets this response back  S:27 @0 T:27 @0 B:25 ^0 A:26 *0 where S is Extruder1 (tool T0) temperature and T is Extruder 2 (tool T1) temperature and B is the Bed temperature. I have changed some of the code in the USBPrinterOututDevice.py file in the PlugIns folder to fudge & grab the right extruder temperature for the single nozzle head, but I will need to parse this for the T1 extruder and its T value later, as well as clean up my "S" fudge.

 

There are also anti ooze valves too that open and close the head nozzles, triggered by GCode G1 B1 & G1 B0, but is simply implemented.by using the extruder start and end codes, which I have tried this morning, just by dropping something in there, and it worked very well after looking at the generated gcode. :)

 

Just for info, the head I have working currently, is a single nozzle Olsson with no valves, and it works very well indeed.

However right now I am working on a two nozzle single extruder "Y" headed variant, and after starting a test print am now looking at the temperatures, trying to reach an understanding about the calls to Absolute extrusion, standby material temperature etc that I am seeing now in the Cura generated gcode (two models, one 0.3mm nozzle and the other 0.8mm), which I think is down to my profiles I have generated/cloned, so I'll be taking on your advices and keeping it simple as you've suggested, and be starting again. 

 

 

 

 

 

Share this post


Link to post
Share on other sites

My more specific question, I have moved away from using the extruder start & end gcode to open & close** the needle valves, but I'm stumped at the moment on how I might assign a custom initial layer height like you can in Simplify3D for each extruder. 

G1 X121.821 Y83.637
G1 F1200 E-0.22
G1 B0
M82 ;absolute extrusion mode
; G1 B0 ; close needle valve at extruder end gcode
M83 ;relative extrusion mode
T1
M82 ;absolute extrusion mode
; T1  ; active extruder start code
; G1 B1 ; open needle valve at extruder start gcode
M83 ;relative extrusion mode
M109 S205
M104 T0 S190
G0 F3600 X121.821 Y69.607 Z0.3
G1 F1500 E-0.11
G1 B1
G0 F3600 X121.821 Y79.607

My head has two nozzles and the active nozzle move down on toolchange, so there is a z offset in the head effectively of around 0.25mm. I have got around some of this when I do a single 0.3mm nozzle print or single 0.8mm nozzle print, by using the "extruder_nr" to activate the toolhead prior to the pre-start bed levelling routine, and so the relevant nozzle touches the bed, but when it comes to doing a two model print with both extruders one of the nozzles is too high. 

 

I'll keep plugging away, and clean this toolchange up a bit. :)

 

 

 

 

Edited by 24c
Update

Share this post


Link to post
Share on other sites

Ok, this is working OK, in that the Cura Gcode is being moulded into pseudo gcode the firmware in the printer can accept.

Another specific question... finding how Cura would handle the Simplify {IF TOOL0REPLACE "x" 'with_value y"} in its post processing routine, as I need to swap extruder E values for something else only while a certain tool is selected.  I could do it with an external Python script, not me personally, as this is beyond me at the moment, but I'd like to keep it all together in one place if I could. Any pointers or areas to look at to improve my knowledge please?

 

I solved the one problem in the previous post by calling T{extruder_nr} in my start code, and it made the right toolhead contact the bed, so levelling for whichever nozzle I was using, but It'd be nice if there was a dictionary or changelog of variables, definitions, tokens or whatever there called. I've seen them in the JSON files, but it's pot luck trying to find odd ones, but it's even harder working with Simplify3D in that respect. :) 

 

 

 

Edited by 24c
Begging

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Our picks

    • Introducing Ultimaker Cura 3.6 | Beta
      Ultimaker Cura 3.6 | Beta is available. It comes with new features, bug fixes, and UX improvements. We would really like to have your feedback on it to make our stable release as good as it can be. As always, you can download the beta for free from our website, for Windows, MacOS, and Linux.
        • Like
      • 92 replies
    • Print Core CC | Red for Ruby
      Q: For some users, abrasive materials may be a new subject matter. Can you explain what it is that makes a material abrasive when you are not sure which print core to use?
      A: Materials which are hard in a solid piece (like metals, ceramics and carbon fibers) will generally also wear down the nozzle. In general one should assume...
        • Like
      • 30 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies
×

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!