一、功能介绍
兄弟互引是编辑器建模的一项新功能,它允许同一个父部件下的多个子部件(兄弟部件)之间相互引用彼此的参数。
在以往,部件之间的依赖关系只能是单向的。例如,部件A可以引用部件B的参数,但部件B就不能再引用部件A的参数,否则会被系统检测为"变量循环依赖"错误。
现在,通过兄弟互引功能,兄弟部件之间可以相互引用,实现双向参数联动,让参数化模型的设计更加灵活。
典型应用场景
当您的模型中有多个子部件需要保持尺寸或属性一致时,兄弟互引功能特别有用。例如:
- 两个板件需要保持相同的宽度或深度
- 一个部件的尺寸需要根据另一个部件动态调整
- 多个部件之间需要实现参数联动
二、引用名概念说明
在使用兄弟互引功能前,需要先理解引用名的概念。每个子部件都有一个引用名,用于在公式中标识该部件。
引用名分为两种形式:
| 引用名形式 | 示例 | 可引用的范围 |
|---|---|---|
| 完整引用 | @A | 可引用该部件的所有属性,包括:尺寸属性、系统属性、部件属性、物理属性(位置、旋转)、前端使用属性等 |
| self引用 | @selfA | 仅可引用该部件的自定义变量部分,包括:尺寸属性(W、D、H)、系统属性、部件属性 |
重要说明:
- self引用指向的是子模型脚本中的自定义变量信息,适用于引用子部件内部定义的参数
- 完整引用可以访问更广泛的属性,包括不属于子模型脚本的位置变量等
引用范围示意图:

三、语法规则
兄弟互引功能使用以下语法格式:
@self{子部件引用名}.{变量名}
其中:
- self:固定关键字,表示引用兄弟部件
- {子部件引用名}:目标兄弟部件的引用名
- {变量名}:要引用的兄弟部件的变量的引用名,如 W(宽度)、D(深度)、H(高度)等
示例:
@selfB.W- 引用兄弟部件B的宽度@selfA.D- 引用兄弟部件A的深度@selfB.H- 引用兄弟部件B的高度
四、操作步骤
以下步骤演示如何使用兄弟互引功能
步骤1:添加两个子部件,分别设置引用名为A 和 B


步骤2:分别设置两个子部件的部分变量,引用兄弟部件
如上图,A.W=@selfB.W;B.D=@selfA.D
五、双向引用示例
兄弟互引功能的核心优势是支持双向引用。以下是一个典型的双向引用示例:
假设有两个部件A和B,可以实现:
- 部件A的宽度引用部件B的深度:
A.W = @selfB.D - 部件B的深度引用部件A的高度:
B.D = @selfA.H
这种双向依赖关系在以往是不被允许的,现在可以通过兄弟互引功能实现。
双向引用关系示意图:

六、注意事项
1. 语法要求
兄弟互引功能仅支持self形式的语法(如 @selfB.W),不支持完整引用形式(如 @B.W)。
2. 可引用的属性
使用self形式引用时,只能引用以下类型的属性:
- 尺寸属性:W(宽度)、D(深度)、H(高度)
- 系统属性:如离地高度等
- 部件属性:部件内部定义的自定义变量
3. 位置变量的处理
如果需要引用的是部件的位置变量(如位置X、Y、Z),由于位置变量不属于子模型脚本,建议采用以下方式:
- 将位置变量定义在父模型上作为父模型的变量或中间变量
- 两个兄弟部件都引用该父模型上的变量或中间变量,实现位置联动
位置变量联动方案示意图:

4. 循环依赖的合理性
虽然兄弟互引允许双向引用,但请确保引用关系在设计上是合理的。例如,A的宽度引用B的深度,B的深度引用A的高度,这种链式引用是可以接受的;但如果A的宽度引用B的宽度,同时B的宽度又引用A的宽度,则可能造成无意义的循环。
七、常见问题
Q1:为什么我输入 @B.W 报错?
A:兄弟互引功能目前只支持self形式的语法,请使用 @selfB.W 格式。
Q2:@A 和 @selfA 有什么区别?
A:@selfA 只能引用部件A的自定义变量部分(尺寸、系统属性、部件属性),而 @A 可以引用更广泛的属性(包括位置、旋转等)。兄弟互引功能目前只支持self形式。
Q3:如何引用兄弟部件的位置?
A:位置变量不属于子模型的自定义变量,不能通过 @selfA.位置X 引用。建议将位置定义在父模型的全局变量中,让两个兄弟部件都引用该全局变量。
Q4:双向引用会不会造成无限循环?
A:系统会智能处理双向引用的计算顺序,不会造成无限循环。但仍建议在设计时考虑引用关系的合理性,避免无意义的循环依赖。