feat: strengthen CAD experience distillation and routing

This commit is contained in:
Jerry
2026-07-23 20:03:26 +08:00
parent a2f3ba6a90
commit 2edf8fb4c8
67 changed files with 16045 additions and 83 deletions
@@ -0,0 +1,149 @@
{
"schema_version": "1.0",
"request": "把明确提供的 015240.step 转换成可修改的 model-spec.json,并保留原始几何作为精确基体",
"route": {
"selected_backend": "build123d",
"runner_skill": "cad",
"project": "text-to-cad",
"fallback_order": [
"simplecadapi",
"cadam"
],
"workflow_profiles": [],
"operation": "modify",
"source_mode": "exact_step_base",
"modification_mode": "model_spec_parameter_edit"
},
"source": {
"path": "source.step",
"format": "step",
"backend": "build123d",
"sha256": "55aee6a0ad74435503a1e7f108b32c9f403ae9838933e2be6728fb5b2f5cfbd4",
"immutable_exact_base": true
},
"artifacts": [
{
"path": "model-spec.json",
"role": "editable_geometry_contract"
},
{
"path": "imported_015240.step",
"role": "primary"
},
{
"path": "imported_015240.stl",
"role": "secondary"
},
{
"path": "source.step",
"role": "immutable_exact_base"
}
],
"parameters": {},
"experience": {
"library": "../../../../cad-experience-library/library.json",
"context_kind": "generalized_cad_experience_query",
"methods_applied": []
},
"assumptions": [
"单位按 STEP 几何和导入工具约定记录为 mm。",
"原 STEP 不包含可可靠恢复的原生草图、约束或特征历史;后续修改通过 model-spec.json 的命名参数和修改特征表达。",
"“选中面厚度增加”按直接建模语义解释为源面 #f22 沿其 +Z 法向外移 1.0 mm。",
"“红圈内的孔缩小”按目标水平板通孔从约 Ø4.8 mm 缩小到 Ø3.6 mm 处理。"
],
"validation": [
{
"check": "exact_base_sha256",
"passed": true,
"value": "55aee6a0ad74435503a1e7f108b32c9f403ae9838933e2be6728fb5b2f5cfbd4"
},
{
"check": "exact_base_geometry_signature",
"passed": true,
"scope": "immutable_source.step",
"size_mm": [
26.200001497,
18.906424738,
28.2
],
"center_mm": [
13.100000748,
7.453212369,
0.0
],
"solid_count": 1,
"face_count": 31,
"edge_count": 87,
"volume_mm3": 2400.466496
},
{
"check": "model_spec_parameterized_rebuild",
"passed": true,
"modified_size_mm": [
26.200001497,
18.906424738,
29.2
],
"modified_center_mm": [
13.100000748,
7.453212369,
0.5
],
"solid_count": 1,
"volume_mm3": 2476.533646
},
{
"check": "selected_face_f22_extension",
"passed": true,
"source_plane_z_mm": 14.1,
"result_plane_z_mm": 15.1,
"extension_mm": 1.0,
"result_face": "#f27"
},
{
"check": "circled_hole_resize",
"passed": true,
"center_mm": [
5.9,
11.006425,
0.0
],
"axis": "Z",
"source_diameter_mm": 4.799996,
"result_diameter_mm": 3.6,
"result_face": "#f22"
},
{
"check": "source_to_modified_cad_diff",
"passed": true,
"geometry_changed": true,
"size_delta_mm": [
0.0,
0.0,
1.0
],
"center_delta_mm": [
0.0,
0.0,
0.5
]
},
{
"check": "cad_inspect_refs_facts_planes_positioning",
"passed": true
},
{
"check": "snapshot_review",
"passed": true,
"views": [
"snapshots/iso_20260723T085707Z.png",
"snapshots/iso_opposite_20260723T085707Z.png",
"snapshots/top_ortho_20260723T085707Z.png",
"snapshots/front_ortho_20260723T085707Z.png"
]
}
],
"viewer_links": [
"http://127.0.0.1:4179/?dir=%2FUsers%2Fjerry%2Flinkhand%2FCadSet%2Ftext-to-cad%2Fmodels%2Fcad-router-v1%2Fimported_015240&file=imported_015240.step"
]
}
@@ -0,0 +1,110 @@
{
"schema_version": "1.0",
"model_spec_kind": "parametric_cad_model",
"model_id": "imported_015240",
"units": "mm",
"reconstruction": {
"mode": "exact_step_base",
"source": {
"path": "source.step",
"sha256": "55aee6a0ad74435503a1e7f108b32c9f403ae9838933e2be6728fb5b2f5cfbd4",
"geometry_signature": {
"size_mm": [
26.200001497,
18.906424738,
28.2
],
"center_mm": [
13.100000748,
7.453212369,
-0.0
],
"solid_count": 1,
"face_count": 31,
"edge_count": 87,
"volume_mm3": 2400.466496
}
},
"history_recovery": {
"status": "not_present_in_step",
"contract": "Preserve the imported B-Rep exactly as the immutable base; represent later edits as named parametric modifications."
}
},
"parameters": {
"selected_face_extension": {
"value": 1.0,
"unit": "mm",
"role": "outward_offset_of_source_face_f22",
"source_face": "#f22",
"direction": "+Z"
},
"target_hole_diameter": {
"value": 3.6,
"unit": "mm",
"role": "diameter_of_circled_horizontal_plate_hole",
"source_diameter_mm": 4.799996,
"axis": "Z"
}
},
"modifications": [
{
"id": "extend_selected_face_f22",
"operation": "add_box",
"source_face": "#f22",
"direction": "+Z",
"center": [
13.1,
-1.0,
{
"parameter": "selected_face_extension",
"scale": 0.5,
"offset": 14.1
}
],
"size": [
22.2,
2.0,
{
"parameter": "selected_face_extension"
}
],
"enabled": true
},
{
"id": "fill_original_circled_hole",
"operation": "add_cylinder",
"axis": "z",
"center": [
5.9,
11.006425,
0.0
],
"diameter": 4.799996,
"length": 4.0,
"enabled": true
},
{
"id": "cut_resized_circled_hole",
"operation": "cut_cylinder",
"axis": "z",
"center": [
5.9,
11.006425,
0.0
],
"diameter": {
"parameter": "target_hole_diameter"
},
"length": 6.0,
"enabled": true
}
],
"outputs": {
"step": "imported_015240.step",
"stl": "imported_015240.stl"
},
"validation": {
"exact_base_required": true,
"geometry_signature_tolerance_mm": 1e-07
}
}
@@ -0,0 +1,29 @@
{
"input": "imported_015240.step",
"mode": "view",
"outputs": [
{
"path": "snapshots/iso.png",
"camera": "iso"
},
{
"path": "snapshots/iso_opposite.png",
"camera": {
"direction": [-1, 1, -0.8]
}
},
{
"path": "snapshots/top_ortho.png",
"camera": "top"
},
{
"path": "snapshots/front_ortho.png",
"camera": "front"
}
],
"render": {
"viewLabels": true,
"padding": 0.12,
"sizeProfile": "diagnostic"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

@@ -0,0 +1,372 @@
{
"ok": true,
"tokens": [
{
"line": 1,
"token": "#",
"cadPath": "targeted_015133",
"stepPath": "targeted_015133.step",
"stepHash": "97f9763fe46700d0a23fa052b08c119e7352275b4e850cb8ed8c77f85e29f4c3",
"summary": {
"kind": "part",
"occurrenceCount": 1,
"leafOccurrenceCount": 1,
"shapeCount": 1,
"faceCount": 199,
"edgeCount": 508,
"vertexCount": 0,
"bounds": {
"min": [
-106.75,
-0.0,
-38.0
],
"max": [
106.75,
78.5,
38.0
]
}
},
"selections": [],
"warnings": [],
"entryFacts": {
"size": [
213.5,
78.5,
76.0
],
"extentAxis": "x",
"center": [
0.0,
39.25,
0.0
],
"diag": 239.8343178112757,
"kind": "part"
},
"planes": [
{
"axis": "y",
"coordinate": 0.0,
"normalSign": -1,
"faceCount": 1,
"totalArea": 12646.876863,
"bbox": {
"min": [
-86.75,
-0.0,
-38.0
],
"max": [
86.75,
0.0,
38.0
]
},
"selectors": [
"f85"
]
},
{
"axis": "y",
"coordinate": 76.0,
"normalSign": 1,
"faceCount": 1,
"totalArea": 12168.786533,
"bbox": {
"min": [
-86.75,
76.0,
-38.0
],
"max": [
86.75,
76.0,
38.0
]
},
"selectors": [
"f59"
]
},
{
"axis": "z",
"coordinate": -38.00000000000001,
"normalSign": -1,
"faceCount": 3,
"totalArea": 11242.8,
"bbox": {
"min": [
-86.75,
0.0,
-38.0
],
"max": [
86.75,
76.0,
-38.0
]
},
"selectors": [
"f110",
"f86",
"f98"
]
},
{
"axis": "z",
"coordinate": 38.00000000000001,
"normalSign": 1,
"faceCount": 3,
"totalArea": 11242.8,
"bbox": {
"min": [
-86.75,
0.0,
38.0
],
"max": [
86.75,
76.0,
38.0
]
},
"selectors": [
"f60",
"f72",
"f84"
]
},
{
"axis": "x",
"coordinate": -106.75000000000001,
"normalSign": -1,
"faceCount": 5,
"totalArea": 5013.75858,
"bbox": {
"min": [
-106.75,
0.35,
-37.65
],
"max": [
-106.75,
75.65,
37.65
]
},
"selectors": [
"f140",
"f166",
"f168",
"f170",
"f172"
]
},
{
"axis": "x",
"coordinate": 106.75000000000001,
"normalSign": 1,
"faceCount": 5,
"totalArea": 5013.75858,
"bbox": {
"min": [
106.75,
0.35,
-37.65
],
"max": [
106.75,
75.65,
37.65
]
},
"selectors": [
"f158",
"f160",
"f162",
"f164",
"f55"
]
}
],
"entryPositioning": {
"kind": "part",
"bbox": {
"min": [
-106.75,
-0.0,
-38.0
],
"max": [
106.75,
78.5,
38.0
]
},
"bboxFacts": {
"size": [
213.5,
78.5,
76.0
],
"extentAxis": "x",
"center": [
0.0,
39.25,
0.0
],
"diag": 239.8343178112757
},
"majorPlanes": [
{
"axis": "y",
"coordinate": 0.0,
"normalSign": -1,
"faceCount": 1,
"totalArea": 12646.876863,
"bbox": {
"min": [
-86.75,
-0.0,
-38.0
],
"max": [
86.75,
0.0,
38.0
]
},
"selectors": [
"f85"
]
},
{
"axis": "y",
"coordinate": 76.0,
"normalSign": 1,
"faceCount": 1,
"totalArea": 12168.786533,
"bbox": {
"min": [
-86.75,
76.0,
-38.0
],
"max": [
86.75,
76.0,
38.0
]
},
"selectors": [
"f59"
]
},
{
"axis": "z",
"coordinate": -38.00000000000001,
"normalSign": -1,
"faceCount": 3,
"totalArea": 11242.8,
"bbox": {
"min": [
-86.75,
0.0,
-38.0
],
"max": [
86.75,
76.0,
-38.0
]
},
"selectors": [
"f110",
"f86",
"f98"
]
},
{
"axis": "z",
"coordinate": 38.00000000000001,
"normalSign": 1,
"faceCount": 3,
"totalArea": 11242.8,
"bbox": {
"min": [
-86.75,
0.0,
38.0
],
"max": [
86.75,
76.0,
38.0
]
},
"selectors": [
"f60",
"f72",
"f84"
]
},
{
"axis": "x",
"coordinate": -106.75000000000001,
"normalSign": -1,
"faceCount": 5,
"totalArea": 5013.75858,
"bbox": {
"min": [
-106.75,
0.35,
-37.65
],
"max": [
-106.75,
75.65,
37.65
]
},
"selectors": [
"f140",
"f166",
"f168",
"f170",
"f172"
]
},
{
"axis": "x",
"coordinate": 106.75000000000001,
"normalSign": 1,
"faceCount": 5,
"totalArea": 5013.75858,
"bbox": {
"min": [
106.75,
0.35,
-37.65
],
"max": [
106.75,
75.65,
37.65
]
},
"selectors": [
"f158",
"f160",
"f162",
"f164",
"f55"
]
}
]
}
}
],
"errors": []
}
@@ -0,0 +1,43 @@
{
"schema_version": "1.0",
"model_spec_kind": "parametric_cad_model",
"model_id": "targeted_015133",
"units": "mm",
"reconstruction": {
"mode": "exact_step_base",
"source": {
"path": "source.step",
"sha256": "97f9763fe46700d0a23fa052b08c119e7352275b4e850cb8ed8c77f85e29f4c3",
"geometry_signature": {
"size_mm": [
213.5,
78.5,
76.0
],
"center_mm": [
0.0,
39.25,
0.0
],
"solid_count": 1,
"face_count": 199,
"edge_count": 488,
"volume_mm3": 1174741.621833
}
},
"history_recovery": {
"status": "not_present_in_step",
"contract": "Preserve the imported B-Rep exactly as the immutable base; represent later edits as named parametric modifications."
}
},
"parameters": {},
"modifications": [],
"outputs": {
"step": "targeted_015133.step",
"stl": "targeted_015133.stl"
},
"validation": {
"exact_base_required": true,
"geometry_signature_tolerance_mm": 1e-07
}
}
@@ -0,0 +1,29 @@
{
"input": "targeted_015133.step",
"mode": "view",
"outputs": [
{
"path": "snapshot_iso.png",
"camera": "iso"
},
{
"path": "snapshot_iso_opposite.png",
"camera": {
"direction": [-1, 1, -0.8]
}
},
{
"path": "snapshot_top.png",
"camera": "top"
},
{
"path": "snapshot_front.png",
"camera": "front"
}
],
"render": {
"viewLabels": true,
"padding": 0.12,
"sizeProfile": "diagnostic"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB