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}
]]
}
}