Skip to content

.NET API

ManufacturingApi

Manufacturing helpers, starting with the Automatic Repair tool.

from ArtisanPlugin.Scripting import ManufacturingApi

See also the guide, Manufacturing, and the Python package, ra.manufacturing.

Methods

Method
AddIdentifierAdds 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.
AutomaticRepairRepairs the given objects into a single printable mesh (the ArtisanAutomaticRepair tool, headless): closes gaps, fixes normals, makes the result watertight.
BalanceCheckChecks how a pendant/earring hangs (the ArtisanBalancerChecker tool): the piece hangs from baseId (the bail or hook), and gravity pulls its volume centroid straight below the hook.
DetectNonPrintableFlags the objects that would not print (the ArtisanQuickNonPrintableDetector tool): bad objects, duplicates, open surfaces and open polysurfaces, using Rhino’s own selectors.
ExportAllInOneMerges solids/meshes into ONE printable mesh and writes a binary STL (the ArtisanExportAllInOne tool, headless).
ExportFromLayersWrites one STL per visible layer holding meshes, named “.stl” inside folder (the ArtisanExportFromLayers tool, headless).
ImportToLayersImports every STL in folder, each file into its own layer named after the file with a distinct color per layer (the ArtisanImportToLayers tool, headless).
QuickCheckThe ArtisanQuickCheck tool, scriptable: verifies each mesh is valid and watertight, and (like the tool) recolors it green when printable, red when not.
ReduceThicknessHollows a wall down to a uniform minimum thickness (the ArtisanReduceThickness tool, headless).
ResizeRingBatch 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.
SprueClusterTreeCluster casting tree (the ArtisanSprueClusterTree tool, headless): a cylinder built as a grid of two crossed helix families (rhombic cells) standing on basePoint, 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).
SprueCurvePerimeter-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.
SprueExternalFramesExternal-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.
SprueExternalTreeExternal-tree sprue for casting (the ArtisanSprueExternalTree tool, headless): a tapered trunk standing OUTSIDE the mesh at trunkBasePoint with one branch per contact point reaching the outside of the closed mesh.
SprueHelixHelix 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.
SprueInnerBranchesInner-branches sprue for casting (the ArtisanSprueInnerBranches tool, headless): a central post rising from basePoint with one branch per contact point reaching the inside of the closed mesh (typically a ring), optionally mirrored by symmetry.
SprueInnerTreeBuilds an inner-tree sprue for casting (the ArtisanSprueInnerTree tool, headless): a trunk from basePoint with branches reaching each of contactPoints on the closed mesh.
SprueMultipleCopiesMultiple-copies sprue (the ArtisanSprueMultipleCopies tool, headless): a tapered trunk between trunkStart and trunkEnd with one curved branch from the trunk to each of contactPoints on the mesh(es).
SprueSingleSingle 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).
SprueSpiralFlat 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.
SprueTreeRadial casting tree (the ArtisanSprueTree tool, headless): a base + conical trunk rising from basePoint, with floors floors x piecesPerFloor branches around it, and a copy of the given meshes distributed over the branches in round-robin.

AddIdentifier

Guid ManufacturingApi.AddIdentifier(
    Guid meshId,
    Point3d point1,
    Point3d point2,
    string text = null,
    double diameter = 0,
    double thickness = 0,
    double fontSize = 0,
    double overlapping = 0)

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, fontSize 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.

ParameterTypeDefault
meshIdGuidrequired
point1Point3drequired
point2Point3drequired
textstringnull
diameterdouble0
thicknessdouble0
fontSizedouble0
overlappingdouble0

Returns Guid.

AutomaticRepair

RepairResult ManufacturingApi.AutomaticRepair(
    IEnumerable<Guid> objectIds = null,
    double precision = 0,
    bool deleteOriginal = false)

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). objectIds objects to repair; null/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. deleteOriginal 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.

ParameterTypeDefault
objectIdsIEnumerable<Guid>null
precisiondouble0
deleteOriginalboolfalse

Returns RepairResult.

BalanceCheck

BalanceReport ManufacturingApi.BalanceCheck(
    Guid baseId,
    IEnumerable<Guid> geometryIds,
    bool apply = false,
    bool deleteOriginal = false,
    double tolerance = 1)

Checks how a pendant/earring hangs (the ArtisanBalancerChecker tool): the piece hangs from baseId (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 deleteOriginal). Default false = report only. deleteOriginal with apply, removes the source geometry. tolerance degrees under which IsBalanced is true (default 1). Read-only unless apply is true.

ParameterTypeDefault
baseIdGuidrequired
geometryIdsIEnumerable<Guid>required
applyboolfalse
deleteOriginalboolfalse
tolerancedouble1

Returns BalanceReport.

DetectNonPrintable

NonPrintableReport ManufacturingApi.DetectNonPrintable()

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.

Returns NonPrintableReport.

ExportAllInOne

AllInOneExport ManufacturingApi.ExportAllInOne(
    string path,
    IEnumerable<Guid> objectIds = null,
    bool allowNonPrintable = false)

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) objectIds objects to export; null/empty = current selection, and when nothing is selected every visible solid/mesh that is not a gem (like the tool’s filter) allowNonPrintable 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.

ParameterTypeDefault
pathstringrequired
objectIdsIEnumerable<Guid>null
allowNonPrintableboolfalse

Returns AllInOneExport.

ExportFromLayers

IReadOnlyList<LayerExport> ManufacturingApi.ExportFromLayers(
    string folder,
    bool overwrite = true)

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.

ParameterTypeDefault
folderstringrequired
overwritebooltrue

Returns IReadOnlyList<LayerExport>.

ImportToLayers

IReadOnlyList<LayerImport> ManufacturingApi.ImportToLayers(string folder)

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.

ParameterTypeDefault
folderstringrequired

Returns IReadOnlyList<LayerImport>.

QuickCheck

IReadOnlyList<MeshCheckResult> ManufacturingApi.QuickCheck(
    IEnumerable<Guid> objectIds = null)

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

ParameterTypeDefault
objectIdsIEnumerable<Guid>null

Returns IReadOnlyList<MeshCheckResult>.

ReduceThickness

ReduceThicknessResult ManufacturingApi.ReduceThickness(
    Guid objectId,
    IEnumerable<Point3d> points,
    double thickness = 0,
    double radius = 0,
    int steps = 0)

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). objectId 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; 0 = the tool default 0.8 radius brush radius in mm; 0 = 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.

ParameterTypeDefault
objectIdGuidrequired
pointsIEnumerable<Point3d>required
thicknessdouble0
radiusdouble0
stepsint0

Returns ReduceThicknessResult.

ResizeRing

IReadOnlyList<ResizedRing> ManufacturingApi.ResizeRing(
    Guid meshId,
    double fromDiameter,
    IEnumerable<double> toDiameters,
    IEnumerable<string> names = null)

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. meshId the ring mesh to resize fromDiameter the ring’s CURRENT inner diameter in mm; 0 = the document’s finger size toDiameters target inner diameters in mm (e.g. [16.5, 17.35, 18.2]) names optional labels, parallel to toDiameters; default is the diameter formatted (“17.35”) The user’s saved Resizer defaults (mode, alignment, identifier tag, sprue, ring spacing) apply when there are any, like in the tool; an identifier tag or sprue they enable goes into its ring’s layer and group. Long operation (one boolean pipeline per size).

ParameterTypeDefault
meshIdGuidrequired
fromDiameterdoublerequired
toDiametersIEnumerable<double>required
namesIEnumerable<string>null

Returns IReadOnlyList<ResizedRing>.

SprueClusterTree

IReadOnlyList<Guid> ManufacturingApi.SprueClusterTree(
    IEnumerable<Guid> meshIds = null,
    Point3d? basePoint = null,
    int copiesPerMesh = 0,
    double diameter = 0,
    double height = 0,
    int cellsAround = 0,
    int rows = 0,
    double wireDiameter = 0)

Cluster casting tree (the ArtisanSprueClusterTree tool, headless): a cylinder built as a grid of two crossed helix families (rhombic cells) standing on basePoint, 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. meshIds the model meshes; null/empty = current selection. basePoint where the base sits (default: world origin). copiesPerMesh copies of EACH mesh; 0 = fill the free nodes. Numeric arguments with 0 keep the tool defaults: diameter 65, height 90, cellsAround 8, rows 7, wireDiameter 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.

ParameterTypeDefault
meshIdsIEnumerable<Guid>null
basePointPoint3d?null
copiesPerMeshint0
diameterdouble0
heightdouble0
cellsAroundint0
rowsint0
wireDiameterdouble0

Returns IReadOnlyList<Guid>.

SprueCurve

IReadOnlyList<Guid> ManufacturingApi.SprueCurve(
    Guid meshId,
    Guid? curveId = null,
    double offset = 0,
    int smooth = -1,
    double width = 0,
    double height = 0,
    int connectionCount = 0,
    double connectionDiameter = 0,
    string symmetry = null)

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 curveId when given (the tool’s custom-curve pick). Connections are seeded equidistant along the frame, exactly like the tool’s initial layout. meshId the piece mesh. curveId optional closed perimeter curve; Guid.Empty/omitted = automatic silhouette. symmetry “None”, “X”, “Y” or “Quad” (case-insensitive); null = None. Numeric arguments with 0 keep the tool defaults: offset 2, width 1, height 1, connectionCount 4, connectionDiameter 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.

ParameterTypeDefault
meshIdGuidrequired
curveIdGuid?null
offsetdouble0
smoothint-1
widthdouble0
heightdouble0
connectionCountint0
connectionDiameterdouble0
symmetrystringnull

Returns IReadOnlyList<Guid>.

SprueExternalFrames

IReadOnlyList<Guid> ManufacturingApi.SprueExternalFrames(
    IEnumerable<Guid> meshIds = null,
    double margin = 0,
    double cornerRadius = 0,
    double frameDiameter = 0,
    int connectorCount = 0,
    double connectorSeparation = 0,
    double connectorLength = 0,
    bool endConnectors = true)

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. meshIds the pieces the frame is built around; null/empty = current selection endConnectors true = include the two short-side stubs (the tool’s default) Numeric arguments with 0 keep the tool defaults: margin 3, cornerRadius 3, frameDiameter 2, connectorSeparation 5, connectorLength 4 (mm); connectorCount 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).

ParameterTypeDefault
meshIdsIEnumerable<Guid>null
margindouble0
cornerRadiusdouble0
frameDiameterdouble0
connectorCountint0
connectorSeparationdouble0
connectorLengthdouble0
endConnectorsbooltrue

Returns IReadOnlyList<Guid>.

SprueExternalTree

IReadOnlyList<Guid> ManufacturingApi.SprueExternalTree(
    Guid meshId,
    Point3d trunkBasePoint,
    IEnumerable<Point3d> contactPoints,
    double height = 0,
    double topDiameter = 0,
    double bottomDiameter = 0,
    double branchTrunkDiameter = 0,
    double branchContactDiameter = 0)

External-tree sprue for casting (the ArtisanSprueExternalTree tool, headless): a tapered trunk standing OUTSIDE the mesh at trunkBasePoint 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, topDiameter 3, bottomDiameter 5, branchTrunkDiameter 2, branchContactDiameter 0.8 (mm). Returns the ids of the sprue meshes added (last user layer, wax color, same as the tool’s Accept).

ParameterTypeDefault
meshIdGuidrequired
trunkBasePointPoint3drequired
contactPointsIEnumerable<Point3d>required
heightdouble0
topDiameterdouble0
bottomDiameterdouble0
branchTrunkDiameterdouble0
branchContactDiameterdouble0

Returns IReadOnlyList<Guid>.

SprueHelix

IReadOnlyList<Guid> ManufacturingApi.SprueHelix(
    Guid linkMeshId,
    Point3d basePoint = null,
    int copies = 0,
    double wireDiameter = 0,
    double trunkDiameter = 0,
    double connectorLength = 0,
    double connectorDiameter = 0,
    double clearanceMargin = 0)

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. linkMeshId the chain link (mesh or SubD) basePoint 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, wireDiameter 3, trunkDiameter 10, connectorLength 3.25, connectorDiameter 1.5, clearanceMargin 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.

ParameterTypeDefault
linkMeshIdGuidrequired
basePointPoint3dnull
copiesint0
wireDiameterdouble0
trunkDiameterdouble0
connectorLengthdouble0
connectorDiameterdouble0
clearanceMargindouble0

Returns IReadOnlyList<Guid>.

SprueInnerBranches

IReadOnlyList<Guid> ManufacturingApi.SprueInnerBranches(
    Guid meshId,
    Point3d basePoint,
    IEnumerable<Point3d> contactPoints,
    double height = 0,
    double topDiameter = 0,
    double branchContactDiameter = 0,
    int symmetry = 0)

Inner-branches sprue for casting (the ArtisanSprueInnerBranches tool, headless): a central post rising from basePoint 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. meshId the closed mesh to sprue basePoint where the central post stands; the tool seeds it under the mesh centre at Z = 0 contactPoints 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), topDiameter 3, branchContactDiameter 0.8 (mm). Returns the ids of the sprue meshes added (last user layer, wax color, same as the tool’s Accept).

ParameterTypeDefault
meshIdGuidrequired
basePointPoint3drequired
contactPointsIEnumerable<Point3d>required
heightdouble0
topDiameterdouble0
branchContactDiameterdouble0
symmetryint0

Returns IReadOnlyList<Guid>.

SprueInnerTree

IReadOnlyList<Guid> ManufacturingApi.SprueInnerTree(
    Guid meshId,
    Point3d basePoint,
    IEnumerable<Point3d> contactPoints,
    double height = 0,
    double topDiameter = 0,
    double bottomDiameter = 0,
    double branchContactDiameter = 0)

Builds an inner-tree sprue for casting (the ArtisanSprueInnerTree tool, headless): a trunk from basePoint with branches reaching each of contactPoints 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, topDiameter 3, bottomDiameter 5, branchContactDiameter 0.8 (mm). Returns the ids of the sprue meshes added (last user layer, same as the tool’s Accept).

ParameterTypeDefault
meshIdGuidrequired
basePointPoint3drequired
contactPointsIEnumerable<Point3d>required
heightdouble0
topDiameterdouble0
bottomDiameterdouble0
branchContactDiameterdouble0

Returns IReadOnlyList<Guid>.

SprueMultipleCopies

IReadOnlyList<Guid> ManufacturingApi.SprueMultipleCopies(
    IEnumerable<Guid> meshIds,
    Point3d trunkStart,
    Point3d trunkEnd,
    IEnumerable<Point3d> contactPoints,
    double topDiameter = 0,
    double bottomDiameter = 0,
    double branchTrunkDiameter = 0,
    double branchContactDiameter = 0)

Multiple-copies sprue (the ArtisanSprueMultipleCopies tool, headless): a tapered trunk between trunkStart and trunkEnd with one curved branch from the trunk to each of contactPoints 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. meshIds the piece mesh(es), merged like the tool’s selector; null/empty = current selection. trunkStart bottom end of the trunk. trunkEnd top end of the trunk. contactPoints points on the mesh the branches reach (at least one). Numeric arguments with 0 keep the tool defaults (or the user’s saved defaults): topDiameter 1.3, bottomDiameter 2.3, branchTrunkDiameter 1.2, branchContactDiameter 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.

ParameterTypeDefault
meshIdsIEnumerable<Guid>required
trunkStartPoint3drequired
trunkEndPoint3drequired
contactPointsIEnumerable<Point3d>required
topDiameterdouble0
bottomDiameterdouble0
branchTrunkDiameterdouble0
branchContactDiameterdouble0

Returns IReadOnlyList<Guid>.

SprueSingle

Guid ManufacturingApi.SprueSingle(
    Guid meshId,
    Point3d point,
    double height = 0,
    double topX = 0,
    double topY = 0,
    double bottomX = 0,
    double bottomY = 0,
    double insideRing = 0)

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, insideRing 0.2 (mm). Returns the Guid of the sprue mesh (added as-is, same as the tool’s Accept).

ParameterTypeDefault
meshIdGuidrequired
pointPoint3drequired
heightdouble0
topXdouble0
topYdouble0
bottomXdouble0
bottomYdouble0
insideRingdouble0

Returns Guid.

SprueSpiral

IReadOnlyList<Guid> ManufacturingApi.SprueSpiral(
    Guid linkMeshId,
    Point3d basePoint = null,
    int copies = 0,
    double maxDiameter = 0,
    double wireDiameter = 0,
    double connectorLength = 0,
    double clearanceMargin = 0,
    bool showBase = false)

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 maxDiameter; the link hangs from its Y axis, same as the tool’s initial pick. linkMeshId the chain link (mesh or SubD) basePoint centre of the spiral on the plate; (0,0,0) = origin, the tool’s starting position showBase 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, maxDiameter 100, wireDiameter 3, connectorLength 3.25, clearanceMargin 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.

ParameterTypeDefault
linkMeshIdGuidrequired
basePointPoint3dnull
copiesint0
maxDiameterdouble0
wireDiameterdouble0
connectorLengthdouble0
clearanceMargindouble0
showBaseboolfalse

Returns IReadOnlyList<Guid>.

SprueTree

IReadOnlyList<Guid> ManufacturingApi.SprueTree(
    IEnumerable<Guid> meshIds = null,
    Point3d? basePoint = null,
    int copiesPerMesh = 0,
    double height = 0,
    double bottomDiameter = 0,
    double topDiameter = 0,
    int floors = 0,
    int piecesPerFloor = 0,
    double branchDiameter = 0)

Radial casting tree (the ArtisanSprueTree tool, headless): a base + conical trunk rising from basePoint, with floors floors x piecesPerFloor 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). meshIds the model meshes; null/empty = current selection. basePoint where the base sits (default: world origin, like the tool). copiesPerMesh copies of EACH mesh; 0 = fill the free branches (the tool’s automatic mode). Numeric arguments with 0 keep the tool defaults: height 150, bottomDiameter 10, topDiameter 10, floors 7, piecesPerFloor 8, branchDiameter 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.

ParameterTypeDefault
meshIdsIEnumerable<Guid>null
basePointPoint3d?null
copiesPerMeshint0
heightdouble0
bottomDiameterdouble0
topDiameterdouble0
floorsint0
piecesPerFloorint0
branchDiameterdouble0

Returns IReadOnlyList<Guid>.