← 返回规范概览HISTCAD JSON · V0.1

COMMON DATA

草图引用与约束

表达草图内的拓扑、方向、相等、尺寸和距离关系。约束引用仅在当前建模步骤的 sketch 内有效,不能跨步骤引用。

分类
公共数据结构
序号
03
标识
constraints

01 / 概要

草图引用与约束的作用与适用范围

表达草图内的拓扑、方向、相等、尺寸和距离关系。约束引用仅在当前建模步骤的 sketch 内有效,不能跨步骤引用。

没有显式约束时写空对象 {}。v0.1 支持 19 类约束。

Coincident 必须引用点,所有引用都必须能在当前 sketch 中解析。

02 / 基础结构

字段结构

{
Constraints
├─ Coincident?: ConstraintEntry[]
├─ Horizontal?: ConstraintEntry[]
├─ Vertical?: ConstraintEntry[]
├─ Parallel?: ConstraintEntry[]
├─ Perpendicular?: ConstraintEntry[]
├─ Concentric?: ConstraintEntry[]
├─ Tangent?: ConstraintEntry[]
├─ Normal?: ConstraintEntry[]
├─ Equal?: ConstraintEntry[]
├─ Fix?: ConstraintEntry[]
├─ Midpoint?: ConstraintEntry[]
├─ Mirror?: ConstraintEntry[]
├─ Length?: ConstraintEntry[]
├─ Distance?: ConstraintEntry[]
├─ Diameter?: ConstraintEntry[]
├─ Radius?: ConstraintEntry[]
├─ MajorRadius?: ConstraintEntry[]
├─ MinorRadius?: ConstraintEntry[]
└─ Angle?: ConstraintEntry[]
字段类型说明
entity_ref字符串

实体引用,例如 line_3、circle_1、arc_2。

point_ref字符串

实体上的点引用,例如 line_3.start、circle_1.center、arc_2.middle。

value有限数值或带单位字符串

尺寸值,例如 8.0 或 "8 mm"。

parameters对象

Distance 的参数对象,至少包含 length,可包含 direction。

03 / 约束参考

19 类约束的语义与格式

约束语义格式样例
Perpendicular

两条线垂直

[entity_ref, entity_ref]
["line_1", "line_4"]
Parallel

两条线平行

[entity_ref, entity_ref]
["line_1", "line_5"]
Horizontal

线水平或两点水平对齐

entity_ref / [point_ref, point_ref]
"line_4"
Vertical

线竖直或两点竖直对齐

entity_ref / [point_ref, point_ref]
"line_2"
Equal

同类图元尺寸相等

[entity_ref, entity_ref]
["circle_1", "circle_2"]
Tangent

两个图元相切

[entity_ref, entity_ref]
["arc_1", "line_1"]
Normal

线与曲线满足法线关系

[entity_ref, entity_ref]
["arc_1", "line_2"]
Coincident

点重合

[point_ref, point_ref]
["line_1.end", "line_2.start"]
Concentric

圆、圆弧或椭圆同心

[entity_ref, entity_ref]
["arc_1", "circle_3"]
Fix

固定实体或点

entity_ref / point_ref
"line_1"
Midpoint

点位于实体或两点的中点

[point_ref, entity_ref] / [point_ref, [point_ref, point_ref]]
["circle_1.center", "line_1"]
Mirror

两实体关于轴线镜像

[entity_ref, axis_line_ref, entity_ref]
["line_10", "line_8", "line_1"]
Angle

两条线之间的角度

[entity_ref, entity_ref, value]
["line_7", "line_8", 295.0]
Diameter

圆或圆弧直径

[entity_ref, value]
["circle_1", "78 mm"]
Radius

圆或圆弧半径

[entity_ref, value]
["arc_1", 6.35]
MajorRadius

椭圆长轴半径

[entity_ref, value]
["ellipse_1", "20 mm"]
MinorRadius

椭圆短轴半径

[entity_ref, value]
["ellipse_1", "10 mm"]
Length

线段长度

[entity_ref, value]
["line_4", "8 mm"]
Distance

两个引用之间的距离

[ref_a, ref_b, parameters]
["line_3.end", "line_2.end", {"direction":"VERTICAL","length":5.0}]

04 / 样例数据

完整结构化 JSON 样例

{
  "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]},
    "circle_1": {"center": [10.0, 10.0], "radius": 5.0}
  },
  "constraints": {
    "Coincident": [["line_1.end", "line_2.start"]],
    "Horizontal": ["line_1"],
    "Vertical": ["line_2"],
    "Length": [["line_1", 20.0]],
    "Radius": [["circle_1", 5.0]],
    "Distance": [[
      "line_2.end",
      "circle_1.center",
      {"direction": "VERTICAL", "length": 0.0}
    ]]
  }
}