getSelfAttr/getSelfCustomAttr 函数使用指南

本文阅读时长:13分钟更新于2026-05-13

一、功能介绍

getSelfAttrgetSelfCustomAttr 是参数化建模新增的两个内置函数,用于在公式中获取当前模型作为商品时的属性值。

在以往,模型公式中无法直接获取模型自身的商品属性(如产品编码、自定义编码等)。如果需要根据这些属性进行条件判断或计算,只能通过额外创建样式变量的变通方案来实现,增加了建模复杂度。

现在,通过这两个函数,您可以:

  • 直接在公式中引用模型自身的商品属性
  • 根据产品编码进行条件判断(如奇偶性判断)
  • 获取自定义商品属性并设置默认值
  • 简化建模流程,无需额外创建样式变量

典型应用场景

  • 根据产品编码的奇偶性决定某些参数的取值
  • 根据自定义编码进行条件分支判断
  • 根据商品名称或型号进行差异化配置
  • 获取商品的自定义属性(如工艺类型、材质等级等)

二、语法规则

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:可以在建模编辑器,变量系,变量模板等中进行使用,即在最终会落地到建模上。对于参数化轮廓编辑器、逻辑对象编辑器这些不是模型的编辑器,就不能使用了。

可以随时点赞啦