-
Notifications
You must be signed in to change notification settings - Fork 1
Description
🚀 Phase 1: 几何建模能力的补完(Completed in v0.3.0)
为了让 AI 能设计真正的零件,需要覆盖基础的实体和操作。
-
丰富实体库 (Primitives Expansion)
-
基础体:
Box(立方体),Sphere(球体),Cone(圆锥),Torus(圆环),Wedge(楔形)。 -
特征操作封装: 不仅仅是创建实体,还需要封装
Hole(打孔),Slot(槽),CounterBore(沉头孔) 等工业常用特征,通过简单的参数(如depth,diameter)调用。 -
2D 草图与成型操作 (Sketching & Forming)
-
封装 Sketch: 支持
Rectangle,Circle,Polygon,Text(文字刻字很常用)。 -
成型操作: 封装
Extrude(拉伸),Revolve(旋转成型),Sweep(扫掠),Loft(放样)。 -
AI 接口设计: 让 AI 可以说 "Draw a rectangle on the top face of 'pole' and extrude it cut"(在'pole'顶面画矩形并拉伸切除)。
-
布尔运算与修改 (Booleans & Modifiers)
-
布尔:
Union(加),Difference(减/切割),Intersection(交)。(Completed in v0.2.1) -
修饰:
Fillet(倒圆角),Chamfer(倒角),Shell(抽壳),Offset(偏移)。(Completed in v0.2.2)
🧠 Phase 2: 语义化选择器(Completed in v0.3.1)
文件:selectors.py + mixins.py--EntitySelectorMixin
这是 IgnisCAD 最核心的进阶特性。AI 很难说出 "Edge #42",它通常会说 "the top edge" 或 "the edge near the hole"。
-
基于方位的选择器 (Positional Selectors)
-
实现类似于
entity.faces().top(),entity.edges().closest_to(point),entity.vertices().filter_by(Axis.Z)的方法。 -
让 AI 可以写:
model.find("pole").faces().top().fillet(2)(给柱子顶面做2mm圆角)。 -
基于拓扑的选择器 (Topological Selectors)
-
选择 "与...相连的面" (
faces_touching(...))。 -
选择 "面积最大的面" (
faces().sort_by_area().last).
- Tagging System (标签系统)
- 允许 AI 在建模过程中给特定的面或边打标签(例如
tag("mounting_hole")),后续操作直接引用标签,而非几何特征。
🔗 Phase 3: 约束与装配
AI 极其不擅长处理绝对坐标 (e.g., (10.5, 32.1, 5)),但非常擅长处理相对关系。
- 相对定位 (Relative Positioning)
- 封装
Align操作:让物体 A 的Center对齐物体 B 的Top。(Completed in v0.2.0) - 封装
Joints(连接点):在物体上定义“接口”(比如螺丝孔位),让 AI 只需命令screw.align_to(hole)。
- 约束求解 (Constraint Solver - 高级)
- 如果能引入简单的 2D 约束(平行、垂直、相切),将大大增强草图的表达能力。
build123d本身有很好的约束支持,你需要将其简化暴露给 AI。
🛠️ Phase 4: 分析与反馈闭环
AI 也是会犯错的。IgnisCAD 应该提供工具告诉 AI “你设计的这个东西物理上不成立”或者“体积太大了”。
- 几何属性查询:
- 暴露
volume(体积),surface_area(表面积),center_of_mass(质心),bounding_box(包围盒尺寸)。 - AI 可以自我检查:"Is the box larger than 100mm? If so, shrink it."
- 干涉检查 (Collision Detection):
-
提供
check_collision(entity1, entity2)。 -
如果两个零件重叠了,返回重叠体积,让 AI 知道需要移动或切割。
-
导出与可视化:
-
轻量化预览: 导出 GLTF/GLB 给前端展示,或者生成 SVG 投影图(AI 可以通过视觉模型看 SVG 来修正设计)。
-
标准格式: STEP (用于生产)。
🤖 Phase 5: AI 辅助特性 (AI-Specific Helpers)
针对 "AI Agent" 这一目标用户的特有功能。
describe()方法:
- 实现一个
model.describe()方法,返回一段人类可读的文本,描述当前的几何结构(例如:"A base plate with 4 holes and a cylinder in the center")。这可以用作 prompt 反馈给 AI,增强它的长期记忆。
validate()钩子:
- 允许定义一组规则(如“壁厚不能小于 2mm”),在导出前自动运行检查并报错给 AI。
- 代码生成助手 (Code Gen Utils):
- 提供一组 Prompt 模板或 System Message 建议,教大模型如何正确调用 IgnisCAD 的 API。