|
|
|
@@ -0,0 +1,418 @@
|
|
|
|
|
{
|
|
|
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
|
|
|
"$id": "https://cdsl.local/schema/cad.cdsl.llm.v1",
|
|
|
|
|
"title": "CDSL semantic document",
|
|
|
|
|
"description": "Complete self-contained CDSL. Runtime-supported operations can be rebuilt by the local CDSL-only engine; deferred operations are retained for future engine implementations.",
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"schema": {"const": "cad.cdsl.llm.v1"},
|
|
|
|
|
"schema_version": {"type": "string"},
|
|
|
|
|
"kind": {"type": "string", "minLength": 1},
|
|
|
|
|
"part_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{3,80}$"},
|
|
|
|
|
"meta": {"type": "object"},
|
|
|
|
|
"geometry": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"sketches": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/sketch"}}
|
|
|
|
|
},
|
|
|
|
|
"required": ["sketches"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"features": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/feature"}}
|
|
|
|
|
},
|
|
|
|
|
"required": ["schema", "geometry", "features"],
|
|
|
|
|
"additionalProperties": false,
|
|
|
|
|
"$defs": {
|
|
|
|
|
"number": {"type": "number"},
|
|
|
|
|
"positive": {"type": "number", "exclusiveMinimum": 0},
|
|
|
|
|
"positiveInteger": {"type": "integer", "minimum": 1},
|
|
|
|
|
"point2": {"type": "array", "items": {"$ref": "#/$defs/number"}, "minItems": 2, "maxItems": 2},
|
|
|
|
|
"point3": {"type": "array", "items": {"$ref": "#/$defs/number"}, "minItems": 3, "maxItems": 3},
|
|
|
|
|
"circleItem": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"center": {"$ref": "#/$defs/point2"}, "radius_mm": {"$ref": "#/$defs/positive"}},
|
|
|
|
|
"required": ["radius_mm"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"workplane": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"origin_mm": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"x_dir": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"y_dir": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"normal": {"$ref": "#/$defs/point3"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["origin_mm", "x_dir", "normal"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"hostFace": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"frame": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"origin_mm": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"x_dir": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"y_dir": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"normal": {"$ref": "#/$defs/point3"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["origin_mm", "x_dir", "y_dir", "normal"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"required": ["frame"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"holePosition": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"mm": {"$ref": "#/$defs/point3"}},
|
|
|
|
|
"required": ["mm"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"axis": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"origin_mm": {"$ref": "#/$defs/point3"}, "direction": {"$ref": "#/$defs/point3"}, "selector": {"$ref": "#/$defs/selectorRef"}, "unresolved": {"type": "string", "minLength": 1}},
|
|
|
|
|
"anyOf": [{"required": ["origin_mm", "direction"]}, {"required": ["selector"]}, {"required": ["unresolved"]}],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"endCondition": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"type": {"type": "string", "minLength": 1},
|
|
|
|
|
"solidworks_code": {"type": "integer"},
|
|
|
|
|
"reference": {"$ref": "#/$defs/selectorRef"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["type", "solidworks_code"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"selectorOrUnresolved": {
|
|
|
|
|
"oneOf": [
|
|
|
|
|
{"$ref": "#/$defs/selectorRef"},
|
|
|
|
|
{"type": "object", "properties": {"unresolved": {"type": "string", "minLength": 1}}, "required": ["unresolved"], "additionalProperties": false}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"extrudeParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"distance_mm": {"$ref": "#/$defs/number"}, "reverse": {"type": "boolean"}, "reverse_distance_mm": {"$ref": "#/$defs/number"}, "end_condition": {"$ref": "#/$defs/endCondition"}, "reverse_end_condition": {"$ref": "#/$defs/endCondition"}, "draft": {"type": "object"}},
|
|
|
|
|
"required": ["distance_mm"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"revolveParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"angle_deg": {"type": "number", "minimum": 0, "maximum": 360}, "axis": {"$ref": "#/$defs/axis"}, "reverse": {"type": "boolean"}, "end_condition": {"$ref": "#/$defs/endCondition"}},
|
|
|
|
|
"required": ["angle_deg", "axis"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"holeBaseParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"diameter_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"depth_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"positions": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/holePosition"}},
|
|
|
|
|
"host_face": {"$ref": "#/$defs/hostFace"},
|
|
|
|
|
"drill_angle_rad": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 3.141592653589793}
|
|
|
|
|
},
|
|
|
|
|
"required": ["diameter_mm", "depth_mm", "positions"]
|
|
|
|
|
},
|
|
|
|
|
"holeBlindParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"diameter_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"depth_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"positions": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/holePosition"}},
|
|
|
|
|
"host_face": {"$ref": "#/$defs/hostFace"},
|
|
|
|
|
"drill_angle_rad": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 3.141592653589793}
|
|
|
|
|
},
|
|
|
|
|
"required": ["diameter_mm", "depth_mm", "positions"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"holeCountersinkParams": {
|
|
|
|
|
"allOf": [
|
|
|
|
|
{"$ref": "#/$defs/holeBaseParams"},
|
|
|
|
|
{
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"diameter_mm": {"$ref": "#/$defs/positive"}, "depth_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"positions": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/holePosition"}},
|
|
|
|
|
"host_face": {"$ref": "#/$defs/hostFace"}, "drill_angle_rad": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 3.141592653589793},
|
|
|
|
|
"countersink_diameter_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"countersink_angle_rad": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 3.141592653589793}
|
|
|
|
|
},
|
|
|
|
|
"required": ["diameter_mm", "depth_mm", "positions", "countersink_diameter_mm", "countersink_angle_rad"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"holeCounterboreParams": {
|
|
|
|
|
"allOf": [
|
|
|
|
|
{"$ref": "#/$defs/holeBaseParams"},
|
|
|
|
|
{
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"diameter_mm": {"$ref": "#/$defs/positive"}, "depth_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"positions": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/holePosition"}},
|
|
|
|
|
"host_face": {"$ref": "#/$defs/hostFace"}, "drill_angle_rad": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 3.141592653589793},
|
|
|
|
|
"counterbore_diameter_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"counterbore_depth_mm": {"$ref": "#/$defs/positive"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["diameter_mm", "depth_mm", "positions", "counterbore_diameter_mm", "counterbore_depth_mm"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"filletParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"radius_mm": {"type": "number", "minimum": 0}, "tangent_propagation": {"type": "boolean"}},
|
|
|
|
|
"required": ["radius_mm"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"chamferParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"distance_mm": {"type": "number", "minimum": 0}, "distance_2_mm": {"type": "number", "minimum": 0}, "angle_rad": {"type": "number", "minimum": 0, "maximum": 3.141592653589793}},
|
|
|
|
|
"required": ["distance_mm"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"linearPatternParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"source_feature_ids": {"type": "array", "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
|
|
|
"direction_1": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"spacing_1_mm": {"type": "number", "minimum": 0},
|
|
|
|
|
"pattern_count_1": {"type": "integer", "minimum": 1},
|
|
|
|
|
"direction_2": {"$ref": "#/$defs/point3"},
|
|
|
|
|
"spacing_2_mm": {"type": "number", "minimum": 0},
|
|
|
|
|
"pattern_count_2": {"type": "integer", "minimum": 1}
|
|
|
|
|
},
|
|
|
|
|
"required": ["source_feature_ids", "direction_1", "spacing_1_mm", "pattern_count_1"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"mirrorPatternParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"source_feature_ids": {"type": "array", "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
|
|
|
"mirror_plane": {"$ref": "#/$defs/selectorOrUnresolved"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["source_feature_ids", "mirror_plane"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"referencePlaneParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"plane": {"oneOf": [{"$ref": "#/$defs/workplane"}, {"type": "object", "properties": {"unresolved": {"type": "string", "minLength": 1}}, "required": ["unresolved"], "additionalProperties": false}]},
|
|
|
|
|
"references": {"type": "array", "items": {"$ref": "#/$defs/selectorRef"}},
|
|
|
|
|
"derived_from_sketch_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
|
|
|
"derived_from_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
|
|
|
"plane_inference": {"enum": ["solidworks_origin_plane_order", "parent_reference_plane"]},
|
|
|
|
|
"offset_mm": {"type": "number"},
|
|
|
|
|
"angle_rad": {"type": "number"},
|
|
|
|
|
"reverse": {"type": "boolean"},
|
|
|
|
|
"solidworks_type": {"type": "integer"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["plane"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"referenceAxisParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"axis": {"$ref": "#/$defs/axis"}},
|
|
|
|
|
"required": ["axis"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"holeWizardParams": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"hole_type": {"type": "string", "minLength": 1},
|
|
|
|
|
"diameter_mm": {"type": "number", "minimum": 0},
|
|
|
|
|
"depth_mm": {"type": "number", "minimum": 0},
|
|
|
|
|
"end_condition": {"$ref": "#/$defs/endCondition"},
|
|
|
|
|
"positions": {"type": "array", "items": {"$ref": "#/$defs/holePosition"}},
|
|
|
|
|
"host_face": {"$ref": "#/$defs/selectorRef"},
|
|
|
|
|
"thread": {"type": "object"},
|
|
|
|
|
"countersink": {"type": "object"},
|
|
|
|
|
"counterbore": {"type": "object"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["hole_type", "diameter_mm", "depth_mm", "end_condition"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"selectorRef": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"kind": {"enum": ["face", "edge", "axis", "plane", "feature", "vertex", "body"]},
|
|
|
|
|
"stable_id": {"type": "string", "minLength": 1},
|
|
|
|
|
"owner_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
|
|
|
"geometry": {"type": "object"},
|
|
|
|
|
"source": {"enum": ["solidworks", "inferred_from_step"]},
|
|
|
|
|
"confidence": {"type": "number", "minimum": 0, "maximum": 1}
|
|
|
|
|
},
|
|
|
|
|
"required": ["kind", "stable_id", "source", "confidence"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"analyticSegment": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"type": {"enum": ["line", "arc", "circle", "bspline"]},
|
|
|
|
|
"start": {"$ref": "#/$defs/point2"},
|
|
|
|
|
"end": {"$ref": "#/$defs/point2"},
|
|
|
|
|
"center": {"$ref": "#/$defs/point2"},
|
|
|
|
|
"radius_mm": {"$ref": "#/$defs/positive"},
|
|
|
|
|
"clockwise": {"type": "boolean"},
|
|
|
|
|
"degree": {"type": "integer", "minimum": 1},
|
|
|
|
|
"control_points": {"type": "array", "items": {"$ref": "#/$defs/point2"}},
|
|
|
|
|
"knots": {"type": "array", "items": {"$ref": "#/$defs/number"}},
|
|
|
|
|
"weights": {"type": "array", "items": {"$ref": "#/$defs/positive"}},
|
|
|
|
|
"periodic": {"type": "boolean"}
|
|
|
|
|
},
|
|
|
|
|
"required": ["type"],
|
|
|
|
|
"allOf": [
|
|
|
|
|
{"if": {"properties": {"type": {"const": "line"}}}, "then": {"required": ["start", "end"]}},
|
|
|
|
|
{"if": {"properties": {"type": {"const": "arc"}}}, "then": {"required": ["start", "end", "center", "radius_mm"]}},
|
|
|
|
|
{"if": {"properties": {"type": {"const": "circle"}}}, "then": {"required": ["center", "radius_mm"]}},
|
|
|
|
|
{"if": {"properties": {"type": {"const": "bspline"}}}, "then": {"required": ["degree", "control_points", "knots"]}}
|
|
|
|
|
],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"analyticContour": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"role": {"enum": ["outer", "inner", "open", "unknown"]},
|
|
|
|
|
"closed": {"type": "boolean"},
|
|
|
|
|
"segments": {"type": "array", "items": {"$ref": "#/$defs/analyticSegment"}}
|
|
|
|
|
},
|
|
|
|
|
"required": ["role", "closed", "segments"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"analyticProfile": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"type": {"const": "analytic_contours"},
|
|
|
|
|
"contours": {"type": "array", "items": {"$ref": "#/$defs/analyticContour"}},
|
|
|
|
|
"construction": {"type": "array", "items": {"$ref": "#/$defs/analyticSegment"}}
|
|
|
|
|
},
|
|
|
|
|
"required": ["type", "contours"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"feature_atomic_ids": {"enum": ["extrude_add_blind", "extrude_add_two_sided", "extrude_cut_blind", "revolve_add", "revolve_cut", "hole_blind", "hole_countersink", "hole_counterbore", "fillet", "chamfer", "pattern_linear", "pattern_mirror", "reference_plane", "reference_axis", "hole_wizard"]},
|
|
|
|
|
"feature": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {
|
|
|
|
|
"id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
|
|
|
"name": {"type": "string"},
|
|
|
|
|
"atomic_id": {"$ref": "#/$defs/feature_atomic_ids"},
|
|
|
|
|
"depends_on": {"type": "array", "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
|
|
|
"sketch_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
|
|
|
"params": {"type": "object"},
|
|
|
|
|
"execution_status": {"enum": ["supported", "deferred"]},
|
|
|
|
|
"selectors": {"type": "array", "items": {"$ref": "#/$defs/selectorRef"}},
|
|
|
|
|
"unresolved": {"type": "array", "items": {"type": "string", "minLength": 1}}
|
|
|
|
|
},
|
|
|
|
|
"required": ["id", "atomic_id", "depends_on", "params"],
|
|
|
|
|
"additionalProperties": false,
|
|
|
|
|
"allOf": [
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "extrude_add_blind"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/extrudeParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "extrude_add_two_sided"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/extrudeParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "extrude_cut_blind"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/extrudeParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "revolve_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/revolveParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "revolve_cut"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/revolveParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "hole_blind"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/holeBlindParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "hole_countersink"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/holeCountersinkParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "hole_counterbore"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/holeCounterboreParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "fillet"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/filletParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "chamfer"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/chamferParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "pattern_linear"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/linearPatternParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "pattern_mirror"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/mirrorPatternParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "reference_plane"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/referencePlaneParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "reference_axis"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/referenceAxisParams"}}}},
|
|
|
|
|
{"if": {"properties": {"atomic_id": {"const": "hole_wizard"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/holeWizardParams"}}}}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"rectangleBounds": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"center": {"$ref": "#/$defs/point2"}, "width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}, "min_mm": {"$ref": "#/$defs/point2"}, "max_mm": {"$ref": "#/$defs/point2"}},
|
|
|
|
|
"allOf": [
|
|
|
|
|
{"oneOf": [
|
|
|
|
|
{"required": ["center", "width_mm", "height_mm"], "not": {"anyOf": [{"required": ["min_mm"]}, {"required": ["max_mm"]}]}},
|
|
|
|
|
{"required": ["min_mm", "max_mm"], "not": {"anyOf": [{"required": ["center"]}, {"required": ["width_mm"]}, {"required": ["height_mm"]}]}}
|
|
|
|
|
]}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"rectangleBoundary": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"type": {"enum": ["rectangle", "rectangle_with_fillets"]}, "center": {"$ref": "#/$defs/point2"}, "width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}, "min_mm": {"$ref": "#/$defs/point2"}, "max_mm": {"$ref": "#/$defs/point2"}, "fillet_radius_mm": {"$ref": "#/$defs/positive"}},
|
|
|
|
|
"allOf": [{"$ref": "#/$defs/rectangleBounds"}],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
},
|
|
|
|
|
"profile_type": {"enum": ["circle", "annulus", "circles", "circle_grid", "rectangle", "rectangle_with_circles", "rectangle_with_fillets", "obround", "polygon", "ibone", "rectangle_with_symmetric_notches", "revolve_chamfer", "revolve_chamfer_slanted", "circle_with_arc_notches", "circular_sector_slot", "circle_with_radial_tabs", "filleted_rect_side_slots", "d_shape", "partial_ring", "partial_ring_with_arc_island", "radial_slot", "arc_chain", "patterned_cutouts", "compound_patterned_cutouts", "analytic_contours"]},
|
|
|
|
|
"motif_type": {"enum": ["circle", "square", "rectangle", "obround", "cross", "d_shape_polygon", "regular_hexagon", "skew_hexagon", "triangle", "teardrop_polygon", "trapezoid", "annular_sector_polygon"]},
|
|
|
|
|
"layout_type": {"enum": ["ring", "angular", "concentric_rings", "disc_grid", "open_arc", "spiral", "cross_lines", "x_field", "twin_strips", "corner_clusters", "diamond_field"]},
|
|
|
|
|
"motif": {
|
|
|
|
|
"oneOf": [
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "circle"}, "radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "square"}, "width_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "width_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "rectangle"}, "width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "width_mm", "height_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "obround"}, "length_mm": {"$ref": "#/$defs/positive"}, "width_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "length_mm", "width_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "cross"}, "size_mm": {"$ref": "#/$defs/positive"}, "arm_width_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "size_mm", "arm_width_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "d_shape_polygon"}, "stem_length_mm": {"$ref": "#/$defs/positive"}, "nose_depth_mm": {"$ref": "#/$defs/positive"}, "half_height_mm": {"$ref": "#/$defs/positive"}, "arc_segments": {"$ref": "#/$defs/positiveInteger"}}, "required": ["type", "stem_length_mm", "nose_depth_mm", "half_height_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "regular_hexagon"}, "radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "skew_hexagon"}, "nominal_radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "nominal_radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "triangle"}, "radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "teardrop_polygon"}, "width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}, "shoulder_fraction": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 1}, "left_width_mm": {"$ref": "#/$defs/positive"}, "right_width_mm": {"$ref": "#/$defs/positive"}, "tip_height_mm": {"$ref": "#/$defs/positive"}, "bottom_depth_mm": {"$ref": "#/$defs/positive"}, "shoulder_height_mm": {"$ref": "#/$defs/positive"}}, "required": ["type"], "oneOf": [{"required": ["width_mm", "height_mm"], "not": {"anyOf": [{"required": ["left_width_mm"]}, {"required": ["right_width_mm"]}, {"required": ["tip_height_mm"]}, {"required": ["bottom_depth_mm"]}, {"required": ["shoulder_height_mm"]}]}}, {"required": ["left_width_mm", "right_width_mm", "tip_height_mm", "bottom_depth_mm", "shoulder_height_mm"], "not": {"anyOf": [{"required": ["width_mm"]}, {"required": ["height_mm"]}, {"required": ["shoulder_fraction"]}]}}], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "trapezoid"}, "bottom_width_mm": {"$ref": "#/$defs/positive"}, "top_width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "bottom_width_mm", "top_width_mm", "height_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "annular_sector_polygon"}, "inner_radius_mm": {"$ref": "#/$defs/positive"}, "outer_radius_mm": {"$ref": "#/$defs/positive"}, "half_angle_deg": {"$ref": "#/$defs/positive"}, "arc_segments": {"$ref": "#/$defs/positiveInteger"}}, "required": ["type", "inner_radius_mm", "outer_radius_mm", "half_angle_deg"], "additionalProperties": false}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"layoutCommon": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"orientation": {"enum": ["fixed", "radial", "tangential", "snapped_radial", "diagonal_axes"]}, "orientation_offset_deg": {"$ref": "#/$defs/number"}, "orientation_snap_deg": {"$ref": "#/$defs/positive"}}
|
|
|
|
|
},
|
|
|
|
|
"layout": {
|
|
|
|
|
"oneOf": [
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "ring"}, "radius_mm": {"$ref": "#/$defs/positive"}, "count": {"$ref": "#/$defs/positiveInteger"}, "start_angle_deg": {"$ref": "#/$defs/number"}, "angle_step_deg": {"$ref": "#/$defs/number"}, "orientation": {"enum": ["fixed", "radial", "tangential", "snapped_radial", "diagonal_axes"]}, "orientation_offset_deg": {"$ref": "#/$defs/number"}, "orientation_snap_deg": {"$ref": "#/$defs/positive"}}, "required": ["type", "radius_mm", "count"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "angular"}, "radius_mm": {"$ref": "#/$defs/number"}, "count": {"$ref": "#/$defs/positiveInteger"}, "start_angle_deg": {"$ref": "#/$defs/number"}, "angle_step_deg": {"$ref": "#/$defs/number"}, "orientation": {"enum": ["fixed", "radial", "tangential", "snapped_radial", "diagonal_axes"]}, "orientation_offset_deg": {"$ref": "#/$defs/number"}, "orientation_snap_deg": {"$ref": "#/$defs/positive"}}, "required": ["type", "count"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "concentric_rings"}, "rings": {"type": "array", "minItems": 1, "items": {"type": "object", "properties": {"radius_mm": {"$ref": "#/$defs/positive"}, "count": {"$ref": "#/$defs/positiveInteger"}, "start_angle_deg": {"$ref": "#/$defs/number"}, "angle_step_deg": {"$ref": "#/$defs/number"}}, "required": ["radius_mm", "count"], "additionalProperties": false}}, "orientation": {"enum": ["fixed", "radial", "tangential", "snapped_radial", "diagonal_axes"]}, "orientation_offset_deg": {"$ref": "#/$defs/number"}, "orientation_snap_deg": {"$ref": "#/$defs/positive"}}, "required": ["type", "rings"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "disc_grid"}, "count_x": {"$ref": "#/$defs/positiveInteger"}, "count_y": {"$ref": "#/$defs/positiveInteger"}, "spacing_x_mm": {"$ref": "#/$defs/positive"}, "spacing_y_mm": {"$ref": "#/$defs/positive"}, "center_mm": {"$ref": "#/$defs/point2"}, "max_center_radius_mm": {"$ref": "#/$defs/positive"}, "orientation_offset_deg": {"$ref": "#/$defs/number"}}, "required": ["type", "count_x", "count_y", "spacing_x_mm", "spacing_y_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "open_arc"}, "radius_mm": {"$ref": "#/$defs/positive"}, "count": {"$ref": "#/$defs/positiveInteger"}, "start_angle_deg": {"$ref": "#/$defs/number"}, "end_angle_deg": {"$ref": "#/$defs/number"}, "orientation": {"enum": ["fixed", "radial", "tangential", "snapped_radial", "diagonal_axes"]}, "orientation_offset_deg": {"$ref": "#/$defs/number"}, "orientation_snap_deg": {"$ref": "#/$defs/positive"}}, "required": ["type", "radius_mm", "count", "start_angle_deg", "end_angle_deg"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "spiral"}, "count": {"$ref": "#/$defs/positiveInteger"}, "start_radius_mm": {"$ref": "#/$defs/positive"}, "radius_step_mm": {"$ref": "#/$defs/number"}, "start_angle_deg": {"$ref": "#/$defs/number"}, "angle_step_deg": {"$ref": "#/$defs/number"}, "orientation": {"enum": ["fixed", "radial", "tangential", "snapped_radial", "diagonal_axes"]}, "orientation_offset_deg": {"$ref": "#/$defs/number"}, "orientation_snap_deg": {"$ref": "#/$defs/positive"}}, "required": ["type", "count", "start_radius_mm", "radius_step_mm", "angle_step_deg"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "cross_lines"}, "count_per_axis": {"$ref": "#/$defs/positiveInteger"}, "spacing_mm": {"$ref": "#/$defs/positive"}, "orientation_offset_deg": {"$ref": "#/$defs/number"}}, "required": ["type", "count_per_axis", "spacing_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "x_field"}, "levels": {"$ref": "#/$defs/positiveInteger"}, "spacing_mm": {"$ref": "#/$defs/positive"}, "orientation": {"enum": ["fixed", "radial", "tangential", "snapped_radial", "diagonal_axes"]}, "orientation_offset_deg": {"$ref": "#/$defs/number"}, "orientation_snap_deg": {"$ref": "#/$defs/positive"}}, "required": ["type", "levels", "spacing_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "twin_strips"}, "x_offset_mm": {"$ref": "#/$defs/positive"}, "count_y": {"$ref": "#/$defs/positiveInteger"}, "y_start_mm": {"$ref": "#/$defs/number"}, "y_end_mm": {"$ref": "#/$defs/number"}, "orientation_offset_deg": {"$ref": "#/$defs/number"}}, "required": ["type", "x_offset_mm", "count_y", "y_start_mm", "y_end_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "corner_clusters"}, "levels_mm": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/positive"}}, "orientation_offset_deg": {"$ref": "#/$defs/number"}}, "required": ["type", "levels_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "diamond_field"}, "manhattan_radius": {"type": "integer", "minimum": 0}, "spacing_mm": {"$ref": "#/$defs/positive"}, "orientation_offset_deg": {"$ref": "#/$defs/number"}}, "required": ["type", "manhattan_radius", "spacing_mm"], "additionalProperties": false}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"pattern": {"type": "object", "properties": {"motif": {"$ref": "#/$defs/motif"}, "layout": {"$ref": "#/$defs/layout"}}, "required": ["motif", "layout"], "additionalProperties": false},
|
|
|
|
|
"profile": {
|
|
|
|
|
"oneOf": [
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "circle"}, "center": {"$ref": "#/$defs/point2"}, "radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "annulus"}, "center": {"$ref": "#/$defs/point2"}, "inner_radius_mm": {"$ref": "#/$defs/positive"}, "outer_radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "inner_radius_mm", "outer_radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "circles"}, "items": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "items"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "circle_grid"}, "radius_mm": {"$ref": "#/$defs/positive"}, "count_x": {"$ref": "#/$defs/positiveInteger"}, "count_y": {"$ref": "#/$defs/positiveInteger"}, "spacing_x_mm": {"$ref": "#/$defs/positive"}, "spacing_y_mm": {"$ref": "#/$defs/positive"}, "origin_mm": {"$ref": "#/$defs/point2"}, "center_mm": {"$ref": "#/$defs/point2"}}, "required": ["type", "radius_mm", "count_x", "count_y", "spacing_x_mm", "spacing_y_mm"], "additionalProperties": false, "oneOf": [{"required": ["origin_mm"], "not": {"required": ["center_mm"]}}, {"required": ["center_mm"], "not": {"required": ["origin_mm"]}}]},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "rectangle"}, "center": {"$ref": "#/$defs/point2"}, "width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}, "min_mm": {"$ref": "#/$defs/point2"}, "max_mm": {"$ref": "#/$defs/point2"}}, "required": ["type"], "allOf": [{"$ref": "#/$defs/rectangleBounds"}], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "rectangle_with_circles"}, "boundary": {"$ref": "#/$defs/rectangleBoundary"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "boundary"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "rectangle_with_fillets"}, "center": {"$ref": "#/$defs/point2"}, "width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}, "min_mm": {"$ref": "#/$defs/point2"}, "max_mm": {"$ref": "#/$defs/point2"}, "fillet_radius_mm": {"$ref": "#/$defs/positive"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type"], "allOf": [{"$ref": "#/$defs/rectangleBounds"}], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "obround"}, "center": {"$ref": "#/$defs/point2"}, "length_mm": {"$ref": "#/$defs/positive"}, "width_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "length_mm", "width_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "polygon"}, "vertices": {"type": "array", "minItems": 3, "items": {"$ref": "#/$defs/point2"}}}, "required": ["type", "vertices"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "ibone"}, "body_width_mm": {"$ref": "#/$defs/positive"}, "body_height_mm": {"$ref": "#/$defs/positive"}, "flange_width_mm": {"$ref": "#/$defs/positive"}, "flange_height_mm": {"$ref": "#/$defs/positive"}, "corner_radius_mm": {"$ref": "#/$defs/positive"}, "hole_radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["type", "body_width_mm", "body_height_mm", "flange_width_mm", "flange_height_mm", "corner_radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "rectangle_with_symmetric_notches"}, "width_mm": {"$ref": "#/$defs/positive"}, "height_mm": {"$ref": "#/$defs/positive"}, "notch": {"type": "object", "properties": {"y_start": {"$ref": "#/$defs/number"}, "y_end": {"$ref": "#/$defs/number"}, "depth_mm": {"$ref": "#/$defs/positive"}, "inner_radius_mm": {"$ref": "#/$defs/positive"}, "corner_radius_mm": {"$ref": "#/$defs/positive"}}, "required": ["y_start", "y_end", "depth_mm"], "additionalProperties": false}}, "required": ["type", "width_mm", "height_mm", "notch"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "revolve_chamfer"}, "axis_height_mm": {"$ref": "#/$defs/positive"}, "top_width_mm": {"$ref": "#/$defs/positive"}, "bottom_width_mm": {"$ref": "#/$defs/positive"}, "wall_inset_mm": {"$ref": "#/$defs/number"}, "step_inset_mm": {"$ref": "#/$defs/number"}, "on_axis_side": {"enum": ["left", "right"]}}, "required": ["type", "axis_height_mm", "top_width_mm", "bottom_width_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "revolve_chamfer_slanted"}, "axis_height_mm": {"$ref": "#/$defs/positive"}, "top_width_mm": {"$ref": "#/$defs/positive"}, "wall_inset_mm": {"$ref": "#/$defs/number"}, "wall_height_mm": {"$ref": "#/$defs/positive"}, "wall_width_mm": {"$ref": "#/$defs/positive"}, "on_axis_side": {"enum": ["left", "right"]}}, "required": ["type", "axis_height_mm", "top_width_mm", "wall_height_mm", "wall_width_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "circle_with_arc_notches"}, "outer_radius_mm": {"$ref": "#/$defs/positive"}, "notch_radius_mm": {"$ref": "#/$defs/positive"}, "notch_angles_deg": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/number"}}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "outer_radius_mm", "notch_radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "circular_sector_slot"}, "arc_radius_mm": {"$ref": "#/$defs/positive"}, "slot_half_width_mm": {"$ref": "#/$defs/positive"}, "chord_half_mm": {"$ref": "#/$defs/positive"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "arc_radius_mm", "slot_half_width_mm", "chord_half_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "circle_with_radial_tabs"}, "outer_radius_mm": {"$ref": "#/$defs/positive"}, "tab_u_half_mm": {"$ref": "#/$defs/positive"}, "tab_v_offset_mm": {"$ref": "#/$defs/number"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "outer_radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "filleted_rect_side_slots"}, "half_width_mm": {"$ref": "#/$defs/positive"}, "half_height_mm": {"$ref": "#/$defs/positive"}, "corner_radius_mm": {"$ref": "#/$defs/positive"}, "slot_radius_mm": {"$ref": "#/$defs/positive"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "half_width_mm", "half_height_mm", "corner_radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "d_shape"}, "radius_mm": {"$ref": "#/$defs/positive"}, "chord_sign": {"enum": ["left", "right"]}, "chord_x_mm": {"$ref": "#/$defs/positive"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "partial_ring"}, "inner_radius_mm": {"$ref": "#/$defs/positive"}, "outer_radius_mm": {"$ref": "#/$defs/positive"}, "half_angle_deg": {"$ref": "#/$defs/positive"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "inner_radius_mm", "outer_radius_mm"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "partial_ring_with_arc_island"}, "inner_radius_mm": {"$ref": "#/$defs/positive"}, "outer_radius_mm": {"$ref": "#/$defs/positive"}, "half_angle_deg": {"$ref": "#/$defs/positive"}, "island_radius_mm": {"$ref": "#/$defs/positive"}, "island_gap_mm": {"$ref": "#/$defs/positive"}, "center_angles_deg": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/number"}}, "replicas": {"type": "array", "minItems": 1, "items": {"type": "object", "properties": {"center_angle_deg": {"$ref": "#/$defs/number"}}, "required": ["center_angle_deg"], "additionalProperties": false}}}, "required": ["type", "inner_radius_mm", "outer_radius_mm", "island_radius_mm"], "additionalProperties": false, "oneOf": [{"required": ["center_angles_deg"], "not": {"required": ["replicas"]}}, {"required": ["replicas"], "not": {"required": ["center_angles_deg"]}}]},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "radial_slot"}, "inner_radius_mm": {"$ref": "#/$defs/positive"}, "outer_radius_mm": {"$ref": "#/$defs/positive"}, "start_angle_deg": {"$ref": "#/$defs/number"}, "end_angle_deg": {"$ref": "#/$defs/number"}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "inner_radius_mm", "outer_radius_mm", "start_angle_deg", "end_angle_deg"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "arc_chain"}, "arcs": {"type": "array", "minItems": 2, "items": {"type": "object", "properties": {"center": {"$ref": "#/$defs/point2"}, "radius_mm": {"$ref": "#/$defs/positive"}, "start_angle_deg": {"$ref": "#/$defs/number"}, "end_angle_deg": {"$ref": "#/$defs/number"}}, "required": ["radius_mm", "start_angle_deg", "end_angle_deg"], "additionalProperties": false}}, "circles": {"type": "array", "items": {"$ref": "#/$defs/circleItem"}}}, "required": ["type", "arcs"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "patterned_cutouts"}, "motif": {"$ref": "#/$defs/motif"}, "layout": {"$ref": "#/$defs/layout"}}, "required": ["type", "motif", "layout"], "additionalProperties": false},
|
|
|
|
|
{"type": "object", "properties": {"type": {"const": "compound_patterned_cutouts"}, "patterns": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/pattern"}}}, "required": ["type", "patterns"], "additionalProperties": false},
|
|
|
|
|
{"$ref": "#/$defs/analyticProfile"}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"sketch": {
|
|
|
|
|
"type": "object",
|
|
|
|
|
"properties": {"id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}, "name": {"type": "string"}, "workplane": {"$ref": "#/$defs/workplane"}, "profile": {"$ref": "#/$defs/profile"}, "role": {"enum": ["profile", "reference"]}, "attachment": {"$ref": "#/$defs/selectorRef"}, "profile_from": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
|
|
|
"required": ["id", "workplane", "profile"],
|
|
|
|
|
"additionalProperties": false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|