一、功能介绍
getSelfAttr 和 getSelfCustomAttr 是参数化建模新增的两个内置函数,用于在公式中获取当前模型作为商品时的属性值。
在以往,模型公式中无法直接获取模型自身的商品属性(如产品编码、自定义编码等)。如果需要根据这些属性进行条件判断或计算,只能通过额外创建样式变量的变通方案来实现,增加了建模复杂度。
现在,通过这两个函数,您可以:
- 直接在公式中引用模型自身的商品属性
- 根据产品编码进行条件判断(如奇偶性判断)
- 获取自定义商品属性并设置默认值
- 简化建模流程,无需额外创建样式变量
典型应用场景
- 根据产品编码的奇偶性决定某些参数的取值
- 根据自定义编码进行条件分支判断
- 根据商品名称或型号进行差异化配置
- 获取商品的自定义属性(如工艺类型、材质等级等)
二、语法规则
1. getSelfAttr 函数
语法: #getSelfAttr("属性名")
支持的属性名:
| 属性名 | 说明 | 示例返回值 |
|---|---|---|
| productcode | 产品编码 | "PRD001" |
| customcode | 自定义编码 | "CUST123" |
| name | 商品名称 | "定制衣柜" |
| model | 型号 | "WD-2000" |
返回值:
- 属性存在时:返回属性值(String 类型)
- 属性不存在或模型未关联商品时:返回 null
2. getSelfCustomAttr 函数
语法: #getSelfCustomAttr("属性key", 默认值)
参数说明:
| 参数 | 说明 |
|---|---|
| 属性key | 自定义属性的键名 |
| 默认值 | 当属性不存在时返回的默认值 |
返回值:
- 属性存在时:返回解析后的属性值
- 属性不存在时:返回指定的默认值
三、操作步骤
以下步骤演示如何使用 getSelfAttr 函数根据产品编码进行条件判断:
步骤1:打开模型的参数编辑界面
在编辑器中选中需要编辑的模型,打开参数面板。
步骤2:在公式中使用 getSelfAttr 函数
假设需要根据产品编码的奇偶性决定某个尺寸参数的值,可以在公式中写入:
#float2Int(#strToNum(#getSelfAttr("productcode"))) % 2 == 0 ? 100 : 200
上述公式的含义是:先用 #strToNum 将产品编码字符串转为浮点数,再用 #float2Int 转为整数后取模,如果是偶数返回100,奇数返回200。
步骤3:验证公式效果
保存模型后,可以通过调整商品的产品编码来验证公式是否按预期工作。
四、使用示例
示例1:根据产品编码判断奇偶
#float2Int(#strToNum(#getSelfAttr("productcode"))) % 2
获取产品编码,先用 #strToNum 转为浮点数,再用 #float2Int 转为整数后取模,返回0表示偶数,1表示奇数。
示例2:条件分支判断
#getSelfAttr("productcode") == "PRD001" ? 100 : 200
如果产品编码为"PRD001"则返回100,否则返回200。
示例3:获取自定义属性(带默认值)
#getSelfCustomAttr("finishType", "default")
获取商品的工艺属性,如果不存在则返回"default"。
示例4:组合使用多个属性
#getSelfAttr("name") + "-" + #getSelfAttr("model")
将商品名称和型号拼接为一个字符串。
五、注意事项
1. 函数有效范围
函数仅在被商品关联的模型中有效。若模型尚未保存为商品,或未与商品关联,函数将返回 null 或默认值。
2. 返回值类型
getSelfAttr 返回的是字符串类型。如果需要进行数值计算,请先使用 #strToNum 将字符串转为浮点数,再使用 #float2Int 将浮点数转为整数进行类型转换。
3. 系统保留字
getSelfAttr 和 getSelfCustomAttr 为系统保留的函数名,用户不可定义同名变量,否则会导致功能异常。
4. 依赖分析
函数调用不参与变量依赖分析,不会产生循环依赖问题。您可以放心使用,不必担心依赖链路问题。
六、常见问题
Q1:为什么我的公式返回 null?
A:可能的原因有:
- 模型尚未保存为商品,或未与商品关联
- 请求的属性名不存在(请检查属性名拼写是否正确)
- 商品数据中该属性确实为空
Q2:getSelfAttr 和 getSelfCustomAttr 有什么区别?
A:两者的区别如下:
- getSelfAttr:用于获取商品的基础属性(产品编码、自定义编码、商品名称、型号),返回字符串或null
- getSelfCustomAttr:用于获取商品的自定义属性,支持设置默认值,返回值类型根据属性类型确定
Q3:如何获取数字类型的产品编码进行计算?
A:getSelfAttr 返回的是字符串类型,需要进行数值计算时,请使用类型转换函数:
#float2Int(#strToNum(#getSelfAttr("productcode")))
其中 #strToNum 将字符串转为浮点数,#float2Int 将浮点数转为整数。
Q4:模型未关联商品时,如何避免公式计算错误?
A:可以使用条件判断处理 null 的情况:
#getSelfAttr("productcode") == null ? 0 : #float2Int(#strToNum(#getSelfAttr("productcode")))
或者使用 getSelfCustomAttr 设置默认值来避免 null 问题。
Q5:可以在哪些地方使用这两个函数?
A:可以在建模编辑器,变量系,变量模板等中进行使用,即在最终会落地到建模上。对于参数化轮廓编辑器、逻辑对象编辑器这些不是模型的编辑器,就不能使用了。