Sketch API
CadFlow 提供现代 SketchDocument 前端与兼容 Sketch 数据模型。两者都在一个平面上表示声明式二维几何;方法和辅助函数返回更新后的值,不修改之前的状态。
Document 工作流
with cad.Model() as model:
sketch = model.sketch("plate")
sketch = sketch.add_point("a", 0, 0).add_point("b", 40, 0)
sketch = sketch.add_point("c", 40, 20).add_point("d", 0, 20)
sketch = (
sketch.add_line("ab", "a", "b")
.add_line("bc", "b", "c")
.add_line("cd", "c", "d")
.add_line("da", "d", "a")
.constrain_horizontal("ab")
.constrain_vertical("bc")
.constrain_fix("a")
)
solve = sketch.inspect(strict=False)
face = sketch.to_native_face(model, strict=False)
实体名称是 Sketch 内部的稳定引用。Diagnostic 与 Constraint Reference 会报告这些名称,因此应使用描述明确且唯一的 ID。
实体类型
公共 API 覆盖 Point、Line、Circle、Arc 与 B-spline。SketchRef 标识实体或 Point 结果。兼容辅助函数使用 add_line_rsketch 等名称,并明确返回替代 Sketch。
约束
| 分组 | 公共关系 |
|---|---|
| 关联 | coincident、connect、point-on、midpoint |
| 方向 | horizontal、vertical、parallel、perpendicular、collinear |
| 曲线 | tangent、concentric、equal radius |
| 对称与相等 | symmetric、equal length |
| 尺寸 | distance、X/Y distance、length、angle、radius、diameter |
| 固定 | fix |
避免冗余约束。只固定足以消除刚体自由度的几何,再由尺寸与几何关系决定剩余自由度。
Solver 与检查
SketchSolverOptions 控制 Tolerance 与迭代上限。Solver Backend 可注册、设为全局默认,或通过 sketch_solver_backend(...) 上下文临时选择。SketchSolveResult 报告状态、自由度、诊断与求解值。
构建和修复阶段使用 strict=False。发布边界要求欠约束或不一致立即失败时,使用 strict=True 或 require_fully_constrained=True。
下沉为几何
make_wire_from_sketch_rwire 与 make_face_from_sketch_rface 求解并下沉选中的 Profile。SketchDocument.to_native_face(model, strict=...) 生成由 Model 持有的原生 Face。Profile Selector 可用索引或稳定名称;在受支持的轮廓中,Inner Profile 可定义孔洞。
Sketch 是源状态,Face 或 Wire 是派生拓扑。修改实体或约束后应重新下沉新 Shape,不要假定旧 Shape 自动更新。
全部符号见 47 个 Sketch API。