一、功能介绍
1.1.什么是组件适配传参
以前:模型上原生板件之间或者和柜体产生参数关联可以通过编辑器实现,但在设计场景中,通过组件拖入的非原生板件则无法和柜体或柜体板件产生参数关联。如下图:
简单来说,一个组件拖入柜体,需要和柜体以及柜体上的其他板件产生参数关联。
举例:
- 拖入的门板需要识别侧板厚度改变铰链型号;
- 拖入的层板需要识别背板厚度改变层板打孔规则;
- 拖入的灯带需要在顶板上开槽;
- 拖入层板判断左侧是否有板件改变层板上左侧的封边打孔值等
组件适配传参即是通过补足上图中红线的参数传递路线,解决上述例子。
1.2.工作原理
作为配置人员,需要一定程度理解原理,才能更好地配置传参规则。
组件传参需要配置传参规则(脚本),这个规则是绑定在组件适配规则上的。因此传参规则的触发和生效都是基于某一条适配规则而来。当拖入组件触发了组件适配规则,则会执行相应的传参规则。
二、开放对象
有功能权限的商家用户,需联系商家运营开通。
三、功能路径及操作步骤
目前传参规则是通过写脚本的方式完成,并绑定在适配规则上。
3.1. 入口:在新建和编辑组件适配规则时,可以添加传参规则,进入脚本编辑页面。
3.2. 脚本规范:
{
"condition"
:
//条件判断,满足某种条件执行此脚本
"paramUpdateList"
: [
{
"model"
:
"SOURCE_MODEL"
,
//定义需赋值参数的板件(规范见下文)
"paramName"
: W",
//定义板件上需赋值的参数
"value"
:
"100"
//赋值,支持条件表达式判断
}
]
}
注:脚本分为两大内容
- condition:规则执行的前置条件
- paramUpdateList:执行参数的赋值
3.3. 对象定义语法
因为规则的执行是基于内空适配的,因此可定义的对象包括适配组件本体、内空6个面的板件以及适配柜体共8个对象。具体定义规范如下:
/** 待适配模型(即组件) = 'SOURCE_MODEL'
/** 适配的模型(即柜体)= 'TARGET_MODEL'
/** 内空上方模型= 'UP_MODEL'
/** 内空下方模型= 'DOWN_MODEL'
/** 内空左侧模型 = 'LEFT_MODEL'
/** 内空右侧模型 = 'RIGHT_MODEL'
/** 内空前面模型 = 'FRONT_MODEL'
/** 内空后面模型 = 'BACK_MODEL'
3.4. 语法:
- @预置变量.参数名(大小写敏感)
- @预置变量 == @预置变量 / @预置变量 != @预置变量
示例:
- @SOURCE_MODEL.W >= 400
- @FRONT_MODEL != @SOURCE_MODEL
四、配置效果示例:
配置内容:
{
"condition"
:
"true"
,
//默认执行此规则
"paramUpdateList"
: [
{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"DBB"
,
//定位层板上的断背板参数DBB
"value"
:
"@BACK_MODEL == null?1:0"
//判断内空后方时候是否有板件,若没有背板则赋值断背板参数DBB结果值驱动为1
}
]
}
配置方式及效果的完整演示GIF:
五、脚本示例
示例1:门上铰链型号变量跟随装铰链侧的板件厚度变化
{
"condition"
:
"@SOURCE_MODEL.openDirection == 0"
,
//判断门板开门方向为左开时执行该规则
"paramUpdateList"
: [
{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"JLXH"
,
//定位门板上的铰链型号参数
"value"
:
"@LEFT_MODEL.W == 18?1:2"
//判断内空左侧板件的厚度给'JLXH'赋不同的值
}
]
}
备注:也可以不在condition里判断开门方向,统一在value的时候判断,合并多条规则。
示例2:层板判断后方是否有板件,改变自身是否断背板的参数
{
"condition"
:
"true"
,
//默认执行此规则
"paramUpdateList"
: [
{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"DBB"
,
//定位层板上的断背板参数
"value"
:
"@BACK_MODEL == null?1:0"
//判断内空后方时候有板件,若为空则赋值断背板参数为1
}
]
}
示例3:层板四边打孔参数识别是否和四周其他板件接触,若不接触则修改打孔参数
{
"condition"
:
"true"
,
//默认执行此规则
"paramUpdateList"
: [
{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"ZCDK"
,
//定位层板上左侧打孔的参数
"value"
:
"@LEFT_MODEL == null?0:1"
//判断左侧是否有板件,若无则修改打孔参数为不打-0
}
]
}
示例4:灯带拖上侧板,侧板是否开灯槽参数修改为是
{
"condition"
:
"true"
,
//默认执行此规则
"paramUpdateList"
: [
{
"model"
:
"LEFT_MODEL"
,
"paramName"
:
"DC"
,
//定位左侧板上的灯槽参数
"value"
:
"1"
//将参数改为1(是)
}
]
}
六、函数新增(滚动更新):
1.锁定方向
字段名为:lockDirection,可设值六个方向,具体为:LEFT、RIGHT、UP、DOWN、FRONT、BACK。
注:
(1)修改W只能锁LEFT、RIGHT,修改D只能锁FRONT、BACK,修改H只能锁UP、DOWN
(2)这里的方向是指参数化编辑器里建模的方向,不考虑模型被旋转的场景
{
"condition"
:
"true"
,
"paramUpdateList"
: [{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"D"
,
"value"
:
"120"
,
"lockDirection"
:
"FRONT"
},
{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"W"
,
"value"
:
"120"
,
"lockDirection"
:
"LEFT"
},
{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"H"
,
"value"
:
"35"
,
"lockDirection"
:
"UP"
}
]
}
2.获取商品信息字段语法:
#productInfo(TARGET_MODEL, 'name') 名称:name,型号:productNumber,产品编码:brandGoodCode
3.判断是否真实接触:
函数名为isAdjoin,目前只支持判断SOURECE_MODEL和周边板件是否相邻。有两个入参,第一个必须是SOURECE_MODEL,第二个为周边model
{
"condition"
:
"true"
,
"paramUpdateList"
: [
{
"model"
:
"SOURCE_MODEL"
,
"paramName"
:
"materialBrandGoodId"
,
"value"
:
" #isAdjoin(SOURECE_MODEL, LEFT_MODEL) ? 111111: 5217970"
}
]
}
4.判断组件参数是否被手动修改过
#isParamModified(TARGET_MODEL, 'CZ')
#isParamModified(SOURCE_MODEL, 'materialBrandGoodId')