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"

顶层直接是步骤数组,不是包含 metadataoperationsmodeling_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 边执行局部编辑。草图驱动步骤使用 NewBodyJoinCutIntersect;圆角与倒角的 operation 分别固定为 FilletChamfer

VALIDITY REQUIREMENTS

有效性要求

建模序列除满足各字段的类型与单位要求外,还必须满足以下可执行性边界。

  • 数组按出现顺序执行;每个元素只表示一个建模步骤。
  • 草图图元名称在当前 sketch 中必须唯一,约束引用不得跨步骤。
  • 用于拉伸、旋转扫掠或螺旋扫掠的 sketch 必须非空,且能恢复为有效闭合轮廓。
  • axis 的方向向量必须非零;pitchturns、圆角半径和倒角距离必须满足各特征的正值要求。
  • near_points 的每个元素必须是有限三维点,并能在执行时唯一定位预期边界。
  • 装配字段、后端命令、兼容别名、诊断追踪、特征标签、评测指标、来源信息及 STEP、网格、渲染等派生物不写入建模序列,应单独保存。