01 / BASIC SPECIFICATION
HistCAD 基础规范
零件级、可执行的三维建模历史表示;当前版本为 v0.1。
HISTCAD JSON · V0.1
面向可执行重建的建模序列格式
顶层以有序 JSON 数组保存建模步骤。执行端按数组顺序重建原生参数化 CAD 模型;每步记录局部草图、显式约束、特征参数或边界引用。普通序列中的坐标、尺寸与特征参数必须为有限数值,不保留参数名或参数表达式。
- 顶层结构
- 步骤数组
- 公共结构
- 3 项
- 特征步骤
- 5 类
MODELING SEQUENCE
基础结构
普通序列必须是非空 JSON 数组,不使用额外包装对象。下方完整结构树定义顶层数组中每一个建模步骤可采用的字段组合。
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"顶层直接是步骤数组,不是包含 metadata、operations 或 modeling_sequence 的包装对象。草图驱动特征共享坐标系、草图几何与约束三项公共数据结构;特征类别由字段组合判别。
STRUCTURED JSON EXAMPLE
样例数据
以下为完整的单步建模序列:顶层数组中的对象定义矩形草图,通过显式约束固定其连接、方向和尺寸,然后沿草图法线创建实体。
[
{
"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"
}
]所有坐标、尺寸和特征参数必须为有限数值;长度单位为毫米,角度单位为度。尺寸约束也可使用带明确单位的字符串,例如 "20 mm"。
COMMON TYPES & COORDINATES
公共结构与坐标系
所有依赖草图的建模步骤都必须包含 coordinate_system。局部草图位于该坐标系的 XY 平面;Axis3 在 JSON 中写成轴上一点与非零方向向量组成的数组。
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(非零)Euler Angles 为内禀 XYZ 欧拉角 [x, y, z],单位为度;Translation Vector 为局部原点在零件坐标系中的位置,单位为毫米。
COMMON DATA STRUCTURES
草图图元与引用约束
sketch 是图元名称到图元参数的非空扁平对象,不显式序列化面、环或轮廓成员关系。执行端根据图元连接关系恢复闭合轮廓;实体特征使用的轮廓必须闭合。constraints 仅可引用当前步骤的草图图元,无显式约束时写 {}。坐标系信息请参阅上方“公共结构与坐标系”。
FEATURE OPERATIONS
五类基础特征操作
基础特征步骤将公共数据结构转化为三维实体,或对当前 B-Rep 边执行局部编辑。草图驱动步骤使用 NewBody、Join、Cut 或 Intersect;圆角与倒角的 operation 分别固定为 Fillet、Chamfer。
VALIDITY REQUIREMENTS
有效性要求
建模序列除满足各字段的类型与单位要求外,还必须满足以下可执行性边界。
- 数组按出现顺序执行;每个元素只表示一个建模步骤。
- 草图图元名称在当前
sketch中必须唯一,约束引用不得跨步骤。 - 用于拉伸、旋转扫掠或螺旋扫掠的
sketch必须非空,且能恢复为有效闭合轮廓。 axis的方向向量必须非零;pitch、turns、圆角半径和倒角距离必须满足各特征的正值要求。near_points的每个元素必须是有限三维点,并能在执行时唯一定位预期边界。- 装配字段、后端命令、兼容别名、诊断追踪、特征标签、评测指标、来源信息及 STEP、网格、渲染等派生物不写入建模序列,应单独保存。