Path FromShapes

Description
Path FromShapes doesn't match the current Path workflow. For that reason it's moved to the experimental features.

This tool generates tool-paths from Path Object edges.

Tool-paths are uncompensated for tool radius. There is no Tool controller associated with the generated tool-paths.



Usage
All edges associated with the 3D Model selection will be included.
 * 1) Select edges by selecting the entire object from the 3D view or Tree view, or by selecting individual edges, or by Faces from the 3D view.
 * 2) Press the  button

The output tool-path is added outside the Path Job.

Options
All Options provided are available only from the FromShape.Property.Data view, and include:
 * Retraction Axis
 * Retraction Height
 * Resume Height
 * Feed Rate
 * Feed Rate Vertical

Data
Empty

View
Empty

Scripting
FreeCAD Scripting Basics.

DocString Info
Returns a Path object from a list of shapes


 * shapes: input list of shapes.


 * start (Vector): feed start position, and also serves as a hint of path entry.


 * return_end (False): if True, returns tuple (path, endPosition).

If not 'None', the output wires will be transformed to align with the selected plane, and the corresponding GCode will be inserted. 'Auto' means the plane is determined by the first encountered arc plane. If the found plane does not align to any GCode plane, XY plane is used. 'Variable' means the arc plane can be changed during operation to align to the arc encountered.
 * arc_plane(1): 0=None,1=Auto,2=XY,3=ZX,4=YZ,5=Variable. Arc drawing plane, corresponding to G17, G18, and G19.

'2D5' explode shapes into wires, and groups the shapes by its plane. The 'start' position chooses the first plane to start. The algorithm will then sort within the plane and then move on to the next nearest plane. '3D' makes no assumption of planarity. The sorting is done across 3D space. 'Greedy' like '2D5' but will try to minimize travel by searching for nearest path below the current milling layer. The path in lower layer is only selected if the moving distance is within the value given in 'threshold'.
 * sort_mode(1): 0=None,1=2D5,2=3D,3=Greedy. Wire sorting mode to optimize travel distance.

algorithm see fits. Set to zero to disable wire breaking.
 * min_dist(0.0): minimum distance for the generated new wires. Wires maybe broken if the

The sampling is dong using OCC GCPnts_UniformAbscissa
 * abscissa(3.0): Controls vertex sampling on wire for nearest point searching


 * nearest_k(3): Nearest k sampling vertices are considered during sorting

'Normal' means CCW for outer wires when looking against the positive axis direction, and CW for inner wires. 'Reversed' means the other way round
 * orientation(0): 0=Normal,1=Reversed. Enforce loop orientation


 * direction(0): 0=None,1=XPositive,2=XNegative,3=YPositive,4=YNegative,5=ZPositive,6=ZNegative. Enforce open path direction

as connected. You may want to set this to the tool diameter to keep the tool down.
 * threshold(0.0): If two wire's end points are separated within this threshold, they are consider


 * retract_axis(2): 0=X,1=Y,2=Z. Tool retraction axis


 * retraction(0.0): Tool retraction absolute coordinate along retraction axis

value of the next move.
 * resume_height(0.0): When return from last retraction, this gives the pause height relative to the Z

so that more correction points can be inserted
 * segmentation(0.0): Break long curves into segments of this length. One use case is for PCB autolevel,


 * feedrate(0.0): Normal move feed rate


 * feedrate_v(0.0): Vertical only (step down) move feed rate


 * verbose(true): If true, each motion GCode will contain full coordinate and feedrate


 * abs_center(false): Use absolute arc center mode (G90.1)


 * preamble(true): Emit preambles

discretizing circular wires when you 'Explode' the shape for wire operations
 * deflection(0.01): Deflection for non circular curve discretization. It also also used for