docs / features / Hole
Hole
Status: Implemented — threads are symbolic only

Hole drills one cutter per sketch point and subtracts it from a target solid. Simple, countersunk, counterbored and threaded styles are available.
Walkthrough

Inputs
id– astring, defaultnull.face– a single (multiple: false)reference_selectionfiltered toSKETCH, defaultnull; at least one selection is required.holeType– anoptionsvalue:SIMPLE(default),COUNTERSINK,COUNTERBORE, orTHREADED.diameter– anumber, default6.depth– anumber, default10; ignored whenthroughAll.throughAll– aboolean, defaultfalse.countersinkDiameter– anumber, default10.countersinkAngle– anumber, default82; the included angle in degrees, clamped to 1–179.counterboreDiameter– anumber, default10.counterboreDepth– anumber, default3.boolean– aboolean_operation, default{ targets: [], operation: "SUBTRACT", mergeCoplanarFaces: true }.
Behaviour
- Placement centres are the sketch's model points in world space — every point that
is not construction geometry, whatever its id. A new sketch starts with no points, so the
first point you place is
P0and it is drilled like any other. Construction points (the sketcher's toggle, and the points a projected or linked model edge materializes) are references, not holes, and are skipped. Points are ordered by their numeric id, giving a deterministic subtract order, and coincident positions are de-duplicated at1e-7. - Axis: the sketch plane's normal, flipped so it points into the target, decided against the target's bounding box.
- Target: only the first entry of
boolean.targetsis the cut target. With no target selected the feature passes through unchanged; with a target name that does not resolve, the name is recorded as unresolved. Aboolean.operationofNONEleaves the scene unchanged. - Each cutter's base is pulled back slightly along
−normalso the entry cut is a clean through-intersection rather than a tangent one. - Cutter shapes:
SIMPLEis a plain cylinder;COUNTERSINKandCOUNTERBOREare exact revolved profiles. - Face naming: each hole's faces are prefixed with its point's name, so a simple hole's
walls land as
{sketchId}:P{pid}_Hole_S, with_Bthe entry cap and_Tthe drill tip. The result reuses the target solid's name.
Limitations
THREADEDis symbolic only. No helical geometry is ever built: the cutter is a plain cylinder core at the crest diameter, geometrically identical toSIMPLE.holeTyperecords the intent; nothing about the cut changes. NPT taper is not modelled either.- Set
diameterdirectly. Clearance-fit and thread-designation sizing tables are not implemented. - A missing or unresolved placement sketch is a hard error — there is no silent air-drill.
- A sketch that holds only points is drawn in the model as its points (vertex markers on the
sketch plane, no face, no edge); clicking one of them with the placement field active picks
the sketch. A sketch with no model point at all (empty, or construction points only) is a
hard error:
no placement points. - Also hard errors: a zero
depthwithoutthroughAll; aCOUNTERSINKwhosecountersinkDiameterdoes not exceeddiameter; aCOUNTERBOREwith a zerocounterboreDepth.