994d06aaea
- 新增 selector_candidate_demo,移除 provenance intent 后枚举候选 selector - 对候选分支执行有界重建与严格 STEP 比较 - 仅在候选遍历完整且唯一 strict 通过时生成 selector 映射记录 - 增加 selector 候选搜索、预算限制和记录生成的测试 - 保持生产 selector resolver 不受 Demo 逻辑影响 - 更新 CADFS 能力台账,记录 IMPRINT 派生 profile 的 lineage selector 缺口
869 lines
43 KiB
JSON
869 lines
43 KiB
JSON
{
|
|
"$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": {"enum": ["cad.cdsl.llm.v1", "cad.runtime.v1"]},
|
|
"schema_version": {"type": "string"},
|
|
"kind": {"type": "string", "minLength": 1},
|
|
"part_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{3,80}$"},
|
|
"meta": {"type": "object"},
|
|
"bodies": {"type": "array", "items": {"$ref": "#/$defs/runtimeBody"}},
|
|
"geometry": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sketches": {"type": "array", "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},
|
|
"runtimeBody": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "pattern": "^body_[0-9]{3}$"},
|
|
"name": {"type": "string", "pattern": "^[a-z][a-z0-9_]{0,63}$"}
|
|
},
|
|
"required": ["id", "name"],
|
|
"additionalProperties": false
|
|
},
|
|
"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": {
|
|
"oneOf": [
|
|
{
|
|
"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
|
|
},
|
|
{"$ref": "#/$defs/selectorRef"}
|
|
]
|
|
},
|
|
"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"},
|
|
"offset_mm": {"type": "number", "minimum": 0}
|
|
},
|
|
"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": {"$ref": "#/$defs/extrudeDraft"}, "result_mode": {"enum": ["fuse", "new_body"]}},
|
|
"required": ["distance_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"extrudeFromFaceParams": {
|
|
"type": "object",
|
|
"properties": {"distance_mm": {"$ref": "#/$defs/number"}, "operation": {"enum": ["add", "cut"]}, "reverse": {"type": "boolean"}, "reverse_distance_mm": {"$ref": "#/$defs/number"}, "two_sided": {"type": "boolean"}, "end_condition": {"$ref": "#/$defs/endCondition"}, "reverse_end_condition": {"$ref": "#/$defs/endCondition"}, "draft": {"$ref": "#/$defs/extrudeDraft"}, "result_mode": {"enum": ["fuse", "new_body"]}},
|
|
"required": ["distance_mm", "operation"],
|
|
"additionalProperties": false
|
|
},
|
|
"extrudeDraft": {
|
|
"type": "object",
|
|
"properties": {"angle_deg": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 90}, "pull_direction": {"type": "boolean"}},
|
|
"required": ["angle_deg", "pull_direction"],
|
|
"additionalProperties": false
|
|
},
|
|
"extrudeCutThroughParams": {
|
|
"type": "object",
|
|
"properties": {"reverse": {"type": "boolean"}, "end_condition": {"$ref": "#/$defs/endCondition"}},
|
|
"required": ["end_condition"],
|
|
"additionalProperties": false
|
|
},
|
|
"loftParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"profile_sketch_ids": {
|
|
"type": "array",
|
|
"minItems": 2,
|
|
"maxItems": 16,
|
|
"uniqueItems": true,
|
|
"items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}
|
|
}
|
|
},
|
|
"required": ["profile_sketch_ids"],
|
|
"additionalProperties": false
|
|
},
|
|
"loftCapFaceParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"profile_sketch_ids": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 1,
|
|
"uniqueItems": true,
|
|
"items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}
|
|
}
|
|
},
|
|
"required": ["profile_sketch_ids"],
|
|
"additionalProperties": false
|
|
},
|
|
"sweepPath": {
|
|
"type": "object",
|
|
"properties": {
|
|
"workplane": {"$ref": "#/$defs/workplane"},
|
|
"segment": {"$ref": "#/$defs/analyticSegment"}
|
|
},
|
|
"required": ["workplane", "segment"],
|
|
"additionalProperties": false
|
|
},
|
|
"sweepParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {"$ref": "#/$defs/sweepPath"},
|
|
"is_frenet": {"type": "boolean"},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["path"],
|
|
"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"}, "result_mode": {"enum": ["fuse", "new_body"]}},
|
|
"required": ["angle_deg", "axis"],
|
|
"additionalProperties": false
|
|
},
|
|
"revolveSurfaceParams": {
|
|
"type": "object",
|
|
"properties": {"angle_deg": {"type": "number", "minimum": 0, "maximum": 360}, "axis": {"$ref": "#/$defs/axis"}, "reverse": {"type": "boolean"}},
|
|
"required": ["angle_deg", "axis"],
|
|
"additionalProperties": false
|
|
},
|
|
"extrudeSurfaceParams": {
|
|
"type": "object",
|
|
"properties": {"distance_mm": {"type": "number", "exclusiveMinimum": 0}, "reverse": {"type": "boolean"}, "reverse_distance_mm": {"type": "number", "exclusiveMinimum": 0}},
|
|
"required": ["distance_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"sphereParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"radius_mm": {"$ref": "#/$defs/positive"},
|
|
"center_mm": {"$ref": "#/$defs/point3"},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["radius_mm", "center_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"boxParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"length_mm": {"$ref": "#/$defs/positive"},
|
|
"width_mm": {"$ref": "#/$defs/positive"},
|
|
"height_mm": {"$ref": "#/$defs/positive"},
|
|
"center_mm": {"$ref": "#/$defs/point3"},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["length_mm", "width_mm", "height_mm", "center_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"cylinderParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"radius_mm": {"$ref": "#/$defs/positive"},
|
|
"height_mm": {"$ref": "#/$defs/positive"},
|
|
"axis": {"$ref": "#/$defs/axis"},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["radius_mm", "height_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"bendChainLeg": {
|
|
"type": "object",
|
|
"properties": {
|
|
"leg_mm": {"$ref": "#/$defs/positive"},
|
|
"bend_angle_deg": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 180},
|
|
"inner_radius_mm": {"type": "number", "minimum": 0},
|
|
"side": {"type": "integer", "enum": [1, -1]}
|
|
},
|
|
"required": ["leg_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"bendAddParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"thickness_mm": {"$ref": "#/$defs/positive"},
|
|
"width_mm": {"$ref": "#/$defs/positive"},
|
|
"chain": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/bendChainLeg"}},
|
|
"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
|
|
},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["thickness_mm", "width_mm", "chain"],
|
|
"additionalProperties": false
|
|
},
|
|
"gearAddParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"module_mm": {"$ref": "#/$defs/positive"},
|
|
"teeth_count": {"type": "integer", "minimum": 8, "maximum": 200},
|
|
"width_mm": {"$ref": "#/$defs/positive"},
|
|
"axis": {"$ref": "#/$defs/axis"},
|
|
"helix_angle_rad": {"type": "number", "minimum": 0, "exclusiveMaximum": 0.7853981633974483},
|
|
"pressure_angle_rad": {"type": "number", "exclusiveMinimum": 0, "maximum": 0.6108652381980153},
|
|
"herringbone": {"type": "boolean"},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["module_mm", "teeth_count", "width_mm", "axis"],
|
|
"additionalProperties": false
|
|
},
|
|
"rackAddParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"module_mm": {"$ref": "#/$defs/positive"},
|
|
"teeth_count": {"type": "integer", "minimum": 1, "maximum": 2000},
|
|
"thickness_mm": {"$ref": "#/$defs/positive"},
|
|
"axis": {"$ref": "#/$defs/axis"},
|
|
"pressure_angle_rad": {"type": "number", "exclusiveMinimum": 0, "maximum": 0.6108652381980153},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["module_mm", "teeth_count", "thickness_mm", "axis"],
|
|
"additionalProperties": false
|
|
},
|
|
"threadAddParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"major_diameter_mm": {"$ref": "#/$defs/positive"},
|
|
"minor_diameter_mm": {"$ref": "#/$defs/positive"},
|
|
"pitch_mm": {"$ref": "#/$defs/positive"},
|
|
"length_mm": {"$ref": "#/$defs/positive"},
|
|
"axis": {"$ref": "#/$defs/axis"},
|
|
"angle_deg": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 180},
|
|
"lefthand": {"type": "boolean"},
|
|
"relief_length_mm": {"type": "number", "minimum": 0},
|
|
"crest_radius_mm": {"type": "number", "minimum": 0},
|
|
"root_radius_mm": {"type": "number", "minimum": 0},
|
|
"result_mode": {"enum": ["fuse", "new_body"]}
|
|
},
|
|
"required": ["major_diameter_mm", "minor_diameter_mm", "pitch_mm", "length_mm", "axis"],
|
|
"additionalProperties": false
|
|
},
|
|
"threadCutParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"major_diameter_mm": {"$ref": "#/$defs/positive"},
|
|
"minor_diameter_mm": {"$ref": "#/$defs/positive"},
|
|
"pitch_mm": {"$ref": "#/$defs/positive"},
|
|
"length_mm": {"$ref": "#/$defs/positive"},
|
|
"axis": {"$ref": "#/$defs/axis"},
|
|
"angle_deg": {"type": "number", "exclusiveMinimum": 0, "exclusiveMaximum": 180},
|
|
"lefthand": {"type": "boolean"},
|
|
"crest_radius_mm": {"type": "number", "minimum": 0},
|
|
"root_radius_mm": {"type": "number", "minimum": 0}
|
|
},
|
|
"required": ["major_diameter_mm", "minor_diameter_mm", "pitch_mm", "length_mm", "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}, "tangent_propagation": {"type": "boolean"}},
|
|
"required": ["distance_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"shellParams": {
|
|
"type": "object",
|
|
"properties": {"thickness_mm": {"type": "number", "exclusiveMinimum": 0}, "inward": {"type": "boolean"}, "target_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
"required": ["thickness_mm"],
|
|
"additionalProperties": false
|
|
},
|
|
"booleanBodiesParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"operation": {"enum": ["union", "subtract", "intersect"]},
|
|
"target_feature_ids": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
"target_pattern_instance_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/patternInstanceBodyRef"}},
|
|
"tool_feature_ids": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
"tool_pattern_instance_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/patternInstanceBodyRef"}},
|
|
"keep_tools": {"type": "boolean"}
|
|
},
|
|
"required": ["operation"],
|
|
"allOf": [
|
|
{"anyOf": [{"required": ["target_feature_ids"]}, {"required": ["target_pattern_instance_refs"]}]},
|
|
{"anyOf": [{"required": ["tool_feature_ids"]}, {"required": ["tool_pattern_instance_refs"]}]}
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"bodyTransform": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {"enum": ["translation", "rotation", "uniform_scale"]},
|
|
"translation_mm": {"$ref": "#/$defs/point3"},
|
|
"axis": {"$ref": "#/$defs/axis"},
|
|
"angle_deg": {"type": "number"},
|
|
"center_mm": {"$ref": "#/$defs/point3"},
|
|
"scale_factor": {"type": "number", "exclusiveMinimum": 0}
|
|
},
|
|
"required": ["type"],
|
|
"allOf": [
|
|
{"if": {"properties": {"type": {"const": "translation"}}, "required": ["type"]}, "then": {"required": ["translation_mm"]}},
|
|
{"if": {"properties": {"type": {"const": "rotation"}}, "required": ["type"]}, "then": {"required": ["axis", "angle_deg"]}},
|
|
{"if": {"properties": {"type": {"const": "uniform_scale"}}, "required": ["type"]}, "then": {"required": ["center_mm", "scale_factor"]}}
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"patternInstanceBodyRef": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pattern_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
"source_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
"instance_index": {"type": "integer", "minimum": 1}
|
|
},
|
|
"required": ["pattern_feature_id", "source_feature_id", "instance_index"],
|
|
"additionalProperties": false
|
|
},
|
|
"transformCopyBodyRef": {
|
|
"type": "object",
|
|
"properties": {
|
|
"transform_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
"source_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}
|
|
},
|
|
"required": ["transform_feature_id", "source_feature_id"],
|
|
"additionalProperties": false
|
|
},
|
|
"transformBodiesParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source_feature_ids": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
"pattern_instance_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/patternInstanceBodyRef"}},
|
|
"transform_copy_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"$ref": "#/$defs/transformCopyBodyRef"}},
|
|
"transform": {"$ref": "#/$defs/bodyTransform"},
|
|
"make_copy": {"type": "boolean"}
|
|
},
|
|
"required": ["transform", "make_copy"],
|
|
"anyOf": [{"required": ["source_feature_ids"]}, {"required": ["pattern_instance_refs"]}, {"required": ["transform_copy_refs"]}],
|
|
"additionalProperties": false
|
|
},
|
|
"deleteBodiesParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"target_feature_ids": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}}
|
|
},
|
|
"required": ["target_feature_ids"],
|
|
"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"},
|
|
"mirror_current_body": {"type": "boolean"}
|
|
},
|
|
"required": ["source_feature_ids", "mirror_plane"],
|
|
"additionalProperties": false
|
|
},
|
|
"circularPatternParams": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source_feature_ids": {"type": "array", "items": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}},
|
|
"axis": {"$ref": "#/$defs/axis"},
|
|
"pattern_count": {"type": "integer", "minimum": 1},
|
|
"sweep_angle_deg": {"type": "number", "minimum": -360, "maximum": 360},
|
|
"operation_mode": {"enum": ["add", "remove"]},
|
|
"excluded_instance_indices": {"type": "array", "items": {"type": "integer", "minimum": 1}, "uniqueItems": true}
|
|
},
|
|
"required": ["source_feature_ids", "axis", "pattern_count"],
|
|
"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/hostFace"},
|
|
"scope_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
"thread": {"type": "object"},
|
|
"countersink": {"type": "object"},
|
|
"counterbore": {"type": "object"}
|
|
},
|
|
"required": ["hole_type", "diameter_mm", "depth_mm", "end_condition"],
|
|
"additionalProperties": false
|
|
},
|
|
"featureOutputRole": {
|
|
"enum": [
|
|
"extrude.start", "extrude.end", "sweep.start", "sweep.end", "loft.start", "loft.end", "cylinder.start", "cylinder.end",
|
|
"shell.offset_face", "shell.closing_descendant", "shell.body_face"
|
|
]
|
|
},
|
|
"outputRoleSource": {
|
|
"type": "object",
|
|
"properties": {
|
|
"owner_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_.:-]{1,160}$"},
|
|
"output_role": {"$ref": "#/$defs/featureOutputRole"}
|
|
},
|
|
"required": ["owner_feature_id", "output_role"],
|
|
"additionalProperties": false
|
|
},
|
|
"selectorIntentSourceQuery": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ast": {},
|
|
"featurescript_version": {"type": "string", "pattern": "^[0-9]+(?:\\.[0-9]+)*$"},
|
|
"standard_library": {"type": "string", "minLength": 1},
|
|
"standard_library_version": {"type": "string", "minLength": 1},
|
|
"standard_library_imports": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {"type": "string", "minLength": 1},
|
|
"version": {"type": "string", "minLength": 1}
|
|
},
|
|
"required": ["path"],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"required": ["ast"],
|
|
"additionalProperties": false
|
|
},
|
|
"selectorIntent": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {"const": "1.0"},
|
|
"kind": {"enum": ["face", "edge", "axis", "plane", "feature", "vertex", "body"]},
|
|
"query_family": {"type": "string", "pattern": "^[A-Z][A-Z0-9_]{0,79}$"},
|
|
"source_query": {"$ref": "#/$defs/selectorIntentSourceQuery"},
|
|
"source_entity": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sketch_id": {"type": "string", "minLength": 1},
|
|
"entity_id": {"type": "string", "minLength": 1}
|
|
},
|
|
"required": ["sketch_id", "entity_id"],
|
|
"additionalProperties": false
|
|
},
|
|
"source_entities": {
|
|
"type": "array",
|
|
"minItems": 2,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sketch_id": {"type": "string", "minLength": 1},
|
|
"entity_id": {"type": "string", "minLength": 1}
|
|
},
|
|
"required": ["sketch_id", "entity_id"],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"intersection_sources": {
|
|
"type": "array",
|
|
"minItems": 2,
|
|
"maxItems": 2,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"query_family": {"enum": ["CAP_FACE", "SWEPT_FACE"]},
|
|
"owner_feature_id": {"type": "string", "minLength": 1, "maxLength": 160},
|
|
"output_role": {"enum": ["extrude.start", "extrude.end"]},
|
|
"source_entity": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sketch_id": {"type": "string", "minLength": 1},
|
|
"entity_id": {"type": "string", "minLength": 1}
|
|
},
|
|
"required": ["sketch_id", "entity_id"],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["query_family", "owner_feature_id"],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"output_role": {"$ref": "#/$defs/featureOutputRole"},
|
|
"lineage_role": {"enum": ["extrude.start", "extrude.end"]},
|
|
"body_member_contract": {"enum": ["direct_new_body"]},
|
|
"derivation_policy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"allowed": {"type": "array", "minItems": 1, "items": {"enum": ["continuation", "fragment", "merge", "intersection", "boundary", "replacement"]}},
|
|
"multiplicity": {"enum": ["one", "all_fragments", "source_qualified", "none"]}
|
|
},
|
|
"required": ["allowed", "multiplicity"],
|
|
"additionalProperties": false
|
|
},
|
|
"evidence": {"enum": ["kernel_history", "operation_role", "active_body_member", "feature_script_query", "explicit_datum", "geometry_hint"]},
|
|
"disambiguation": {"type": "object"}
|
|
},
|
|
"required": ["version", "query_family", "source_query", "derivation_policy", "evidence"],
|
|
"additionalProperties": false
|
|
},
|
|
"selectorRef": {
|
|
"type": "object",
|
|
"properties": {
|
|
"kind": {"enum": ["face", "edge", "axis", "plane", "feature", "vertex", "body"]},
|
|
"stable_id": {"type": "string", "minLength": 1},
|
|
"output_role": {"$ref": "#/$defs/featureOutputRole"},
|
|
"output_role_source": {"$ref": "#/$defs/outputRoleSource"},
|
|
"owner_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_.:-]{1,160}$"},
|
|
"owner_match_required": {"type": "boolean"},
|
|
"geometry": {"type": "object"},
|
|
"source": {"enum": ["solidworks", "inferred_from_step", "runtime_snapshot", "viewer_selection"]},
|
|
"snapshot_id": {"type": "string", "minLength": 1},
|
|
"binding_feature_id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"},
|
|
"match_mode": {"enum": ["unique", "all"]},
|
|
"matched_selectors": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/selectorRef"}},
|
|
"intersection_of": {"type": "array", "minItems": 2, "items": {"$ref": "#/$defs/selectorRef"}},
|
|
"selector_intent_version": {"const": "1.0"},
|
|
"selector_intent": {"$ref": "#/$defs/selectorIntent"},
|
|
"confidence": {"type": "number", "minimum": 0, "maximum": 1}
|
|
},
|
|
"required": ["kind", "source", "confidence"],
|
|
"anyOf": [{"required": ["stable_id"]}, {"required": ["output_role"]}, {"required": ["selector_intent"]}],
|
|
"additionalProperties": false
|
|
},
|
|
"analyticSegment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {"enum": ["line", "arc", "circle", "ellipse", "bspline"]},
|
|
"start": {"$ref": "#/$defs/point2"},
|
|
"end": {"$ref": "#/$defs/point2"},
|
|
"center": {"$ref": "#/$defs/point2"},
|
|
"radius_mm": {"$ref": "#/$defs/positive"},
|
|
"major_radius_mm": {"$ref": "#/$defs/positive"},
|
|
"minor_radius_mm": {"$ref": "#/$defs/positive"},
|
|
"major_axis": {"$ref": "#/$defs/point2"},
|
|
"points": {"type": "array", "minItems": 2, "items": {"$ref": "#/$defs/point2"}},
|
|
"parameters": {"type": "array", "minItems": 2, "items": {"type": "number"}},
|
|
"periodic": {"type": "boolean"},
|
|
"parameterization": {"enum": ["chord", "centripetal"]},
|
|
"clockwise": {"type": "boolean"},
|
|
"start_tangent": {"$ref": "#/$defs/point2"},
|
|
"end_tangent": {"$ref": "#/$defs/point2"}
|
|
,"source_entity_id": {"type": "string", "minLength": 1, "maxLength": 160}
|
|
},
|
|
"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": "ellipse"}}}, "then": {"required": ["center", "major_radius_mm", "minor_radius_mm", "major_axis"]}},
|
|
{"if": {"properties": {"type": {"const": "bspline"}}}, "then": {"required": ["start", "end", "points"]}},
|
|
{"if": {"properties": {"type": {"const": "bspline"}, "points": {"maxItems": 2}}}, "then": {"required": ["start_tangent", "end_tangent", "parameters"], "properties": {"periodic": {"const": false}}}}
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"constructionBsplineSegment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {"const": "bspline"},
|
|
"degree": {"type": "integer", "minimum": 1},
|
|
"control_points": {"type": "array", "minItems": 2, "items": {"$ref": "#/$defs/point2"}},
|
|
"knots": {"type": "array", "minItems": 2, "items": {"type": "number"}},
|
|
"periodic": {"type": "boolean"},
|
|
"weights": {"type": "array", "minItems": 2, "items": {"type": "number", "exclusiveMinimum": 0}}
|
|
},
|
|
"required": ["type", "degree", "control_points", "knots", "periodic"],
|
|
"additionalProperties": false
|
|
},
|
|
"constructionSegment": {
|
|
"oneOf": [
|
|
{"$ref": "#/$defs/analyticSegment"},
|
|
{"$ref": "#/$defs/constructionBsplineSegment"}
|
|
]
|
|
},
|
|
"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/constructionSegment"}}
|
|
},
|
|
"required": ["type", "contours"],
|
|
"additionalProperties": false
|
|
},
|
|
"imprintSourceEntity": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {"type": "string", "minLength": 1, "maxLength": 160},
|
|
"curve": {"$ref": "#/$defs/analyticSegment"}
|
|
},
|
|
"required": ["id", "curve"],
|
|
"additionalProperties": false
|
|
},
|
|
"imprintFragment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"anchor_entity_id": {"type": "string", "minLength": 1, "maxLength": 160},
|
|
"side": {"enum": [-1, 1]},
|
|
"intersection_index": {"type": "integer", "minimum": 0}
|
|
},
|
|
"required": ["anchor_entity_id", "side"],
|
|
"additionalProperties": false
|
|
},
|
|
"imprintSelection": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source_entity_id": {"type": "string", "minLength": 1, "maxLength": 160},
|
|
"face_side": {"enum": [-1, 1]},
|
|
"fragment": {"$ref": "#/$defs/imprintFragment"}
|
|
},
|
|
"required": ["source_entity_id", "face_side"],
|
|
"additionalProperties": false
|
|
},
|
|
"planarImprintProfile": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {"const": "planar_imprint"},
|
|
"source_entities": {"type": "array", "minItems": 2, "items": {"$ref": "#/$defs/imprintSourceEntity"}},
|
|
"selections": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/imprintSelection"}}
|
|
},
|
|
"required": ["type", "source_entities", "selections"],
|
|
"additionalProperties": false
|
|
},
|
|
"feature_atomic_ids": {"enum": ["extrude_add_blind", "extrude_add_blind_with_hole", "extrude_add_two_sided", "extrude_cut_blind", "extrude_cut_two_sided", "extrude_cut_through", "extrude_from_face", "extrude_surface", "loft_add", "loft_add_with_cap_face", "sweep_add", "revolve_add", "revolve_cut", "revolve_surface", "hole_blind", "hole_countersink", "hole_counterbore", "sphere_add", "box_add", "cylinder_add", "thread_add", "thread_cut", "bend_add", "gear_add", "rack_add", "fillet", "chamfer", "shell", "boolean_bodies", "transform_bodies", "delete_bodies", "pattern_linear", "pattern_mirror", "pattern_circular", "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_blind_with_hole"}}}, "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": "extrude_cut_through"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/extrudeCutThroughParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "extrude_cut_two_sided"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/extrudeParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "extrude_from_face"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/extrudeFromFaceParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "loft_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/loftParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "loft_add_with_cap_face"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/loftCapFaceParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "sweep_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/sweepParams"}}}},
|
|
{"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": "revolve_surface"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/revolveSurfaceParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "extrude_surface"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/extrudeSurfaceParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "sphere_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/sphereParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "box_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/boxParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "cylinder_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/cylinderParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "bend_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/bendAddParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "gear_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/gearAddParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "rack_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/rackAddParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "thread_add"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/threadAddParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "thread_cut"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/threadCutParams"}}}},
|
|
{"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": "shell"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/shellParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "boolean_bodies"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/booleanBodiesParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "transform_bodies"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/transformBodiesParams"}}}},
|
|
{"if": {"properties": {"atomic_id": {"const": "delete_bodies"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/deleteBodiesParams"}}}},
|
|
{"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": "pattern_circular"}}}, "then": {"properties": {"params": {"$ref": "#/$defs/circularPatternParams"}}}},
|
|
{"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"}}}}
|
|
]
|
|
},
|
|
"profile_type": {"enum": ["circle", "polygon", "analytic_contours", "planar_imprint"]},
|
|
"profile": {
|
|
"oneOf": [
|
|
{"type": "object", "properties": {"type": {"const": "circle"}, "center": {"$ref": "#/$defs/point2"}, "radius_mm": {"$ref": "#/$defs/positive"}, "source_entity_id": {"type": "string", "minLength": 1, "maxLength": 160}}, "required": ["type", "radius_mm"], "additionalProperties": false},
|
|
{"type": "object", "properties": {"type": {"const": "polygon"}, "vertices": {"type": "array", "minItems": 3, "items": {"$ref": "#/$defs/point2"}}}, "required": ["type", "vertices"], "additionalProperties": false},
|
|
{"$ref": "#/$defs/analyticProfile"},
|
|
{"$ref": "#/$defs/planarImprintProfile"}
|
|
]
|
|
},
|
|
"sketch": {
|
|
"type": "object",
|
|
"properties": {"id": {"type": "string", "pattern": "^[A-Za-z0-9_-]{1,80}$"}, "name": {"type": "string"}, "source_sketch_id": {"type": "string", "minLength": 1, "maxLength": 160}, "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
|
|
}
|
|
}
|
|
}
|