{ "capability": "cad.geometry.prepare@v1", "display_name": "中性 CAD 几何准备", "default_enrollment": false, "lifecycle": { "status": "active", "visibility": "standard", "replacement": null, "detail": "生成供 ANSYS、Abaqus 等后续任务复用的中性 STEP。" }, "output_namespace": "cad", "input_policy": { "suffixes": [".step", ".stp"], "max_count": 1, "max_bytes": 268435456, "max_total_bytes": 268435456 }, "outputs": { "geometry": { "filename": "geometry.step", "media_type": "model/step", "relative_path": "geometry.step", "publish": true, "required": true }, "geometry_recipe": { "filename": "geometry-recipe.json", "media_type": "application/json", "relative_path": "geometry-recipe.json", "publish": true, "required": true }, "geometry_manifest": { "filename": "geometry-manifest.json", "media_type": "application/json", "relative_path": "geometry-manifest.json", "publish": true, "required": true }, "geometry_preview": { "filename": "geometry-preview.png", "media_type": "image/png", "relative_path": "geometry-preview.png", "publish": true, "required": true }, "provenance": { "filename": "provenance.json", "media_type": "application/json", "relative_path": ".meta/provenance.json", "publish": false, "required": true } }, "feature_path": ["operation", "prepare", "type"], "features": { "inspect": "1.0.0", "primitive": "1.0.0", "recipe": "1.0.0" }, "summary": { "title_path": ["operation", "prepare", "title"] }, "legacy_runtime": null, "workspace": null, "request_schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "x-maxBytes": 262144, "required": ["schema_version", "inputs", "operation", "outputs"], "additionalProperties": false, "properties": { "schema_version": {"const": 1}, "inputs": { "type": "array", "maxItems": 1, "items": { "type": "object", "required": ["key", "artifact_id"], "additionalProperties": false, "properties": { "key": {"const": "geometry"}, "artifact_id": {"type": "string", "format": "uuid"} } } }, "operation": { "type": "object", "required": ["prepare"], "additionalProperties": false, "properties": { "prepare": { "oneOf": [ {"$ref": "#/$defs/inspect"}, {"$ref": "#/$defs/primitive_prepare"}, {"$ref": "#/$defs/recipe_prepare"} ] } } }, "outputs": {"type": "array", "maxItems": 0} }, "$defs": { "finite": {"type": "number", "minimum": -1000000, "maximum": 1000000}, "positive": {"type": "number", "exclusiveMinimum": 0, "maximum": 1000000}, "nonnegative": {"type": "number", "minimum": 0, "maximum": 1000000}, "vector3": { "type": "array", "minItems": 3, "maxItems": 3, "items": {"$ref": "#/$defs/finite"} }, "direction3": { "type": "array", "minItems": 3, "maxItems": 3, "items": {"type": "number", "minimum": -1000000000000, "maximum": 1000000000000} }, "point3": { "type": "array", "minItems": 3, "maxItems": 3, "items": {"$ref": "#/$defs/finite"} }, "expected_count": { "type": "integer", "minimum": 1, "maximum": 128, "description": "Exact selected topology count assertion." }, "extreme_face": { "type": "object", "required": ["type", "axis", "side"], "additionalProperties": false, "properties": { "type": {"const": "extreme_face"}, "axis": {"enum": ["x", "y", "z"]}, "side": {"enum": ["min", "max"]}, "tolerance": {"$ref": "#/$defs/nonnegative"}, "angle_tolerance_degrees": {"type": "number", "minimum": 0, "maximum": 15, "default": 5}, "expected_count": {"$ref": "#/$defs/expected_count"} } }, "planar_faces": { "type": "object", "required": ["type", "normal", "offset", "tolerance"], "additionalProperties": false, "properties": { "type": {"const": "planar_faces"}, "normal": {"$ref": "#/$defs/direction3"}, "offset": {"$ref": "#/$defs/finite"}, "tolerance": {"$ref": "#/$defs/positive"}, "angle_tolerance_degrees": {"type": "number", "minimum": 0, "maximum": 15, "default": 5}, "expected_count": {"$ref": "#/$defs/expected_count"} } }, "surface_faces": { "type": "object", "required": ["type", "surface"], "additionalProperties": false, "properties": { "type": {"const": "surface_faces"}, "surface": {"enum": ["plane", "cylinder", "cone", "sphere", "torus", "other"]}, "expected_count": {"$ref": "#/$defs/expected_count"} } }, "face_selector": { "oneOf": [ {"$ref": "#/$defs/extreme_face"}, {"$ref": "#/$defs/planar_faces"}, {"$ref": "#/$defs/surface_faces"} ] }, "edge_selector": { "type": "object", "required": ["type", "curve"], "additionalProperties": false, "properties": { "type": {"const": "curve_edges"}, "curve": {"enum": ["line", "circle", "ellipse", "spline", "other"]}, "expected_count": {"$ref": "#/$defs/expected_count"} } }, "solid_selector": { "type": "object", "required": ["type"], "additionalProperties": false, "properties": { "type": {"const": "all_solids"}, "expected_count": {"$ref": "#/$defs/expected_count"} } }, "region": { "type": "object", "required": ["name", "topology", "selector"], "additionalProperties": false, "allOf": [ {"if": {"properties": {"topology": {"const": "face"}}, "required": ["topology"]}, "then": {"properties": {"selector": {"$ref": "#/$defs/face_selector"}}}}, {"if": {"properties": {"topology": {"const": "edge"}}, "required": ["topology"]}, "then": {"properties": {"selector": {"$ref": "#/$defs/edge_selector"}}}}, {"if": {"properties": {"topology": {"const": "solid"}}, "required": ["topology"]}, "then": {"properties": {"selector": {"$ref": "#/$defs/solid_selector"}}}} ], "properties": { "name": {"type": "string", "minLength": 1, "maxLength": 64, "pattern": "^[A-Za-z][A-Za-z0-9_-]*$"}, "topology": {"enum": ["face", "edge", "solid"]}, "selector": { "oneOf": [ {"$ref": "#/$defs/face_selector"}, {"$ref": "#/$defs/edge_selector"}, {"$ref": "#/$defs/solid_selector"} ] } } }, "primitive": { "oneOf": [ { "type": "object", "required": ["shape", "length", "width", "height"], "additionalProperties": false, "properties": {"shape": {"const": "box"}, "length": {"$ref": "#/$defs/positive"}, "width": {"$ref": "#/$defs/positive"}, "height": {"$ref": "#/$defs/positive"}} }, { "type": "object", "required": ["shape", "radius", "height"], "additionalProperties": false, "properties": {"shape": {"const": "cylinder"}, "radius": {"$ref": "#/$defs/positive"}, "height": {"$ref": "#/$defs/positive"}, "angle_degrees": {"type": "number", "exclusiveMinimum": 0, "maximum": 360}} }, { "type": "object", "required": ["shape", "radius", "inner_radius", "height"], "additionalProperties": false, "properties": {"shape": {"const": "tube"}, "radius": {"$ref": "#/$defs/positive"}, "inner_radius": {"$ref": "#/$defs/positive"}, "height": {"$ref": "#/$defs/positive"}, "angle_degrees": {"type": "number", "exclusiveMinimum": 0, "maximum": 360}} }, { "type": "object", "required": ["shape", "radius", "height"], "additionalProperties": false, "properties": {"shape": {"const": "cone"}, "radius": {"$ref": "#/$defs/positive"}, "height": {"$ref": "#/$defs/positive"}, "angle_degrees": {"type": "number", "exclusiveMinimum": 0, "maximum": 360}} }, { "type": "object", "required": ["shape", "radius1", "radius2", "height"], "additionalProperties": false, "properties": {"shape": {"const": "frustum"}, "radius1": {"$ref": "#/$defs/nonnegative"}, "radius2": {"$ref": "#/$defs/nonnegative"}, "height": {"$ref": "#/$defs/positive"}, "angle_degrees": {"type": "number", "exclusiveMinimum": 0, "maximum": 360}} }, { "type": "object", "required": ["shape", "radius"], "additionalProperties": false, "properties": {"shape": {"const": "sphere"}, "radius": {"$ref": "#/$defs/positive"}, "angle_degrees": {"type": "number", "exclusiveMinimum": 0, "maximum": 360}} }, { "type": "object", "required": ["shape", "x_min", "x_max", "y_min", "y_max", "z_min", "z_max"], "additionalProperties": false, "properties": {"shape": {"const": "wedge"}, "x_min": {"$ref": "#/$defs/finite"}, "x_max": {"$ref": "#/$defs/finite"}, "y_min": {"$ref": "#/$defs/finite"}, "y_max": {"$ref": "#/$defs/finite"}, "z_min": {"$ref": "#/$defs/finite"}, "z_max": {"$ref": "#/$defs/finite"}} }, { "type": "object", "required": ["shape", "major_radius", "minor_radius"], "additionalProperties": false, "properties": {"shape": {"const": "torus"}, "major_radius": {"$ref": "#/$defs/positive"}, "minor_radius": {"$ref": "#/$defs/positive"}, "angle_degrees": {"type": "number", "exclusiveMinimum": 0, "maximum": 360}} } ] }, "profile": { "type": "object", "required": ["id", "points"], "additionalProperties": false, "properties": { "id": {"$ref": "#/$defs/name"}, "points": { "type": "array", "minItems": 3, "maxItems": 512, "items": {"$ref": "#/$defs/point3"} } } }, "name": {"type": "string", "minLength": 1, "maxLength": 64, "pattern": "^[A-Za-z][A-Za-z0-9_-]*$"}, "step": { "type": "object", "required": ["id", "op"], "additionalProperties": false, "properties": { "id": {"$ref": "#/$defs/name"}, "op": {"enum": ["box", "cylinder", "tube", "cone", "frustum", "sphere", "wedge", "torus", "import_step", "extrude", "revolve", "sweep", "loft", "union", "cut", "intersect", "fillet", "chamfer", "shell", "translate", "rotate", "mirror", "linear_pattern", "circular_pattern", "combine"]}, "primitive": {"$ref": "#/$defs/primitive"}, "input": {"const": "geometry"}, "profile": {"$ref": "#/$defs/name"}, "profiles": {"type": "array", "minItems": 2, "maxItems": 32, "uniqueItems": true, "items": {"$ref": "#/$defs/name"}}, "target": {"$ref": "#/$defs/name"}, "targets": {"type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true, "items": {"$ref": "#/$defs/name"}}, "tools": {"type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true, "items": {"$ref": "#/$defs/name"}}, "vector": {"$ref": "#/$defs/vector3"}, "axis_start": {"$ref": "#/$defs/point3"}, "axis_end": {"$ref": "#/$defs/point3"}, "angle_degrees": {"type": "number", "exclusiveMinimum": -360, "maximum": 360}, "path": {"type": "array", "minItems": 2, "maxItems": 512, "items": {"$ref": "#/$defs/point3"}}, "selector": {"oneOf": [{"$ref": "#/$defs/face_selector"}, {"$ref": "#/$defs/edge_selector"}]}, "radius": {"$ref": "#/$defs/positive"}, "distance": {"$ref": "#/$defs/positive"}, "thickness": {"$ref": "#/$defs/positive"}, "plane": {"enum": ["XY", "XZ", "YZ"]}, "count": {"type": "integer", "minimum": 2, "maximum": 128}, "spacing": {"$ref": "#/$defs/positive"}, "center": {"$ref": "#/$defs/point3"} } }, "base_prepare": { "type": "object", "required": ["type", "title", "canonical_unit", "regions"], "properties": { "type": {"enum": ["inspect", "primitive", "recipe"]}, "title": {"type": "string", "minLength": 1, "maxLength": 160}, "canonical_unit": {"enum": ["mm", "m"]}, "regions": {"type": "array", "maxItems": 64, "items": {"$ref": "#/$defs/region"}} } }, "inspect": { "allOf": [ {"$ref": "#/$defs/base_prepare"}, { "type": "object", "required": ["type", "title", "canonical_unit", "regions", "geometry"], "additionalProperties": false, "properties": { "type": {"const": "inspect"}, "title": true, "canonical_unit": true, "regions": true, "geometry": {"type": "object", "required": ["input"], "additionalProperties": false, "properties": {"input": {"const": "geometry"}}} } } ] }, "primitive_prepare": { "allOf": [ {"$ref": "#/$defs/base_prepare"}, { "type": "object", "required": ["type", "title", "canonical_unit", "regions", "primitive"], "additionalProperties": false, "properties": {"type": {"const": "primitive"}, "title": true, "canonical_unit": true, "regions": true, "primitive": {"$ref": "#/$defs/primitive"}} } ] }, "recipe_prepare": { "allOf": [ {"$ref": "#/$defs/base_prepare"}, { "type": "object", "required": ["type", "title", "canonical_unit", "regions", "recipe"], "additionalProperties": false, "properties": { "type": {"const": "recipe"}, "title": true, "canonical_unit": true, "regions": true, "recipe": { "type": "object", "required": ["profiles", "steps", "result"], "additionalProperties": false, "properties": { "profiles": {"type": "array", "maxItems": 64, "items": {"$ref": "#/$defs/profile"}}, "steps": {"type": "array", "minItems": 1, "maxItems": 128, "items": {"$ref": "#/$defs/step"}}, "result": {"$ref": "#/$defs/name"} } } } } ] } } } }