Working M2 schema (cross-checked vs the Patents-3 brief §4.2 and the
parent-chat memory note; final reconciliation against the
parent-chat
zerocad-v5.html deferred to M2.5):
{
"name": "string",
"outer_geom": {
"kind": "block" | "cylinder" |
"extruded_polygon" | "truncated_cone",
// block: x, y, z (extents, mm)
// cylinder: diameter, height
// extruded_polygon: profile [[x,y],...] CCW closed,
// height
// truncated_cone: radius_bottom, radius_top, height
},
"features": [
{
"id": "f1",
"kind": "thru_hole|blind_hole|counter_bore|
counter_sink|pocket|slot|fillet|
chamfer|boss",
"position": {"x":0,"y":0,"z":0},
"axis": {"x":0,"y":0,"z":1},
// kind-specific fields documented in code.
}
]
}
Convention: all dimensions in millimetres. Origin at
part centre for blocks. Origin at base centre for cylinders / cones,
axis along +Z by default.
position for a hole = centre of
the hole on the entry surface.
axis for a hole =
direction the hole goes
into the part (so for a top-of-block
hole, axis is
{0,0,-1}).