Details on operations available to process slice data and to generate or refine toolpath information
Depending on their function, these filters typically take only closed contours or open lines, or hatches, and using them on toolpath types they are not aimed at may produce undefined behavior. For example, it does not make sense to create intersections between open lines as open lines on their own have no enclosed area.
Jump to:
- Generate offset
- Reinforce thin walls
- Remove self-intersections
- Boolean operations
- Create intersection
- Create filling
- Filling parameters
- Trim hatches
- Extend hatches
- Convert contours/hatches
- Contour segmentation
- Flow segmentation
- Downskin
- Multilaser splitting
- Multilaser region splitting
- Multilaser quadrant splitting
- Reduce points
- Aggregate slices
- Sort contours
- Z-compensation
- Run Lua script
- EBPA calculation
Generate offset
Generates a new toolpath parallel to the original and offset by a definable distance.
Expects the offset value itself (positive values indicate inner offsets, towards enclosed area), and a roundness in degrees to generate a rounded corner with a radius of subdivisions no larger than the roundness value. A rounded corner is only generated at convex corners. Concave corners do not receive subdivisions. The lower the value, the higher the subdivision of the curve around the corner.
Hatches and open contours cannot be offset. Even though they technically have a known normal, they are maintained in the output without change or offset.
Use tag mapping to apply a different offset (a percentage of the specified offset value) along those contour segments that originated on a triangle with a different face group. This requires that the original part had face groups defined. Also, this is different from the tag property of the whole slice stack.
TopReinforce thin walls
This generates additional toolpaths along narrow sections of a contour that might otherwise go unsupported by infill or internally offset contours. This operation exists in two variants that calculate the necessary toolpaths with different algorithms but still for the same purpose. You should experiment which one is suited best to your application.
Expects values for Offset, the threshold distance up to which a wall is considered thin enough for this operation, and for Shorten terminals, which makes the path terminate before it touches the original contour at its far end, such as in corners.
TopRemove self-intersections
Intersections can appear when a part with two overlapping shells was sliced. This operation splits off and deletes any overlapping contours, stitches them together properly while maintaining enclosed and valid hollows.
Boolean operations
This operation has two functions: It either keeps the areas occupied by any of the selected slice stacks and merges it into one common area, or, any exclusive combination of stack areas may be subtracted from any other exclusive combination, for example: (A+C)-(B+D).
Create intersection
This keeps only those areas that all selected slice stacks have in common.
Create filling
Generates toolpaths for infill, or filling patterns.
- Simple hatching
Simple parallel lines that scan the entire fillable slice area in one single pass.
- Stripe filling
Parallel lines cover the fillable slice area in as many parallel tracks (stripes) as it takes, with the stripes going in a direction perpendicular to the lines that comprise the stripes.
- Quad islands
The fillable slice area is covered with two passes of complementary checkerboard patterns. The lines in one pattern are aligned perpendicularly to those in the complementary pattern.
- Checkerboard
The fillable slice area is covered with two passes of complementary checkerboard patterns. The lines in both patterns are parallel; however, the islands are hatched in an interleaving manner.
- Radial hatching
Hatches are oriented radially from the geometric center of the full slice stack. As hatch lines spread out and the distances become larger, new hatch lines are inserted to keep their distance within a margin, forming concentric stripes of hatchlines.
Alternatively, hatches are drawn in a continuous spiral outwards from the center.
Filling parameters
Some parameter names have been renamed to improve alignment of function and naming. This is a cosmetic change and does not introduce functional changes.
Parameter | Simple | Stripe | Quad | Checker | Radial |
---|---|---|---|---|---|
Hatch distance Distance between hatchlines |
Yes | Yes | Yes | Yes | Yes; target median distance |
Radial center Choose between drawing radials per island (if there are multiple in a slice) or for the entire occupied area of the current slice (not the complete slice stack). In any case, the radials are drawn around the geometric center of the respective area or areas. |
Yes | ||||
Mode Switches between radial and spiral hatching (separate concentric stripe rings vs. single spiralling stripe) |
Yes | ||||
Spiral direction Choose between Clockwise and Anti-clockwise. |
Yes | ||||
Stripe width Length of individual hatchlines that form the stripes. Includes gap width. |
Yes | ||||
Stripe gap Distance between stripes, shortening the hatches. A negative value produces overlaps. |
Yes | ||||
Quad width Size of a quad field in local X |
Yes, excluding gap | Yes, including gap | |||
Quad height Size of a quad field in local Y |
Yes, excluding gap | Yes, including gap | |||
Quad gap
Gap between quad fields |
Yes; does not affect field size, effectively starts next set of fields this much later or earlier | Yes; shortens quad height and width on both sides by half this value | |||
Layer variation Varies width and height of alternating fields in repeating, sinusoidal periods of 60 layers by up to this amount to minimize coincidence of field borders across layers |
Yes | ||||
Ring width Width of a concentric stripe |
Yes | ||||
Minimum radius Hatch lines are only drawn from this minimum radius outwards. Leaves an unexposed circular area in the center. |
Yes | ||||
Minimum hatch length Drops any hatches shorter than this distance |
Yes | ||||
Rotation start Initial rotation of the hatching pattern. 0° is equivalent to +Y. Positive values mean clockwise shift of rotation start. Rotation bracketing still applies: if the start was given as 63° when the bracket only allowed 0° to 60°, the actual start value would be 3°. |
Yes | Yes | Yes | Yes | Yes |
Rotation increment Additional rotation for every subsequent layer after the first. Positive values mean clockwise rotation. Can be negative. |
Yes | Yes | Yes | Yes | Yes |
Only every nth layer Draws only those layers that are increments of n from the first and leaves all other layers of this stack blank. |
Yes | Yes | Yes | Yes | |
Hatch origin increment Shifts the hatchlines between layers sideways by this amount so that they are not collinear between layers. Positive values only, shifting layers to local -Y. Use values larger than half the hatch distance to effectively produce a shift in local +Y. |
Yes | Yes | Yes | Yes | |
Sort type Changes the local order and direction of drawing hatches. Important: Does not reorder the drawing of islands (separate, disconnected contours). To reorder the drawing of islands, use the
Sort contours filter before running a filling filter, or deactivate
Regionalization.
|
Yes | Yes | Yes | ||
Rotation bracket Clamps interlayer rotation to an arc of this size. Used to prevent drawing hatches in a sequence that marches with the gas flow rather than against it. Effectively: [current layer angle] = ([previous layer angle] + [Rotation increment]) modulo [Rotation bracket] (Bracket offset ignored for simplicity) Positive values only |
Yes | Yes | |||
Rotation bracket offset Shifts the entire rotation bracket, or clamping arc, by this angle. Positive angles mean clockwise shift. Positive values only |
Yes | Yes | |||
Stripe shift per layer Shifts stripes sideways |
Yes | ||||
Only every n-th stripe Keeps or discards stripes in intervals Tip: To fill the whole area with stripes, use multiple stacks with an only-every setting for each but with different
Stripe offset values between them so that they end up complementing each other.
|
Yes | ||||
Stripe offset Shifts which stripes are kept or discarded when Only every n-th stripe is >1 |
Yes | ||||
Overlap Sets an overlap between concentric hatch stripes. Positive values result in an overlap, negative values result in an unexposed gap between stripes. Does not affect ring width; effectively starts next ring earlier or later. |
Yes | ||||
Alternating hatch direction Alternates the draw direction of consecutive hatchlines, zig-zagging them |
Yes | Yes | |||
Alternating hatch cycles Draws hatchlines in an interleaved fashion. Default 0#, interleaving starts at 2#. Effectively a built-in Hatch permutation filter. |
Yes | Yes | |||
Connect hatches Exposes the connection between the end of a hatch to the start of the next one |
Yes | ||||
Unidirectional hatching Enforces drawing in only one direction. This is the inverse of Alternating hatch direction. |
(present but ignored) | (present but ignored) | Yes | Yes | |
Alternate Alternates the draw direction of consecutive hatchlines, zig-zagging them |
Yes | ||||
Regionalization Fills disconnected contours, or islands, in the same stack's layer either separately or as if they were all connected as one. Has no (visible) effect when there is only one closed contour to fill. |
Yes | Yes | Yes | Yes | |
Adaptive perimeters When set to Yes, and if a ring cannot be drawn in its full width as specified by Ring width, not even partially, its hatching is calculated from the maximum possible width instead, possibly resulting in a slightly lower hatch count for those rings as the hatch distance won't fit quite that many times into the remaining circumference. Other rings remain unaffected. |
Yes | ||||
Add contour Includes a trace of the original contour in the hatch output as well |
Yes | ||||
Keep original slice Keeps in the project the slice stack that was used to derive and generate the filling |
Yes | Yes | Yes | Yes | Yes |
Trim hatches
Uses the contours in a stack as a stencil on hatching in the same stack. Splits hatches where the contours crossed them, then returns the hatch segments from the inside of the contours and discards hatch segments from the outside.
TopExtend hatches
Experimental filter to increase the length of contour or hatch lines beyond their original start and end points to compensate for rise and fall times of laser switching and galvo acceleration ("skywriting") and is typically only needed for older machines that do not perform such compensation on their own or do not understand different methods of compensation like premark, postmark, and other delays. Accepts values for a linear, a quadratic, and a cubic term.
TopConvert contours/hatches
Provides a number of tools to convert or tweak hatches and contours.
- Convert contours to hatches
Changes the vector type of all contours to hatches
- Convert hatches to contours
Changes the vector type of all hatches to contours
- Filter contours
If a slice stack's data is composed of multiple types of toolpaths, use this to keep only one or more of hatches, closed contours, or open contours.
- Connect contours
When multiple contours are present in a slice layer, a connection is generated between the start and end points of them, even for closed contours where start and end are at identical coordinates. Does not connect the last end to the first start, though.
Uses an optional distance threshold to prevent connecting across islands not meant to be connected. This function is useful to reconnect polygon stretches that are, or got, split unnecessarily.
- Filter small contours
Removes any contours that enclose an area up to a specifiable area.
- Revert direction
Flips the toolpath direction
- Randomize seam
Moves the start and end points of contour lines around to avoid accumulating artifacts from always starting and ending in the same location
- Hatch permutation
Reorders hatch drawing so that they are drawn in interleaving passes. For example, draw the even ones first, then the odd ones.
- Layer filter
Forwards toolpath data only for layers of a stack that pass the filter; toolpath data of all other layers is discarded
- Extract contour tags
Splits contour segments that originated on triangles of different face groups into separate slice stacks
Contour segmentation
Modify the toolpath such that contours are exposed in interleaving segments.
TopFlow segmentation
Modify the toolpath to ensure the laser is always moving upstream of the purging gas flow.
Splitting by gas flow, specify the gas flow angle, the direction tolerance, and decide whether to overwrite any previous changes of toolpath direction, and whether to apply the splitting to hatching as well, not just to contours.
The gas flow angle specifies the bearing where gas flow approaches head-on. 0 degrees of gas flow is equivalent to the -X direction, and positive angles go anti-clockwise. In turn, contours are be split at the points farthest away and be directed towards the specified flow bearing.
The direction tolerance is a threshold to allow for small sections in the toolpath to go with the direction of gas flow for up to this distance without causing another contour split.
TopDownskin
Generates a new contour toolpath based on the angle across the immediately neighboring slices, a shrinkage value to reduce artifacts, an expansion value to restore the originally generated area, but cleaner, and a thickness parameter that determines the count of layers across which the angle is averaged. Optionally, the downskin contours may be trimmed with the original contour to, for example, reduce or avoid unwanted remelting.
TopMultilaser splitting
This experimental function subdivides existing contours into lanes of patches for concurrent exposure by multiple laser emitters capable of reaching the entire buildroom each. The patch sizes aim to cover the available maximum slice area in equal shares. Gas flow is observed and laser distribution minimizes obstruction by smoke.
For each set of blocks, one for each laser, a separate slice stack is generated to enable having separate properties between them, primarily a unique laser index. On generation of the separate stacks, this laser index is already set, starting 1.
Laser count |
How many concurrent lasers are available over the entire maximum area of the part slice stack |
|
Hatch mode |
Controls the output variant.
|
|
Default distance |
Length of blocks in the direction against the gas flow |
|
Shift per layer |
Moves the start and end points of hatch segments to avoid accumulating artifacts from always starting and ending in the same location. |
|
Gas flow angle |
Specifies the direction of the purging gas flow. 0° is equivalent to the -Y direction, and positive angles indicate clockwise rotation. |
|
Overlap in flow direction |
Widens lanes to overlap with each other. Can be negative to produce a gap between lanes. |
|
Overlap against flow |
Extends patches to overlap by this much along their lanes. Cannot be negative. |
|
Accuracy |
All distance calculation results are rounded to increments of this value. |
|
Max. block size |
Determines the upper boundary for the block size used to subdivide the slice area. Larger blocks follow the hatching less accurately but take less time to calculate. |
|
Min. block size |
Sets the lower boundary for block size as a fraction of the total area of the bounding box of vector data of the current slice layer. Block sizes that would be smaller than this value are merged with other blocks. |
|
Invert order |
Flips the drawing order of patches within a split stack |
Caution: This draws patches in the downstream order of gas flow.
|
Avoid group splitting |
|
|
Weight factor laser <number> |
Lets individual lasers get larger or smaller shares. Valid for all layers equally. |
|
Splitting factors per layer |
Uses a table of layers vs. lasers to provide individual weights. Provides functions for manual editing and import and export of CSV files. |
|
Keep original slice |
Keeps the slice stack used as the source for this command in the project tree or removes it |
Multilaser region splitting
This experimental function splits available toolpath into a number of stripes or lanes relative to the buildroom, centered around {X, Y} = {0, 0}. Intended to be used with machines where lasers only cover their own section each rather than the entire buildroom.
For each set of blocks, one for each laser, a separate slice stack is generated to enable having separate properties between them, primarily a unique laser index. On generation of the separate stacks, this laser index is already set, starting 1.
Laser count |
How many concurrent lasers there are available in the buildroom |
Caution: Changing this value after first generation only recalculates the distribution but does
not add or remove slice stacks.
|
Region size |
Width of the stripes closest to the center. |
Note: The outermost stripes cover the remaining areas in negative and positive directions regardless of their respective widths to fill.
|
Delta 1, 2, 3 |
Shifts the start of the second, third, and fourth stripe, if available |
|
Center point |
(not used) |
|
Gas flow angle |
Rotates the stripes about {X, Y} = {0, 0}. 0° splits toolpath along the X axis, resulting in splits or lanes parallel to the Y axis, and positive angles indicate clockwise rotation. |
Multilaser quadrant splitting
Splits any available toolpath into exactly four quadrants or an adjustable number of stripes relative to the buildroom, centered around {X, Y} = {0, 0}. Intended to be used with machines where lasers only cover their own section each rather than the entire buildroom.
For each set of blocks, one for each laser, a separate slice stack is generated to enable having separate properties between them, primarily a unique laser index. On generation of the separate stacks, this laser index is already set, starting 1.
Quadrant type |
Sets the shape and arrangement of the toolpath segments with respect to the buildroom |
|
Laser count |
|
|
Platform dimensions |
Absolute platform size specified by starting and end points in X and Y. |
Note: Any existing toolpath beyond this size is
truncated.
|
Offset range |
Permits the center point between quadrants to be shifted with every layer to avoid repeatedly hitting the same point and quadrant border. This parameter defines a bracket for the shift of this distance along X and Y each, but minus half the range, so that the shift range is centered around {X, Y} = {0, 0}. |
|
Offset per layer |
Increment for the shift between layers. The total shift is applied modulo the offset range. Recommended to not be an even divisor of the range value to delay exact coincidence across layers. |
|
Close cuts |
If quadrant splitting runs through closed contours, the resulting open contours are closed along the split lines. Does nothing for open hatchings. |
Caution: This produces coincident lines of exposure along the closed splits.
|
Keep original slice |
Keeps the slice stack used as the source for this command in the project tree or removes it |
Reduce points
During import, more points than needed may be saved in a toolpath. For example, every time slicing traces across a triangle node edge, a new point is inserted in the path even when the path itself would be perfectly straight. This operation reduces the amount of points needed to maintain the original shape while adhering to a specifiable tolerance of deformation.
TopAggregate slices
Sums slice contours downwards and keeps the generated "shadow slice". Does nothing on hatches.
TopSort contours
To reduce the "off" time of lasers during which beam deflection is repositioned, contours of a stack layer are sorted into a better order. Does not work on hatches, they are discarded by this filter.
TopZ-compensation
Performs a Z-compensation by a given translation value to compensate for overpenetration into unrendered material
Top