优化skill,添加特征树、编辑窗口
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# CAD Feature Tree Export
|
||||
|
||||
`feature_tree.json` is now a SolidWorks FeatureManager-style export. Semantic
|
||||
models are replayed from the feature nodes themselves; uploaded STEP models use
|
||||
a SolidWorks-style imported feature with an embedded SurfaceIR payload.
|
||||
|
||||
## Contract
|
||||
|
||||
- The artifact name stays `feature_tree.json`.
|
||||
- `tree_kind` is `solidworks_feature_manager`.
|
||||
- `schema_version` is `1.0`.
|
||||
- The JSON Schema lives at
|
||||
`designir-pipeline/contracts/feature_tree.schema.json`.
|
||||
- Studio records the artifact with role `feature_tree`; no feature-tree UI is
|
||||
required.
|
||||
|
||||
Top-level fields are:
|
||||
|
||||
- `model`: part metadata such as model id, family, units, and document type.
|
||||
- `source`: DesignIR path, STEP path, reconstruction mode, backend, and the
|
||||
native-history claim.
|
||||
- `feature_manager`: root id, standard SolidWorks reference nodes, and ordered
|
||||
feature nodes.
|
||||
- `rebuild_contract`: the replay mode and compiler entrypoint.
|
||||
- `validation`: structure validation, replay status, geometry/B-Rep status, and
|
||||
feature-recognition coverage.
|
||||
|
||||
## FeatureManager Style
|
||||
|
||||
Every tree starts with a familiar part root and reference geometry:
|
||||
|
||||
- `历史`
|
||||
- `原点`
|
||||
- `前视基准面`
|
||||
- `上视基准面`
|
||||
- `右视基准面`
|
||||
- `原点`
|
||||
|
||||
Semantic DesignIR features are normalized into SolidWorks-style nodes:
|
||||
|
||||
- `extrude_circle`, `extrude_rectangle`, `add_cylinder` -> `BossExtrude`
|
||||
- `through_hole` -> `CutExtrude`
|
||||
- `polar_hole_pattern` -> seed `CutExtrude` plus `CircularPattern`
|
||||
- recognized future operations map to `Revolve`, `RevolvedCut`, `HoleWizard`,
|
||||
`Fillet`, `Chamfer`, `LinearPattern`, and `MirrorPattern`
|
||||
|
||||
Parameters are attached to the owning feature node. They are not top-level
|
||||
tree nodes. Each parameter keeps a `binding_id` that matches `parameters.json`
|
||||
and the DesignIR semantic parameter name.
|
||||
|
||||
Semantic feature trees do not embed a full DesignIR copy. `BossExtrude`,
|
||||
`CutExtrude`, and `CircularPattern` nodes store the reconstructable sketch,
|
||||
depth, direction, hole, and pattern definitions needed by the
|
||||
FeatureTreeCompiler.
|
||||
|
||||
Each node also includes SolidWorks-style inspection fields:
|
||||
|
||||
- `definition`: feature-specific definition such as end condition, depth,
|
||||
direction, merge result, seed features, axis, or sketch profile.
|
||||
- `dimensions`: SolidWorks-style dimension rows such as `D1@凸台-拉伸1`, with
|
||||
parameter bindings when available.
|
||||
- `references`: sketch, plane, parent features, and child features.
|
||||
- `selection_sets`: selected faces, edges, and contours. These stay empty until
|
||||
stable B-Rep selectors are available.
|
||||
- `rebuild`: suppression and rollback/rebuild status.
|
||||
|
||||
## STEP And SurfaceIR
|
||||
|
||||
STEP does not contain original SolidWorks sketches or FeatureManager history.
|
||||
For uploaded STEP/SurfaceIR models, the exporter creates one canonical
|
||||
SolidWorks-style imported feature:
|
||||
|
||||
- `solidworks_type`: `ImportedFeature`
|
||||
- `display_name`: `导入1`
|
||||
- `english_name`: `Imported1`
|
||||
|
||||
The imported feature embeds compressed `gzip+base64+json` SurfaceIR. This keeps
|
||||
the tree honest and independently replayable without pretending that the
|
||||
original native CAD history was recovered.
|
||||
|
||||
## Replay
|
||||
|
||||
The tree can be replayed without sibling files:
|
||||
|
||||
```bash
|
||||
python designir-pipeline/scripts/feature_tree.py compile \
|
||||
feature_tree.json \
|
||||
--output-step replayed.step \
|
||||
--output-designir replayed.designir.json
|
||||
```
|
||||
|
||||
Semantic trees replay through `feature_tree.compile_feature_manager`, which
|
||||
builds DesignIR 3.0 from FeatureManager nodes and then calls
|
||||
`designir_pipeline.compile_designir`. Imported SurfaceIR trees replay through
|
||||
`surfaceir_pipeline.build_surfaceir`.
|
||||
Reference in New Issue
Block a user