Pause at HEIGHT (NOT layer)?


#1

Hello,

So I've been searching around and so far, all I can seem to find is a commend (below) for pausing the print at a certain LAYER, but I have not seen a command to pause the print at a certain HEIGHT. Is this possible?

Here's what I have to pause at a certain LAYER - I input this into the "Additional terminal commands for post processing" in SImplify3D right now but if there's a better way through Octoprint or something, I can do that as well:

{REPLACE "\n; layer 22, Z = " "; layer 22\nG28 Y0 X0\nM300\nM25\nG92 E0\nG28 Y0 X0\n; layer 22 "}

Can I replace "Layer" with something that will stop it at a specified height?

Here's the problem: I can pause a single model at layer 20 and it works fine... but if I try to print 2 of those models, it then stops at layer 10. I can try to double that but then it only stops for one model instead of both... so on the other model, it will stop before or after that layer but not on it. Kind of difficult to explain but if you try it, you'll see. This is why I was wondering if it's possible to just stop it at a certain height instead of layer number.

One other thing: I'd like it to go to position X200 Y400 instead of homing. Anyone know what to replace the G28 commands with to achieve this?

I can probably also make this work if I print sequentially but then I'm more limited on how many I can print at once. Would be great if I could print maybe 20 of these parts at once, have it pause at a certain height and then press the button to continue printing all.

Any tips or advice would be much appreciated!


#2

I'm not familiar enough with the approach that Simplify3D makes for doing multiple objects on the print bed. I know Cura.

I would guess that Cura (with multiple parts) would generate a single "Layer 22" comment. Testing that theory...

;LAYER:22
;MESH:InlineClip.stl(2)
G0 X60.502 Y53.737 Z4.7
;TYPE:WALL-INNER
...
;MESH:InlineClip.stl
...
;MESH:InlineClip.stl(1)
...

So Cura's version creates a layer-level comment then iterates through three instances of the same mesh file each with their own comments to mark where they begin.

Note that the height you're seeking is there at the end of the next G0 command which follows the initial layer-identification comment. If this were a Cura-sliced exercise that we're solving, the approach might be to replace:

(;LAYER:22\n;[^\n]*)(\nG0(^Z)*Z4.7\n)

...with...

($1)\nG91\nG0 Z2\nG90\nG0 X200 Y400\nM300\nM25\G92 E0($2)

Of course this won't work because I haven't tested it. The attempt would be to mark two zones in that first regex that may then be used later in the second half of that replacement. And you then shim in new stuff between that.

As for the "new stuff" I'm attempting here to go into relative positioning mode in order to raise the hotend so that moves don't crash into things. I immediately go back into absolute mode so that the movement command works.

In theory, the next bit that was saved and replayed will include a G0 ... Z4.7 in my case and we're now in absolute mode. As it moves back to where it belongs in the X/Y, it's also returning to the correct Z position and probably won't crash into anything. The bigger that G0 Zn (n value) from earlier, the more safety that you'd be including in this. Hopefully that makes sense.


There may be a plugin that does this. I have attempted to use earlier PauseAtZ and similar post-processing scripts in the past but I drilled a hotend into my plastic bed as a reward and I vowed to write my own solutions since then.

It's good to test things "dry" (without heat) to make sure it behaves as you expect.