一、功能介绍
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')