HistCAD 基础规范
用有序建模步骤描述零件,重建可编辑的三维模型。
面向可执行重建的建模序列格式
顶层以有序 JSON 数组保存建模步骤。执行端按数组顺序重建原生参数化 CAD 模型;每步记录局部草图、显式约束、特征参数或边界引用。普通序列中的坐标、尺寸与特征参数必须为有限数值,不保留参数名或参数表达式。
基础结构
普通序列必须是非空 JSON 数组,不使用额外包装对象。下方完整结构树定义顶层数组中每一个建模步骤可采用的字段组合。
顶层直接是步骤数组,不是包含 metadata、operations 或 modeling_sequence 的包装对象。草图驱动特征共享坐标系、草图几何与约束三项公共数据结构;特征类别由字段组合判别。
HistCADModelingSequence: ModelingStep[1..*]
└─ ModelingStep
├─ ExtrudeStep
│ ├─ coordinate_system: CoordinateSystem
│ ├─ sketch: Sketch
│ ├─ constraints: Constraints
│ ├─ towards: number
│ ├─ opposite: number
│ └─ operation: "NewBody" | "Join" | "Cut" | "Intersect"
├─ RevolveSweepStep
│ ├─ coordinate_system: CoordinateSystem
│ ├─ sketch: Sketch
│ ├─ constraints: Constraints
│ ├─ axis: Axis3
│ ├─ start: number
│ ├─ end: number 或 angle: number
│ └─ operation: "NewBody" | "Join" | "Cut" | "Intersect"
├─ HelicalSweepStep
│ ├─ coordinate_system: CoordinateSystem
│ ├─ sketch: Sketch
│ ├─ constraints: Constraints
│ ├─ axis: Axis3
│ ├─ pitch: number
│ ├─ turns: number
│ ├─ handedness: "Right" | "Left"
│ └─ operation: "NewBody" | "Join" | "Cut" | "Intersect"
├─ FilletStep
│ ├─ near_points: point3[]
│ ├─ radius: number | number[]
│ └─ operation: "Fillet"
└─ ChamferStep
├─ near_points: point3[]
├─ plane?: vector3
├─ dist: number
├─ angle?: number
└─ operation: "Chamfer"样例数据
以下为完整的单步建模序列:顶层数组中的对象定义矩形草图,通过显式约束固定其连接、方向和尺寸,然后沿草图法线创建实体。
所有坐标、尺寸和特征参数必须为有限数值;长度单位为毫米,角度单位为度。尺寸约束也可使用带明确单位的字符串,例如 "20 mm"。
[
{
"coordinate_system": {
"Euler Angles": [0.0, 0.0, 0.0],
"Translation Vector": [0.0, 0.0, 0.0]
},
"sketch": {
"line_1": {"start": [0.0, 0.0], "end": [20.0, 0.0]},
"line_2": {"start": [20.0, 0.0], "end": [20.0, 10.0]},
"line_3": {"start": [20.0, 10.0], "end": [0.0, 10.0]},
"line_4": {"start": [0.0, 10.0], "end": [0.0, 0.0]}
},
"constraints": {
"Coincident": [
["line_1.end", "line_2.start"],
["line_2.end", "line_3.start"],
["line_3.end", "line_4.start"],
["line_4.end", "line_1.start"]
],
"Horizontal": ["line_1", "line_3"],
"Vertical": ["line_2", "line_4"],
"Length": [["line_1", 20.0], ["line_2", 10.0]]
},
"towards": 5.0,
"opposite": 0.0,
"operation": "NewBody"
}
]公共结构与坐标系
所有依赖草图的建模步骤都必须包含 coordinate_system。局部草图位于该坐标系的 XY 平面;Axis3 在 JSON 中写成轴上一点与非零方向向量组成的数组。
Euler Angles 为内禀 XYZ 欧拉角 [x, y, z],单位为度;Translation Vector 为局部原点在零件坐标系中的位置,单位为毫米。
point2: [number, number] point3: [number, number, number] vector3: [number, number, number] CoordinateSystem ├─ "Euler Angles": [number, number, number] └─ "Translation Vector": [number, number, number] Axis3 ├─ axis_point: point3 └─ axis_direction: vector3(非零)
草图图元与引用约束
sketch 是图元名称到图元参数的非空扁平对象,不显式序列化面、环或轮廓成员关系。执行端根据图元连接关系恢复闭合轮廓;实体特征使用的轮廓必须闭合。constraints 仅可引用当前步骤的草图图元,无显式约束时写 {}。坐标系信息请参阅上方“公共结构与坐标系”。
五类基础特征操作
基础特征步骤将公共数据结构转化为三维实体,或对当前 B-Rep 边执行局部编辑。草图驱动步骤使用 NewBody、Join、Cut 或 Intersect;圆角与倒角的 operation 分别固定为 Fillet、Chamfer。
有效性要求
建模序列除满足各字段的类型与单位要求外,还必须满足以下可执行性边界。
- 数组按出现顺序执行;每个元素只表示一个建模步骤。
- 草图图元名称在当前 sketch 中必须唯一,约束引用不得跨步骤。
- 用于拉伸、旋转扫掠或螺旋扫掠的 sketch 必须非空,且能恢复为有效闭合轮廓。
- axis 的方向向量必须非零;pitch、turns、圆角半径和倒角距离必须满足各特征的正值要求。
- near_points 的每个元素必须是有限三维点,并能在执行时唯一定位预期边界。
- 装配字段、后端命令、兼容别名、诊断追踪、特征标签、评测指标、来源信息及 STEP、网格、渲染等派生物不写入建模序列,应单独保存。
