Skip to content

Python package

ra.manufacturing

Production: repair, printability checks, identifiers, sprues, resizing, exports.

import rhinoartisan as ra

Wraps ArtisanPlugin.Scripting.ManufacturingApi.

Functions

Function
add_identifier()Adds an identifier tag to a closed ring mesh (the ArtisanIdentifier tool, headless): a pipe between the two given points on the mesh carrying an engraved reference text.
automatic_repair()Repairs the given objects into a single printable mesh (the ArtisanAutomaticRepair tool, headless): closes gaps, fixes normals, makes the result watertight.
balance_check()Checks how a pendant/earring hangs (the ArtisanBalancerChecker tool): the piece hangs from base_id (the bail or hook), and gravity pulls its volume centroid straight below the hook.
detect_non_printable()Flags the objects that would not print (the ArtisanQuickNonPrintableDetector tool): bad objects, duplicates, open surfaces and open polysurfaces, using Rhino’s own selectors.
export_all_in_one()Merges solids/meshes into ONE printable mesh and writes a binary STL (the ArtisanExportAllInOne tool, headless).
export_from_layers()Writes one STL per visible layer holding meshes, named “.stl” inside folder (the ArtisanExportFromLayers tool, headless).
import_to_layers()Imports every STL in folder, each file into its own layer named after the file with a distinct color per layer (the ArtisanImportToLayers tool, headless).
quick_check()The ArtisanQuickCheck tool, scriptable: verifies each mesh is valid and watertight, and (like the tool) recolors it green when printable, red when not.
reduce_thickness()Hollows a wall down to a uniform minimum thickness (the ArtisanReduceThickness tool, headless).
resize_ring()Batch ring resizer (the ArtisanResizer tool, headless): takes a CLOSED ring mesh and produces one resized copy per target diameter, laid out in a row (spaced by the tool’s ring distance) on child layers under a “Resizer” parent layer, one group per size — same output as the tool’s Layers mode.
sprue_cluster_tree()Cluster casting tree (the ArtisanSprueClusterTree tool, headless): a cylinder built as a grid of two crossed helix families (rhombic cells) standing on base_point, with an anchor node at every crossing; a copy of the given meshes is placed on the nodes in round-robin, each held by a mini-connector (diameter 1, length 6).
sprue_curve()Perimeter-frame sprue (the ArtisanSprueCurve tool, headless): a closed pipe frame around the piece with tapered connectors reaching it and a horizontal injection post on the front side.
sprue_external_frames()External-frame sprue (the ArtisanSprueExternalFrames tool, headless), meant for elongated pieces laid in a row (chains, bracelets): a rounded-rectangle runner around the combined bounding box of the given meshes, with pairs of thin stubs reaching inward from the long sides and, optionally, one from each short end.
sprue_external_tree()External-tree sprue for casting (the ArtisanSprueExternalTree tool, headless): a tapered trunk standing OUTSIDE the mesh at trunk_base_point with one branch per contact point reaching the outside of the closed mesh.
sprue_helix()Helix casting tree (the ArtisanSprueHelix tool, headless): a conical base, a vertical trunk and a helical wire climbing around it, with copies copies of the link mesh hung along the wire — the tool for printing whole chains in one tree.
sprue_inner_branches()Inner-branches sprue for casting (the ArtisanSprueInnerBranches tool, headless): a central post rising from base_point with one branch per contact point reaching the inside of the closed mesh (typically a ring), optionally mirrored by symmetry.
sprue_inner_tree()Builds an inner-tree sprue for casting (the ArtisanSprueInnerTree tool, headless): a trunk from base_point with branches reaching each of contact_points on the closed mesh.
sprue_multiple_copies()Multiple-copies sprue (the ArtisanSprueMultipleCopies tool, headless): a tapered trunk between trunk_start and trunk_end with one curved branch from the trunk to each of contact_points on the mesh(es).
sprue_single()Single sprue post (the ArtisanSprueSingle tool, headless): one tapered connector at point, which should lie ON the mesh (it plays the role of the tool’s pick-point-on-mesh prompt).
sprue_spiral()Flat spiral casting sprue (the ArtisanSprueSpiral tool, headless): the same chain-printing idea as the helix but with the wire coiled FLAT, standing on legs, each link hung from a single vertical connector.
sprue_tree()Radial casting tree (the ArtisanSprueTree tool, headless): a base + conical trunk rising from base_point, with floors floors x pieces_per_floor branches around it, and a copy of the given meshes distributed over the branches in round-robin.

ra.manufacturing.add_identifier()

ra.manufacturing.add_identifier(mesh_id: IdLike, point1: PointLike, point2: PointLike, text=None, diameter=None, thickness=None, font_size=None, overlapping=None) -> str

Adds an identifier tag to a closed ring mesh (the ArtisanIdentifier tool, headless): a pipe between the two given points on the mesh carrying an engraved reference text. The two points play the role of the tool’s two interactive picks — both should lie on/near the mesh. Numeric arguments with 0 keep the tool defaults (or the user’s saved defaults): diameter 1.5, thickness 1.5, font_size 2, overlapping 0.15. Returns the Guid of the new mesh (ring + tag); the original mesh is left in the document, same as the tool.

ParameterType
mesh_idIdLikerequired
point1PointLikerequired
point2PointLikerequired
textstroptional — None = the tool default
diameterfloatoptional — None = the tool default
thicknessfloatoptional — None = the tool default
font_sizefloatoptional — None = the tool default
overlappingfloatoptional — None = the tool default

ra.manufacturing.automatic_repair()

ra.manufacturing.automatic_repair(object_ids=None, precision=None, delete_original=None) -> RepairResult

Repairs the given objects into a single printable mesh (the ArtisanAutomaticRepair tool, headless): closes gaps, fixes normals, makes the result watertight. Rhino 8+ only (uses ShrinkWrap). object_ids objects to repair; None/empty = current selection. Gems are skipped automatically, like the tool. precision repair precision in mm; 0 = the tool’s configured default (typically 0.025). Smaller = more faithful and slower. delete_original True = remove the source objects after the repair. The repaired mesh is added to the last user layer with the wax color from the settings, same as the tool’s Accept button. Long operation: Rhino stays busy while it computes.

ParameterType
object_idsSequence[IdLike]optional — None = the tool default
precisionfloatoptional — None = the tool default
delete_originalbooloptional — None = the tool default

ra.manufacturing.balance_check()

ra.manufacturing.balance_check(base_id: IdLike, geometry_ids: Sequence[IdLike], apply=None, delete_original=None, tolerance=None) -> BalanceReport

Checks how a pendant/earring hangs (the ArtisanBalancerChecker tool): the piece hangs from base_id (the bail or hook), and gravity pulls its volume centroid straight below the hook. The report gives the tilt the piece would take, in degrees (0 = it hangs straight). apply True = replicate the tool’s Accept: adds ROTATED COPIES of the geometry so the centroid hangs below the base point (the originals stay unless delete_original). Default False = report only. delete_original with apply, removes the source geometry. tolerance degrees under which IsBalanced is True (default 1). Read-only unless apply is True.

ParameterType
base_idIdLikerequired
geometry_idsSequence[IdLike]required
applybooloptional — None = the tool default
delete_originalbooloptional — None = the tool default
tolerancefloatoptional — None = the tool default

ra.manufacturing.detect_non_printable()

ra.manufacturing.detect_non_printable() -> NonPrintableReport

Flags the objects that would not print (the ArtisanQuickNonPrintableDetector tool): bad objects, duplicates, open surfaces and open polysurfaces, using Rhino’s own selectors. Like the tool it leaves the offenders SELECTED so you can see them; the report lists them by category. Cheap; run it before an STL export. Nothing flagged = Count 0 and an empty selection.

ra.manufacturing.export_all_in_one()

ra.manufacturing.export_all_in_one(path: str, object_ids=None, allow_non_printable=None) -> AllInOneExport

Merges solids/meshes into ONE printable mesh and writes a binary STL (the ArtisanExportAllInOne tool, headless). Breps, extrusions and SubDs are meshed with the tool’s fine analysis parameters; every part is repaired and checked. path destination .stl (extension appended, folder created) object_ids objects to export; None/empty = current selection, and when nothing is selected every visible solid/mesh that is not a gem (like the tool’s filter) allow_non_printable the tool asks “part of the geometry is not printable, export anyway?”: False (default) fails listing the offending ids (and selects them, like the tool); True exports the valid part anyway. Returns the path plus the check summary.

ParameterType
pathstrrequired
object_idsSequence[IdLike]optional — None = the tool default
allow_non_printablebooloptional — None = the tool default

ra.manufacturing.export_from_layers()

ra.manufacturing.export_from_layers(folder: str, overwrite=None) -> List[LayerExport]

Writes one STL per visible layer holding meshes, named “.stl” inside folder (the ArtisanExportFromLayers tool, headless). Only MESH objects are exported, exactly like the tool: mesh your solids first (AutomaticRepair / ExportAllInOne mesh on the fly, this one does not). Layers without meshes are ignored. overwrite the tool asks per existing file; False skips those files (reported with Skipped = True), True (default) replaces them. Returns one entry per layer with meshes.

ParameterType
folderstrrequired
overwritebooloptional — None = the tool default

ra.manufacturing.import_to_layers()

ra.manufacturing.import_to_layers(folder: str) -> List[LayerImport]

Imports every STL in folder, each file into its own layer named after the file with a distinct color per layer (the ArtisanImportToLayers tool, headless). Files that bring no objects are skipped without creating a layer. Returns one entry per imported file. Any previous selection is cleared.

ParameterType
folderstrrequired

ra.manufacturing.quick_check()

ra.manufacturing.quick_check(object_ids=None) -> List[MeshCheckResult]

The ArtisanQuickCheck tool, scriptable: verifies each mesh is valid and watertight, and (like the tool) recolors it green when printable, red when not. object_ids None/empty = current selection; non-mesh objects are skipped. Returns one result per checked mesh.

ParameterType
object_idsSequence[IdLike]optional — None = the tool default

ra.manufacturing.reduce_thickness()

ra.manufacturing.reduce_thickness(object_id: IdLike, points: Sequence[PointLike], thickness=None, radius=None, steps=None) -> ReduceThicknessResult

Hollows a wall down to a uniform minimum thickness (the ArtisanReduceThickness tool, headless). The tool is a brush: you paint the side of the wall you want to sink and it drops to the target thickness, measured against the opposite wall and the gems (gems count as walls and their seats are masked, so nothing thins under a stone). Here the brush strokes become points: every point is a brush center ON the object’s surface, on the side to hollow (usually the inside of the shank). object_id mesh, polysurface, extrusion or SubD; the result is always a mesh that REPLACES it (same attributes/layer) points brush centers on the surface, in order thickness target wall thickness in mm; None = the tool default 0.8 radius brush radius in mm; None = the tool default (8% of the object’s bounding-box diagonal) steps brush steps applied at each point; 0 = 4. The center lands on the target at once, the rim converges with more steps. The tool warns when vertices end below the target; here that count is returned as ThinVertices instead. Returns the new mesh id and the grams saved with the document’s first metal.

ParameterType
object_idIdLikerequired
pointsSequence[PointLike]required
thicknessfloatoptional — None = the tool default
radiusfloatoptional — None = the tool default
stepsintoptional — None = the tool default

ra.manufacturing.resize_ring()

ra.manufacturing.resize_ring(mesh_id: IdLike, from_diameter: float, to_diameters: Sequence[float], names=None) -> List[ResizedRing]

Batch ring resizer (the ArtisanResizer tool, headless): takes a CLOSED ring mesh and produces one resized copy per target diameter, laid out in a row (spaced by the tool’s ring distance) on child layers under a “Resizer” parent layer, one group per size — same output as the tool’s Layers mode. mesh_id the ring mesh to resize from_diameter the ring’s CURRENT inner diameter in mm; 0 = the document’s finger size to_diameters target inner diameters in mm (e.g. [16.5, 17.35, 18.2]) names optional labels, parallel to to_diameters; default is the diameter formatted (“17.35”) Long operation (one boolean pipeline per size).

ParameterType
mesh_idIdLikerequired
from_diameterfloatrequired
to_diametersSequence[float]required
namesSequence[str]optional — None = the tool default

ra.manufacturing.sprue_cluster_tree()

ra.manufacturing.sprue_cluster_tree(mesh_ids=None, base_point=None, copies_per_mesh=None, diameter=None, height=None, cells_around=None, rows=None, wire_diameter=None) -> List[str]

Cluster casting tree (the ArtisanSprueClusterTree tool, headless): a cylinder built as a grid of two crossed helix families (rhombic cells) standing on base_point, with an anchor node at every crossing; a copy of the given meshes is placed on the nodes in round-robin, each held by a mini-connector (diameter 1, length 6). Copies anchor by the bottom-center of their bounding box, like the tool’s default pick. mesh_ids the model meshes; None/empty = current selection. base_point where the base sits (default: world origin). copies_per_mesh copies of EACH mesh; 0 = fill the free nodes. Numeric arguments with 0 keep the tool defaults: diameter 65, height 90, cells_around 8, rows 7, wire_diameter 3 (mm). Long operation. Returns the ids of ALL the meshes added (grid, base, connectors and every model copy), baked to the last user layer with the wax color, same as the tool’s Accept.

ParameterType
mesh_idsSequence[IdLike]optional — None = the tool default
base_pointOptional[PointLike]optional — None = the tool default
copies_per_meshintoptional — None = the tool default
diameterfloatoptional — None = the tool default
heightfloatoptional — None = the tool default
cells_aroundintoptional — None = the tool default
rowsintoptional — None = the tool default
wire_diameterfloatoptional — None = the tool default

ra.manufacturing.sprue_curve()

ra.manufacturing.sprue_curve(mesh_id: IdLike, curve_id=None, offset=None, smooth=None, width=None, height=None, connection_count=None, connection_diameter=None, symmetry=None) -> List[str]

Perimeter-frame sprue (the ArtisanSprueCurve tool, headless): a closed pipe frame around the piece with tapered connectors reaching it and a horizontal injection post on the front side. The frame is the automatic silhouette of the piece pushed outwards by offset, or the curve curve_id when given (the tool’s custom-curve pick). Connections are seeded equidistant along the frame, exactly like the tool’s initial layout. mesh_id the piece mesh. curve_id optional closed perimeter curve; None/omitted = automatic silhouette. symmetry “None”, “X”, “Y” or “Quad” (case-insensitive); None = None. Numeric arguments with 0 keep the tool defaults: offset 2, width 1, height 1, connection_count 4, connection_diameter 0.3 (mm); smooth uses -1 = default (8 iterations) because 0 is a real value (no smoothing). The injection post keeps the tool defaults (external diameter 3, length 5). Returns the ids of the meshes added (frame, injection and connectors), baked to the last user layer with the wax color, same as the tool’s Accept.

ParameterType
mesh_idIdLikerequired
curve_idOptional[IdLike]optional — None = the tool default
offsetfloatoptional — None = the tool default
smoothintoptional — None = the tool default
widthfloatoptional — None = the tool default
heightfloatoptional — None = the tool default
connection_countintoptional — None = the tool default
connection_diameterfloatoptional — None = the tool default
symmetrystroptional — None = the tool default

ra.manufacturing.sprue_external_frames()

ra.manufacturing.sprue_external_frames(mesh_ids=None, margin=None, corner_radius=None, frame_diameter=None, connector_count=None, connector_separation=None, connector_length=None, end_connectors=None) -> List[str]

External-frame sprue (the ArtisanSprueExternalFrames tool, headless), meant for elongated pieces laid in a row (chains, bracelets): a rounded-rectangle runner around the combined bounding box of the given meshes, with pairs of thin stubs reaching inward from the long sides and, optionally, one from each short end. mesh_ids the pieces the frame is built around; None/empty = current selection end_connectors True = include the two short-side stubs (the tool’s default) Numeric arguments with 0 keep the tool defaults: margin 3, corner_radius 3, frame_diameter 2, connector_separation 5, connector_length 4 (mm); connector_count 0 = one stub pair per given object (what the tool seeds on selection). Returns the ids of the frame meshes added (last user layer, wax color, same as the tool’s Accept).

ParameterType
mesh_idsSequence[IdLike]optional — None = the tool default
marginfloatoptional — None = the tool default
corner_radiusfloatoptional — None = the tool default
frame_diameterfloatoptional — None = the tool default
connector_countintoptional — None = the tool default
connector_separationfloatoptional — None = the tool default
connector_lengthfloatoptional — None = the tool default
end_connectorsbooloptional — None = the tool default

ra.manufacturing.sprue_external_tree()

ra.manufacturing.sprue_external_tree(mesh_id: IdLike, trunk_base_point: PointLike, contact_points: Sequence[PointLike], height=None, top_diameter=None, bottom_diameter=None, branch_trunk_diameter=None, branch_contact_diameter=None) -> List[str]

External-tree sprue for casting (the ArtisanSprueExternalTree tool, headless): a tapered trunk standing OUTSIDE the mesh at trunk_base_point with one branch per contact point reaching the outside of the closed mesh. The tool’s two interactive picks become explicit arguments; the tool seeds the trunk beside the mesh (bounding-box Max.X + 5, centre Y, Z = 0). Numeric arguments with 0 keep the tool defaults (or the user’s saved defaults): height 20, top_diameter 3, bottom_diameter 5, branch_trunk_diameter 2, branch_contact_diameter 0.8 (mm). Returns the ids of the sprue meshes added (last user layer, wax color, same as the tool’s Accept).

ParameterType
mesh_idIdLikerequired
trunk_base_pointPointLikerequired
contact_pointsSequence[PointLike]required
heightfloatoptional — None = the tool default
top_diameterfloatoptional — None = the tool default
bottom_diameterfloatoptional — None = the tool default
branch_trunk_diameterfloatoptional — None = the tool default
branch_contact_diameterfloatoptional — None = the tool default

ra.manufacturing.sprue_helix()

ra.manufacturing.sprue_helix(link_mesh_id: IdLike, base_point=None, copies=None, wire_diameter=None, trunk_diameter=None, connector_length=None, connector_diameter=None, clearance_margin=None) -> List[str]

Helix casting tree (the ArtisanSprueHelix tool, headless): a conical base, a vertical trunk and a helical wire climbing around it, with copies copies of the link mesh hung along the wire — the tool for printing whole chains in one tree. Like the tool’s Generate button, the helix is auto-sized (turns, diameter, trunk length, one support arm per turn) so the requested copies fit without collisions; the link is chained along its longest axis, same as the tool’s initial pick. link_mesh_id the chain link (mesh or SubD) base_point where the tree stands on the plate; (0,0,0) = origin, the tool’s starting position Numeric arguments with 0 keep the tool defaults: copies 125, wire_diameter 3, trunk_diameter 10, connector_length 3.25, connector_diameter 1.5, clearance_margin 0 (mm). Long operation (the auto-sizing searches for a collision-free layout). Returns the ids of ALL the meshes added (tree + one mesh per copy), baked to the last user layer with the wax color, same as the tool’s Accept.

ParameterType
link_mesh_idIdLikerequired
base_pointPointLikeoptional — None = the tool default
copiesintoptional — None = the tool default
wire_diameterfloatoptional — None = the tool default
trunk_diameterfloatoptional — None = the tool default
connector_lengthfloatoptional — None = the tool default
connector_diameterfloatoptional — None = the tool default
clearance_marginfloatoptional — None = the tool default

ra.manufacturing.sprue_inner_branches()

ra.manufacturing.sprue_inner_branches(mesh_id: IdLike, base_point: PointLike, contact_points: Sequence[PointLike], height=None, top_diameter=None, branch_contact_diameter=None, symmetry=None) -> List[str]

Inner-branches sprue for casting (the ArtisanSprueInnerBranches tool, headless): a central post rising from base_point with one branch per contact point reaching the inside of the closed mesh (typically a ring), optionally mirrored by symmetry. The tool’s two interactive picks become explicit arguments. mesh_id the closed mesh to sprue base_point where the central post stands; the tool seeds it under the mesh centre at Z = 0 contact_points points ON the mesh where the branches attach symmetry 0 = none (default), 1 = vertical mirror (X), 2 = horizontal mirror (Y), 3 = quad — the tool’s Symmetry combo, which multiplies each contact point Numeric arguments with 0 keep the tool defaults (or the user’s saved defaults): height = the mesh bounding-box centre height (what the tool seeds on selection), top_diameter 3, branch_contact_diameter 0.8 (mm). Returns the ids of the sprue meshes added (last user layer, wax color, same as the tool’s Accept).

ParameterType
mesh_idIdLikerequired
base_pointPointLikerequired
contact_pointsSequence[PointLike]required
heightfloatoptional — None = the tool default
top_diameterfloatoptional — None = the tool default
branch_contact_diameterfloatoptional — None = the tool default
symmetryintoptional — None = the tool default

ra.manufacturing.sprue_inner_tree()

ra.manufacturing.sprue_inner_tree(mesh_id: IdLike, base_point: PointLike, contact_points: Sequence[PointLike], height=None, top_diameter=None, bottom_diameter=None, branch_contact_diameter=None) -> List[str]

Builds an inner-tree sprue for casting (the ArtisanSprueInnerTree tool, headless): a trunk from base_point with branches reaching each of contact_points on the closed mesh. The two interactive picks of the tool become explicit arguments. Numeric arguments with 0 keep the tool defaults (or the user’s saved defaults): height 10, top_diameter 3, bottom_diameter 5, branch_contact_diameter 0.8 (mm). Returns the ids of the sprue meshes added (last user layer, same as the tool’s Accept).

ParameterType
mesh_idIdLikerequired
base_pointPointLikerequired
contact_pointsSequence[PointLike]required
heightfloatoptional — None = the tool default
top_diameterfloatoptional — None = the tool default
bottom_diameterfloatoptional — None = the tool default
branch_contact_diameterfloatoptional — None = the tool default

ra.manufacturing.sprue_multiple_copies()

ra.manufacturing.sprue_multiple_copies(mesh_ids: Sequence[IdLike], trunk_start: PointLike, trunk_end: PointLike, contact_points: Sequence[PointLike], top_diameter=None, bottom_diameter=None, branch_trunk_diameter=None, branch_contact_diameter=None) -> List[str]

Multiple-copies sprue (the ArtisanSprueMultipleCopies tool, headless): a tapered trunk between trunk_start and trunk_end with one curved branch from the trunk to each of contact_points on the mesh(es). The tool’s three interactive picks become arguments; where the tool asks for a matching point ON the trunk per contact, this method projects each contact onto the trunk line instead (closest point), which is the natural headless equivalent. mesh_ids the piece mesh(es), merged like the tool’s selector; None/empty = current selection. trunk_start bottom end of the trunk. trunk_end top end of the trunk. contact_points points on the mesh the branches reach (at least one). Numeric arguments with 0 keep the tool defaults (or the user’s saved defaults): top_diameter 1.3, bottom_diameter 2.3, branch_trunk_diameter 1.2, branch_contact_diameter 0.8 (mm). Returns the ids of the meshes added (trunk + one per branch), baked to the last user layer with the wax color, same as the tool’s Accept.

ParameterType
mesh_idsSequence[IdLike]required
trunk_startPointLikerequired
trunk_endPointLikerequired
contact_pointsSequence[PointLike]required
top_diameterfloatoptional — None = the tool default
bottom_diameterfloatoptional — None = the tool default
branch_trunk_diameterfloatoptional — None = the tool default
branch_contact_diameterfloatoptional — None = the tool default

ra.manufacturing.sprue_single()

ra.manufacturing.sprue_single(mesh_id: IdLike, point: PointLike, height=None, top_x=None, top_y=None, bottom_x=None, bottom_y=None, inside_ring=None) -> str

Single sprue post (the ArtisanSprueSingle tool, headless): one tapered connector at point, which should lie ON the mesh (it plays the role of the tool’s pick-point-on-mesh prompt). Numeric arguments with 0 keep the tool defaults (or the user’s saved defaults): height 2, top 1.5 x 1.5, bottom 1.5 x 1.5, inside_ring 0.2 (mm). Returns the Guid of the sprue mesh (added as-is, same as the tool’s Accept).

ParameterType
mesh_idIdLikerequired
pointPointLikerequired
heightfloatoptional — None = the tool default
top_xfloatoptional — None = the tool default
top_yfloatoptional — None = the tool default
bottom_xfloatoptional — None = the tool default
bottom_yfloatoptional — None = the tool default
inside_ringfloatoptional — None = the tool default

ra.manufacturing.sprue_spiral()

ra.manufacturing.sprue_spiral(link_mesh_id: IdLike, base_point=None, copies=None, max_diameter=None, wire_diameter=None, connector_length=None, clearance_margin=None, show_base=None) -> List[str]

Flat spiral casting sprue (the ArtisanSprueSpiral tool, headless): the same chain-printing idea as the helix but with the wire coiled FLAT, standing on legs, each link hung from a single vertical connector. Like the tool’s Generate button, the spiral is auto-sized (turns, turn spacing, inner eye) so the requested copies fit within max_diameter; the link hangs from its Y axis, same as the tool’s initial pick. link_mesh_id the chain link (mesh or SubD) base_point centre of the spiral on the plate; (0,0,0) = origin, the tool’s starting position show_base True = add the honeycomb base plate under the legs (off by default, like the tool) Numeric arguments with 0 keep the tool defaults: copies 60, max_diameter 100, wire_diameter 3, connector_length 3.25, clearance_margin 0 (mm). Long operation (the auto-sizing searches for a collision-free layout). Returns the ids of ALL the meshes added (spiral + one mesh per copy), baked to the last user layer with the wax color, same as the tool’s Accept.

ParameterType
link_mesh_idIdLikerequired
base_pointPointLikeoptional — None = the tool default
copiesintoptional — None = the tool default
max_diameterfloatoptional — None = the tool default
wire_diameterfloatoptional — None = the tool default
connector_lengthfloatoptional — None = the tool default
clearance_marginfloatoptional — None = the tool default
show_basebooloptional — None = the tool default

ra.manufacturing.sprue_tree()

ra.manufacturing.sprue_tree(mesh_ids=None, base_point=None, copies_per_mesh=None, height=None, bottom_diameter=None, top_diameter=None, floors=None, pieces_per_floor=None, branch_diameter=None) -> List[str]

Radial casting tree (the ArtisanSprueTree tool, headless): a base + conical trunk rising from base_point, with floors floors x pieces_per_floor branches around it, and a copy of the given meshes distributed over the branches in round-robin. Each copy hangs from its branch by the bottom-center of its bounding box (the tool’s default anchor) with the default branch (length 8.5, angle 15 deg). mesh_ids the model meshes; None/empty = current selection. base_point where the base sits (default: world origin, like the tool). copies_per_mesh copies of EACH mesh; 0 = fill the free branches (the tool’s automatic mode). Numeric arguments with 0 keep the tool defaults: height 150, bottom_diameter 10, top_diameter 10, floors 7, pieces_per_floor 8, branch_diameter 1.5 (mm). Long operation. Returns the ids of ALL the meshes added (base, trunk, connectors and every model copy), baked to the last user layer with the wax color, same as the tool’s Accept.

ParameterType
mesh_idsSequence[IdLike]optional — None = the tool default
base_pointOptional[PointLike]optional — None = the tool default
copies_per_meshintoptional — None = the tool default
heightfloatoptional — None = the tool default
bottom_diameterfloatoptional — None = the tool default
top_diameterfloatoptional — None = the tool default
floorsintoptional — None = the tool default
pieces_per_floorintoptional — None = the tool default
branch_diameterfloatoptional — None = the tool default