Jump to content
Ultimaker Community of 3D Printing Experts

Cura 2.4 Customised Delta Dual Extruder JSON error

Recommended Posts

Hi, thanks for the work updating 2.4 so it now supports more Delta stuff.

I am trying without success to modify a Delta json so that I can use a "flux capacitor" type single head dual extruder.

I saw that the punchtec_connect printer has a similar set of extruders (ie no offset between the "two" heads), so I tried to set up a Json for a "deltabot 2extruder" using these extruder definitions.

After much trial and error the following code does at least now not cause Cura to crash, but it fails to properly load. If you select it, it sort of "half leaves" the last selected printer on screen, with part of the delta mesh overwriting the last printer mesh. It also fails to show two extruders.

I am sure it must be a simple error in the Json , but I cannot find it.

Any corrections would be much appreciated.


{ "id": "deltabot_2ex", "name": "DeltaBot 2ex", "version": 2,   "inherits": "fdmprinter",   "metadata": {      	"visible": true,      	"author": "",	"manufacturer": "",	"category": "Other",	"icon": "icon_ultimaker2",       "platform": "kossel_platform.stl",	"file_formats": "text/x-gcode", 	"machine_extruder_trains":       {           "0": "punchtec_connect_xl_extruder_0",           "1": "punchtec_connect_xl_extruder_1"       },	"platform_offset": [ 0, 0, 0]},   "overrides": {	"machine_name": 			{ "default_value": "DeltaBot 2Ex" },	"material_diameter": 		{ "default_value": 1.75 },	"speed_travel": 			{ "default_value": 150 },	"prime_tower_size": 		{ "default_value": 8.66 },	"infill_sparse_density": 	{ "default_value": 10 },	"speed_wall_x": 			{ "default_value": 30 },	"speed_wall_0": 			{ "default_value": 30 },	"speed_topbottom": 			{ "default_value": 20 },	"layer_height": 			{ "default_value": 0.2 },	"speed_print": 				{ "default_value": 30 },	"machine_heated_bed": 		{ "default_value": true },	"machine_center_is_zero": 	{ "default_value": true },	"machine_height": 			{ "default_value": 127 },	"machine_gcode_flavor": 	{ "default_value": "RepRap (Marlin/Sprinter)" },	"machine_depth": 			{ "default_value": 175 },	"machine_width": 			{ "default_value": 175 },	"machine_extruder_count":   { "default_value": 2 },	"retraction_amount": 		{ "default_value": 4.2 },	"retraction_speed": 		{ "default_value": 400 },   	"machine_start_gcode":      {"default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home all axes (max endstops)\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." },       "machine_end_gcode":        {"default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300  ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG28 ;Home all axes (max endstops)\nM84 ;steppers off\nG90 ;absolute positioning" },	"machine_shape":            { "default_value": "elliptic"}}}


Share this post

Link to post
Share on other sites

I think the problem is you are trying to reuse the extruders from the punchtec printer. That does not work because the extruder definitions have a link back to the "parent" definition.

Note: this architecture is also why it is hard to make a UI to set the number of extruders (and why there are no "Machine Settings" for multiextrusion printers)

Edited by Guest

Share this post

Link to post
Share on other sites

I think it was something to do with the punchtec extruders not finding a punchteck machine.

After I found this, I tried to make a pair of delta extruders, (and modified the json to look for these, ) (but they did not work either).

Unfortunately, at that point I cleaned out the App data files to make usre I had everything clean.

Unfortunately I then deleted the appdata logs as part of trying to clean cura.

I then modified the shape of the "punchtec_connect_xl.def" json, and it seems to work..sort of..

There is a serious problem with the machine center= zero causing problems with the print towers, so I have logged that on the github..

From this I assume that it must be something to do with the way Cura now seems to have multiple cross references in the extruder and machine definitions..

Revised machine, one extruder and log code follow below :

Edited by Guest
Got rid of huge chunk of unreadable code...

Share this post

Link to post
Share on other sites

I have made some updated extruder and machine json and loaded them in a git hub.

Cura now shows me two extruders, BUT I cannot access the "manage printer" setting s that allow me to modify the machine start and end G code from Cura.

Code is held in https://github.com/dagnall53/JSONS-for-Cura2_3

along with a copy fo the cura.log file

Is Cura VERY pedantic about the json format, or have I made a silly error in adding the G-Code settings??

Thanks in anticipation..

Share this post

Link to post
Share on other sites

Cura now shows me two extruders, BUT I cannot access the "manage printer" setting s that allow me to modify the machine start and end G code from Cura.


See my note here:


The Machine Settings plugin does not work with any multiextrusion definitions. You will have to edit the start/end gcode in the definition file.

Share this post

Link to post
Share on other sites

Thanks for the support so far.

Now I understand that I cannot edit the G code from Cura, I am proceeding.. but slowly.

I have a set of Jsons that now compile and slice two colour prints. They are in my GitHub :https://github.com/dagnall53/JSONS-for-Cura2_3

I found the variables  


  • "machine_extruder_end_code"
  • "machine_extruder_start_code":


And have added these in the extruder jsons,

example below


"machine_extruder_start_code": { "value": " ; code from right extruder \nG1 E190 F600 ; extend filament fast \nG1 E7.5 F50 ; And take up slack.. \n ;end of start right gcode"},


but  they are not resulting in code at the Extruder changes.

However the Blank lines after the G92 E0's  that Cura adds when the extruders are changed have been replaced with "None"


G92 E0NoneT1G92 E0NoneM109 S190


.. so something is happening.

There is a note about "Parse errors" in the Cura log :


UM.Settings.SettingFunction.__init__ [36]: Parse error in function ( ; code from right extruder 


I can find no examples of the use of these variables.. I have repeated them in both extruders, should they perhaps be in only one?

I tried adding these variables to the Machine definition, as it seemed logical to me that they should be part of the machine, but that did not work either.

I hope you can assist...

And many thanks


Edited by Guest

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

    • How to 3D print with reinforced engineering materials
      Ultimaker is hosting a webinar where we explain how you can achieve and maintain a high print success rate using these new reinforced engineering materials. Learn from Ultimaker's Product Manager of Materials and top chemical engineer Bart van As how you can take your 3D printing to that next level.
      • 0 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!