feat: integrate SimpleCADAPI 2.0.2 CAD workflows

This commit is contained in:
Jerry
2026-08-03 11:17:05 +08:00
parent b5738e9109
commit c3a0f269b7
481 changed files with 110229 additions and 12826 deletions
+33 -2
View File
@@ -3,7 +3,21 @@
## API Definition
```python
def make_cylinder_rsolid(radius: ScalarLike, height: ScalarLike, bottom_face_center: Tuple[float, float, float] = (0, 0, 0), axis: Tuple[float, float, float] = (0, 0, 1)) -> Solid
def make_cylinder_rsolid(
radius: ScalarLike,
height: ScalarLike,
bottom_face_center: Tuple[float, float, float] = (0, 0, 0),
axis: Tuple[float, float, float] = (0, 0, 1),
*,
tag_prefix: Optional[str] = None,
result_tag: Optional[str] = None,
start_face_tag: Optional[str] = None,
end_face_tag: Optional[str] = None,
side_face_tag: Optional[str] = None,
start_edge_tag: Optional[str] = None,
end_edge_tag: Optional[str] = None,
seam_edge_tag: Optional[str] = None,
) -> Solid
```
*Source: operations.py*
@@ -14,4 +28,21 @@ def make_cylinder_rsolid(radius: ScalarLike, height: ScalarLike, bottom_face_cen
## Description
Create a cylinder solid.
Create a native cylinder solid. The kernel-backed output roles are:
- `cylinder.start`, `cylinder.end`, and `cylinder.side` for Faces.
- `cylinder.start_boundary`, `cylinder.end_boundary`, and `cylinder.seam` for Edges.
The role tag arguments attach tags to those exact roles.
`tag_prefix="shaft"` creates the topology tag prefix `shaft`: the cap and
lateral Faces receive `shaft.face.start`, `shaft.face.end`, and
`shaft.face.side`; their boundary Edges inherit the corresponding Face tags.
The three native Edge roles additionally receive `shaft.edge.start`,
`shaft.edge.end`, and `shaft.edge.seam`.
Topology tag prefixes must be supplied while creating the profile or feature. The implementation
uses OCC primitive witnesses and exact incident topology, not face or edge
enumeration, area, normal, or position heuristics. Use QL relation/set queries
to disambiguate an Edge shared by two tagged Faces, for example
`Q.edges().incident_to(face_a, face_b, distinct=True)` or
`face_a.shared_boundary(face_b)`.