Source code for compas_slicer.post_processing.sort_into_vertical_layers
from compas_slicer.geometry import VerticalLayersManager
import logging
logger = logging.getLogger('logger')
__all__ = ['sort_into_vertical_layers']
[docs]def sort_into_vertical_layers(slicer, dist_threshold=25.0, max_paths_per_layer=None):
"""Sorts the paths from horizontal layers into Vertical Layers.
Vertical Layers are layers at different heights that are grouped together by proximity
of their center points. Can be useful for reducing travel time in a robotic printing
process.
Parameters
----------
slicer: :class:`compas_slicer.slicers.BaseSlicer`
An instance of one of the compas_slicer.slicers classes.
dist_threshold: float
The maximum get_distance that the centroids of two successive paths can have to belong in the same VerticalLayer
Recommended value, slightly bigger than the layer height
max_paths_per_layer: int
Maximum number of layers that a vertical layer can consist of.
If None, then the vertical layer has an unlimited number of layers.
"""
logger.info("Sorting into Vertical Layers")
vertical_layers_manager = VerticalLayersManager(dist_threshold, max_paths_per_layer)
for layer in slicer.layers:
for path in layer.paths:
vertical_layers_manager.add(path)
slicer.layers = vertical_layers_manager.layers
logger.info("Number of vertical_layers: %d" % len(slicer.layers))
if __name__ == "__main__":
pass