Skip to content

Position Restrictions

FormerLurker edited this page Sep 3, 2018 · 2 revisions

These are a gem, and can dramatically increase print quality depending on the settings. They can also hog a lot of CPU time if you add too many of them.

A position restriction can be used to restrict any snapshot motions to a specific area on your print bed, or to completely prevent any snapshots from being taken within a given area.

Use Cases:

  • Limit snapshots to a part of your print where quality doesn't matter as much.
  • Prevent snapshot movements over critical parts of your print.
  • Minimize your movements by putting a position restriction very near to your snapshot location.
  • In some cases you can use position restrictions to keep marks off of the outside of spiral vases! It doesn't work for every print due to the complicated geometry, but when it does it is great!

You can add as many position restrictions as you like, and they apply to all of the triggers (timer, GCode, layer/height).

Position Restriction Type

You have two options:

  1. Must be inside - The print head MUST be exactly on or inside the given shape in order to trigger
  2. Cannot be inside - The print head must be completely outside of the given shape

Please note that there is some rounding going on when calculating positions along the boundary of the shape. The edge cases I have tested have worked, but I haven't been able to test all possible cases yet. I will add any additional details as I learn/test more.

Position Restriction Shape

Controls the size and position of your shape. All coordinates are absolute!

Two shapes are currently supported:

  1. Rectangle - The rectangle is defined by two corners, and is always axis aligned (no rotation option yet). A line is also permitted here (though not yet tested), but you either need to land exactly on the line, or you have to enable 'Calculate Intersections' to make this useful.
  2. Circle - Defined by the X,Y coordinate of the center and a radius (Not the diameter, this is very important).

Calculate Intersections

This brand new (Alpha) feature is very interesting. Without this option, Octolapse only looks at the coordinates AFTER GCode is executed to determine if the point is within the position restriction. When this option is enabled, Octolapse will look at the path of travel from the current position to the final position after executing the current GCode command. Octolapse will calculate all intersections with any position restrictions, and will determine if any of these points are pass your position restriction tests. If so, Octolapse will break up the current GCode commands into 2, and will take a snapshot starting from the intersection point.

Octolapse searches the first in-position intersection point at the moment, since it seems efficient and simple.

Here is an example using absolute X and Y, and relative E coordinates: Previous GCode Command: G1 X0.000 Y10.000 Current X,Y position: 0,10 Current Position Restriction: 'Must Be Inside' Rectangle from (5,5) to (15,15) with 'Calculate Intersections' enabled. Current GCode command (not yet sent to printer): G1 X25.000 Y10.000 E1.00000 Two intersection points are available: 5,10 and 20,10 Since both 5,10 and 20,10 are in position (not overlapping any forbidden areas), Octolapse will break the current GCode command into 2. Assuming Octolapse finds the position 5,10 first the following two GCode commands will be created:

G1 X5.000 Y10.000 E0.40000 G1 X25.000 Y10.000 E0.60000

Octolapse will execute the first command before any snapshot commands are sent, and will send the second command after all of the snapshot GCodes are executed, including changes to absolute/relative mode, speed, etc.

This option is GREAT if you want to take snapshots only around a very small area of you print, say one with only infill under a solid surface. It does use a lot of processing power, so it might be best to limit this option to better hardware. If you run into problems with stuttering, either upgrade your hardware, reduce the complexity of your GCode (turning detail too high can cause problems on any print done over a serial connection!), or turning this option off. See performance considerations for more details (If I've created that page yet).

Adding and removing position restrictions

You MUST click 'Add Position Restriction' and save your profile before using any position restrictions. This will add the new restriction to a list of active restrictions. Always double check ALL your values before saving your profile (it is easy to get this wrong, unfortunately). After adding your position restriction verify it in the table before saving the profile.

To delete a restriction just click the 'Remove' button next to the 'Current Position Restriction' table. If you do NOT see the 'Current Position Restriction' table, you do not have any currently enabled.

Notice of active position restrictions

It's easy to forget that you have position restrictions enabled, and they often need to be customized/removed for certain types of prints. Because of this (and a request from a very nice and helpful user who will get a shout out if I get permission to do so), I've added a little reminder that appears at the top and bottom of the Snapshot Profile Edit screen. If you have 1 restriction enabled you'll see this:

There is currently no notification on the Octolapse tab or within the Snapshot Profiles list, but I'm thinking about adding this too! If you'd like to see this please create an issue and I may accelerate the implementation.

Clone this wiki locally