Jump to content
Ultimaker Community of 3D Printing Experts
  • Sign Up


  • Content Count

  • Joined

  • Last visited

Community Reputation

1 Neutral

Personal Information

  • Country
  1. When I slice something with cura 2.6, I seem to always get this code generated, approximately at the end of the first layer. G1 X14.019 Y4.968 E252.99333G0 F3600 X14.106 Y5.055G0 X13.934 Y3.751G0 X13.879 Y3.697G1 F1800 X13.975 Y3.51 E252.99655G0 F3600 X14.024 Y3.559G0 X13.694 Y6.284G0 X13.479 Y7.04G0 X12.394 Y9.287G0 X9.554 Y14.079G0 X9.595 Y14.121G1 F1800 X9.464 Y14.272 E252.99915G0 F3600 X8.961 Y14.618G1 F1800 X8.869 Y14.526 E253.00204M104 S200G0 F3600 X9.064 Y14.618G1 F1500 E246.50204G0 F3600 X9.629 Y13.724G0 X9.867 Y12.998G0 X8.989 Y12.063G0 X5.332 Y-3.244;TIME_ELAPSED:197.720060;LAYER:1M140 S60M106 S204G0 F5400 X5.332 Y-3.244 Z0.4;TYPE:SUPPORTG1 F1500 E253.00204G1 F2700 X5.332 Y5.711 E253.13458G1 X5.273 Y5.718 E253.13546G1 X5.245 Y5.723 E253.13588 The specific issue is the M104 S200. The problem is that there is always an M104 S200 inserted here. This is not such a problem with PLA - as 200C is in the range of temperatures that will print, but when I try to print PETG or ABS, 200C is not hot enough to do a good job. I posted this in the CURA 2.6 thread but didn't get any answers, nothing to try etc. There I posted settings that never mentioned any temperature as cool as 200C but this was still there. I was printing PLA and I was trying to use 210C because I was pushing printing speeds - and it still dropped to 200. I will also add the entire settings group at the end of the post. I am willing to try and debug this. Am I the only person who experiences this problem? This is on Windows 10, I have previously installed Cura 2.4 and Cura 2.5 on this system, I did not install any add-ons other than the ones that came with the install of Cura 2.6. If it matters, I am printing on a Delta printer, elliptical bed with X and Y equal at 280mm, and a Z of 550. 0,0 is bed center. I don't know what other things I could tell you that would help you diagnose this. Currently I have to save to a file, manually edit to remove the M104 and continue. I only have one extruder, and I have custom begin and end code. See below. My gcode flavor is Repetier. M80G4 P3000M104 S{material_print_temperature} ; preheat extruderM190 S{material_bed_temperature} ; wait for bed tempM109 S{material_print_temperature} ; wait for extruder tempG28 ;HomeG1 Z15.0 F6000 ;Move the platform down 15mmG92 E0G1 F200 E3G92 E0 M104 S0M140 S0G92 E1G1 E-1 F300G28 X0 Y0M84G4 P30000M81 ;SETTING_3 {"global_quality": "[general]\\nversion = 2\\nname = empty\\ndefiniti;SETTING_3 on = custom\\n\\n[metadata]\\nquality_type = normal\\ntype = quality_;SETTING_3 changes\\n\\n[values]\\ncool_fan_speed = 80.0\\ncool_fan_speed_max = ;SETTING_3 100.0\\ndefault_material_print_temperature = 210\\ninfill_angles = [ ;SETTING_3 0,45,15,60,30,75]\\ninfill_pattern = zigzag\\nmaterial_flow = 89\\nma;SETTING_3 terial_print_temperature = =default_material_print_temperature\\nmesh;SETTING_3 fix_union_all = False\\nsupport_conical_enabled = True\\nsupport_enab;SETTING_3 le = True\\nsupport_z_distance = 0.5\\ntop_bottom_pattern = concentri;SETTING_3 c\\n\\n", "extruder_quality": ["[general]\\nversion = 2\\nname = empt;SETTING_3 y\\ndefinition = custom\\n\\n[metadata]\\nquality_type = normal\\next;SETTING_3 ruder = custom_extruder_1\\ntype = quality_changes\\n\\n[values]\\n\\;SETTING_3 n", "[general]\\nversion = 2\\nname = empty\\ndefinition = custom\\n\;SETTING_3 \n[metadata]\\nquality_type = normal\\nextruder = custom_extruder_2\\;SETTING_3 ntype = quality_changes\\n\\n[values]\\n\\n", "[general]\\nversion = ;SETTING_3 2\\nname = empty\\ndefinition = custom\\n\\n[metadata]\\nquality_type;SETTING_3 = normal\\nextruder = custom_extruder_3\\ntype = quality_changes\\n\;SETTING_3 \n[values]\\n\\n", "[general]\\nversion = 2\\nname = empty\\ndefiniti;SETTING_3 on = custom\\n\\n[metadata]\\nquality_type = normal\\nextruder = cust;SETTING_3 om_extruder_4\\ntype = quality_changes\\n\\n[values]\\n\\n", "[genera;SETTING_3 l]\\nversion = 2\\nname = empty\\ndefinition = custom\\n\\n[metadata];SETTING_3 \\nquality_type = normal\\nextruder = custom_extruder_5\\ntype = qual;SETTING_3 ity_changes\\n\\n[values]\\n\\n", "[general]\\nversion = 2\\nname = e;SETTING_3 mpty\\ndefinition = custom\\n\\n[metadata]\\nquality_type = normal\\n;SETTING_3 extruder = custom_extruder_6\\ntype = quality_changes\\n\\n[values]\\;SETTING_3 n\\n", "[general]\\nversion = 2\\nname = empty\\ndefinition = custom\;SETTING_3 \n\\n[metadata]\\nquality_type = normal\\nextruder = custom_extruder_;SETTING_3 7\\ntype = quality_changes\\n\\n[values]\\n\\n", "[general]\\nversion;SETTING_3 = 2\\nname = empty\\ndefinition = custom\\n\\n[metadata]\\nquality_t;SETTING_3 ype = normal\\nextruder = custom_extruder_8\\ntype = quality_changes\;SETTING_3 \n\\n[values]\\n\\n"]}
  2. You might try two things. One is to install Cura on your home machine, and the other is to install Cura 2.6. There are a couple of things that I could not slice in Cura 2.5 forcing me to go to kisslicer, that I was able to slice in 2.6. And, of course, the other possibility is to reduce polygons. Chances are that you won't see all that detain in a 3D print in any case.
  3. OK, so I have an odd bug. Since I have installed Cura 2.6, everything seems to work perfectly, but I have only printed PLA at around 200C. So today I load up PETG. I use the default PETG material profile, and I set the print temps to 240. The settings are "Default 240 Printing 240 Printing Temperature Initial Layer 240 Initial 235 Final 225". So then I print something, everything heats to 240, and it seems to be printing well. Boom, at the end of the initial layer the temp drops to 200. Hmmm. I abort the print, and check all my settings, check I have no post processing set, slice it again. Same thing. This time I check the gcode. Sure enough G0 X-90.032 Y28.478 G1 F1800 X-90.255 Y28.538 E120.67034 M104 S200 G0 F3600 X-90.392 Y28.514 G0 X-85.533 Y28.281 G0 X-83.998 Y28.1 G0 X-81.445 Y27.562 G0 X-78.956 Y26.773 G0 X-76.552 Y25.738 G0 X-74.257 Y24.47 G0 X-72.785 Y23.498 G0 X-70.679 Y21.83 G0 X-68.652 Y19.881 G0 X-66.827 Y17.739 G0 X-65.215 Y15.427 G0 X-64.267 Y13.82 G0 X-63.043 Y11.277 G0 X-62.039 Y8.59 G0 X-61.289 Y5.816 G0 X-60.794 Y2.983 G0 X-59.923 Y-5.374 G0 X-57.075 Y-3.708 ;TIME_ELAPSED:127.274815 ;LAYER:1 M140 S70 M106 S204 G0 F5400 X-57.075 Y-3.708 Z0.5 ;TYPE:WALL-INNER I have no idea why that M104 would be there. I really do not see any temperatures other than in the temperature setting area. I only have one extruder defined. Also it sort of looks like the temperature was reset right after the last use of the extruder on the first layer - which implies that the extruder was being cooled down from a warmer first layer to a 200 degree printing temperature but that just was not the way the settings were set. This is the germane part of the settings block at the end of the gcode: ;SETTING_3 _type = skirt\\nbrim_width = 6\\ncool_fan_speed = 80.0\\ncool_fan_spe ;SETTING_3 ed_max = 100.0\\ncool_lift_head = True\\ndefault_material_print_tempe ;SETTING_3 rature = 240\\ninfill_angles = [ 0,45,15,60,30,75]\\ninfill_pattern = ;SETTING_3 zigzag\\ninfill_sparse_density = 40\\nlayer_height = 0.2\\nmaterial_ ;SETTING_3 flow = 92\\nmaterial_initial_print_temperature = 235\\nmaterial_print ;SETTING_3 _temperature = =default_material_print_temperature\\nmin_infill_area ;SETTING_3 = 2\\nprint_sequence = one_at_a_time\\nretraction_hop_enabled = True\ ;SETTING_3 \nretraction_hop_only_when_collides = True\\nskirt_line_count = 3\\ns ;SETTING_3 upport_infill_rate = 21\\nsupport_z_distance = 0.5\\ntop_bottom_patte ;SETTING_3 rn = concentric\\ntop_bottom_pattern_0 = concentric\\nwall_thickness ;SETTING_3 = 1.2\\n\\n"}
  4. Go into your printer settings - you will need to give Octoprint the ip address of your octoprint server and the port you have it running on. You will also need to go into octoprint settings and get the API Key (best with copy) and paste it into the printer setup. This has to be defined separately for each printer ecause it most probably will be different for each printer. Once you do that, octoprint appears as a third option with "save to file" and "save to SD card" (when you have an octoprint enabled printer selected). When you click on "Print with Octoprint" it uses Octoprint's web interface to send the file to the octoprint server's staging area.
  5. So I built a simple object in openscad, it is a topless cube of (parametric) size with (parametric) wall thickness that has a mark on it every (parametric) mm. My theory was to use it for generating test cubes for printing extrusion and temperature towers. I have reproduced this code below, despite the fact that it is not germane to this in case anyone is interested. In any case, the obvious question is how do you get it to get it to change temperatures or extrusion percentage every markOff (3) mm. So I decided to use a bunch of "tweakatz" post processing calls. I added all the calls, sliced, and saved a project - and when I reloaded the project, it didn't reload my tweaks. I had anticipated editing those calls - to change extrusion percentage, to produce a different range for ABS, Nylon, even PETG. Do I really have to add a bunch of these every time I want to do this with an object with different wall thicknesses, different temperatures, and the like? I have looked, I don't see how to do this. Ancient versions of Cura used to save these, I think with the printer definition. They should be saved somewhere, maybe in the project. Is this just another situation where I don't know the software that well? I have looked around the questions here and the doc, I found the explanation of how to use post processing, but nothing explains how to save the settings. // This code is original code by Nicholas J. Simicich.// The copyright of this code is disclaimed and dedicated// to the public.cubeThickness = 0.48; // set to extruder size plus 20%cubeBase = true;cubeBaseThickness=0.5; // fill in the bottom.cubeHeight = 40; // As tall or short as you want.cubeSize = 15; // typically 10mm or 20mm, your choice.// This allows you to divide the test cube into bands, marked by small // square protrusions on the outside of the tower. We leave a minimum// of markOff clear at the top of the tower for measurements.// This test cube can't automatically change extrusion percentage as// we step up, nor can it change temperatures. That can be handled in// kisslicer or using a cura add-on script very easily.// The marks are little triangular shelves. They are supposed to// start the same width as the wall and then grow until they are // markSize larger. A good first choice is cubeThickness.mark = true;markSize=cubeThickness;markOff = 3;// The above says produce a cube that is 15 by 15 by 40, with a 0.5mm // thick base. The walls should be 0.48.mm thick. Everything will be as// square as possible.module ring(size=cubeSize,markSize=1) { difference() { linear_extrude(height=markSize, scale=(cubeSize+markSize)/cubeSize, convexity=25) { square(cubeSize,true); } cube([cubeSize,cubeSize,markSize*4], true); } // difference} // module// create the cube bodylinear_extrude(height=cubeHeight) { difference() { square(cubeSize,true); offset(delta=-1*cubeThickness) square(cubeSize,true); } // difference} // linear_extrude// create the optional baseif(cubeBase) { cube([cubeSize,cubeSize,cubeBaseThickness],true);} // if// create the optional marks on the tube sideif(mark) { for(i = [markOff:markOff:cubeHeight-markOff]) { translate([0,0,i-1]) ring(cubeSize,markSize); }}
  6. For anyone who cares, this is the fixed script: #!/usr/bin/env python from ..Script import Script class AddPowerOn(Script): def __init__(self): super().__init__() def getSettingDataString(self): return { "name":"Add Power On Before Warming", "key": "AddPowerOn", "metadata": {}, "version": 2, "settings": {} } def execute(self, data): for layer in data: index = data.index(layer) layer = "M80\nG4 P3000\n" + layer data[index] = layer #Override the data of this layer with the modified data return data break return data
  7. Both of these solutions work, thanks. I put in the triple quotes because my example had them. Sigh. It never occurred to me that if I put the warming commands in that CURA would see that and not add them.
  8. Just a guess to help with diagnosis but what is the circumference of the hobbed bolt? Have you tried just taking your printer until it is just extruding into the air, not through a nozzle, somehow, (depends on your printer, of course) and then see if it just extrudes, no load, smoothly. Feel the filament as it nears the motor, any vibration, etc? grip the filament more tightly, and try again, does it now show any issues? I might swap the extruder motor with another motor on the printer, check the motor driver, see if the amperage is right. If the hobbed gear's circumference is nothing like 45mm, not a multiple or a fraction thereof at a multiple, I sort of wonder what could be going on? Grinding usually indicates some sort of blockage, like when you are doing a first layer and you are too close to the plate so that the melted filament can't escape - or when the extrusion is just too fast, and therefore the drive motor slips. It could also be caused by something stopping the filament coming off of the spool - and with a bowden tube it could be caused by friction in the bowden tube. I have heard of people using a drop of olive oil or light machine oil in the bowden tube. Something to try. I am going to presume that you have changed your filament during the long debugging process you described. I am also going to assume that you have looked at the reported temperature and it does not show any huge changes. So that would take out irregularities in the filament as an issue, and so forth. Good luck.
  9. OK, I have a printer that I usually keep plugged in to a Raspberry Pi. It has a SSR that is controlled by M80 and M81. I habitually power the printer's main power supply off after prints, automatically, while providing 5 volts through the USB. This means that the arduino stays on and it can turn on the power supply. So I stuck the M80 in the printer prefix and it didn't work. It worked when I started the print and then ran to the printer front panel and turned on the power supply. Examination of the gcode file showed that the printer prefix was not really a prefix, the warmup stuff was first, and, of course, nothing was going to warm up without the power supply. So I thought, "OK, I will run a gcode exit to add M80 and G4 (to let the power settle) before continuing." Let me explain that I hate python, I know I am in the far minority but I think it is totally wrong headed. But I have been a coder for 40+ years (retired) and so I can pretty much do any language with any structure. I started with a working python exit and came to this: from ..Script import Scriptclass AddPowerOn(Script):def __init__(self):super().__init__()def getSettingDataString(self):return """{"name":"Add Power On Before Warming","key": "AddPowerOn","metadata": {},"version": 1,"settings": {}}"""def execute(self, data):for layer in data:index = data.index(layer)layer = "M80\nG4 P3000\n" + layerdata[index] = layer #Override the data of this layer with the modified datareturn databreakreturn data (OK, that looks bad, sorry, I guess it is because the lines have extra newlines on them - they look good to me until I preview, sorry, the extra blanks are not there when I look at the file.) Pretty simple, right? No settings, no if. It uses the same system as the script I cannibalized to peel out some data and it just sticks a couple of lines of gcode at the beginning. I ran it separately to see that I had proper indentation (what a stupid idea, but you know I hate python) and I got the spacing to where it no longer gave me errors. Sigh. But it would not compile because I guess you have to instantiate the class first, and then the children. In any case So when I put this into the c:\program files\cura 2.4\plugins\postprocessingplugin\scripts directory, it stops me from accessing any of the scripts there. No error message I can see, I checked log and stderr, just an empty list when I try to display the list of exits. I tried installing python, windows version, on my system, I tried restarting cura several times. No joy. I take the exit I "wrote" out of the directory by renaming it to a non-py suffix. And we now see the exits again. So, what am I supposed to do to properly add this exit? I have dug around, I don't see anything that I can relate to it. Something I am doing is causing the system not to see any exits. I did this under 15.6 or some such, a while back. I see nowhere that the scripts are listed, I can only imagine that the directories are read to determine names. I saw something about dependencies between exits but I don't think that is my issue. Can anyone help with this?
  • Create New...