悦木云参数组件编辑器 — 使用说明

一、打开编辑器

在 SketchUp 菜单栏点击:

Plugins → 悦木云-参数组件编辑器 → 可视化编辑器

界面分为三个区域:

区域位置功能
左侧文件树左栏选择路径、打开目录、搜索、浏览配置文件
3D 预览区中栏实时预览模型,修改参数即时刷新
右侧参数编辑区右栏编辑组件参数、板件公式、查看板件属性

二、创建第一个组件

2.1 从模板复制

点击左侧栏的 「打开目录」,在资源管理器中找一个接近需求的 JSON 配置,复制一份并改名。

推荐模板:

场景模板路径
标准柜(有门有层板)Resources/标准橱柜/标准对开门地柜.json
开放柜(无门)Resources/衣柜/开放柜.json
异形板 / 挤压体Resources/其他/挤压体示例.json
纯盒子(学习用)Resources/其他/简单盒子.json

2.2 编辑参数

在编辑器中打开你的配置,左侧参数面板包含三类参数:

主参数 rule_infos — 宽深高、板厚等,用户必调。

参数名默认值说明
k600宽度(X 方向)
s500深度(Y 方向)
g800高度(Z 方向)
bh18板厚

自定义数值 custom_inputs — 可选参数,如层板数量、缩进量。

下拉选项 custom_drop_downs — 如"柜体结构"选侧包顶底/底托侧、"门板开向"选左开/右开。

参数名在公式中可以直接当变量用,例如写 k-2*bh 表示宽度减两倍板厚。

三、板件编辑要点

3.1 坐标系约定

Z(高) ↑ | +———→ X(宽) / Y(深)

板件的 basic 包含 9 个字段:

字段含义示例
x_pos, y_pos, z_pos板件基准点位置"0", "bh", "k-bh"
x_len, y_len, z_len板件长宽高"bh", "s-2*mbh", "g"
x_rot, y_rot, z_rot旋转角度"0", "90"
核心规则:板厚始终是 x_len = bh。竖板 y_rot=0,横板 y_rot=90

3.2 竖板示例(左侧板)

{
  "name": "左侧板",
  "basic": {
    "x_pos": "0",             // 贴左边缘
    "y_pos": "mbh+2",         // 留门板位置
    "z_pos": "0",             // 从底面起
    "x_len": "bh",            // 板厚
    "y_len": "s-2-mbh",      // 深度减门板
    "z_len": "g",             // 等于柜体高度
    "x_rot": "0", "y_rot": "0", "z_rot": "0"
  }
}

3.3 横板示例(底板)

{
  "name": "底板",
  "basic": {
    "x_pos": "bh",            // 缩进一个板厚
    "y_pos": "bh",            // 缩进一个板厚
    "z_pos": "0",             // 贴底面
    "x_len": "bh",            // 板厚
    "y_len": "s-2*bh",       // 深度减两个板厚
    "z_len": "k-2*bh",       // 宽度减两个板厚
    "x_rot": "0", "y_rot": "90", "z_rot": "0"
  }
}

3.4 门板

{
  "name": "左开门板",
  "mat_name": "material/menban.skm",    // 材质文件
  "parameters": { "layer": "门板" },
  "basic": {
    "x_pos": "1.5",  "y_pos": "0",  "z_pos": "0",
    "x_len": "k-3",  "y_len": "mbh", "z_len": "g-3",
    "x_rot": "0", "y_rot": "0", "z_rot": "0"
  }
}

3.5 引用外部模型(五金件)

{
  "name": "吊码",
  "model_path": "model/dm.skp",
  "basic": {
    "x_pos": "bh",  "y_pos": "s-80",  "z_pos": "g-bh-50",
    "x_len": null,  "y_len": null,    "z_len": null
  }
}
model_path 相对于 Resources/ 目录。不写 x_len/y_len/z_len 时使用模型原始尺寸。

四、常用公式写法

基本运算

k-2*bh→ 宽度减两倍板厚
(k-2*bh)/2→ 内宽的一半
round(k/3, 0)→ k 除以 3,四舍五入取整
min(bh, 25)→ 取 bh 和 25 中较小的
max(bh, 5)→ 取 bh 和 5 中较大的

条件判断

if(jg == '侧包顶底', bh, 0)→ 结构为侧包顶底时 = bh,否则 = 0
if(layer_sl == 0, 1, 0)→ 层板数为 0 时 = 1(用于 hidden 隐藏)
if(mbkx == '左开', '左开门板', '右开门板')→ 动态板件名称

隐藏板件(hidden)

hidden 结果为 1 时,该板件不显示:

"hidden": "if(layer_sl == 0, 1, 0)"→ 层板数 0 时隐藏
"hidden": "if(bbh == 0, 1, 0)"→ 背板厚 0 时隐藏

阵列中引用父级参数

"Parent!bh + (g - 2*bh) / (layer_sl + 1)"

五、板件加工类型(type)

板件的 type 是一个数组([]),一个板可以同时配多种加工,例如:

"type": [
  { "位置": "1", "半径": "yj", "类型": "圆角" },
  { "类型": "阵列", "count": "layer_sl", "direction": "z",
    "start_offset": "bh", "end_offset": "bh", "shelf_thickness": "bh" }
]

5.0 位置编号约定

板件大面在 YZ 平面,四个角从 左下角 为 0 起,逆时针 编号:

位置角点YZ
0左下最小最小
1右下最小最大
2右上最大最大
3左上最大最小

侧板(竖板,y_rot=0) — 看板件正面:

Y(前→后,门侧→墙侧) ←————————————— Z 3 — — — — — — 2 ↑ | 侧板 | 高 | | 度 0 — — — — — — 1 ↓ ——————————————→ 0=前下角 1=前上角 2=后上角 3=后下角

层板(横板,y_rot=90) — 看板件顶面:

Y(前→后,深度方向) ←————————————— Z 3 — — — — — — 2 ↑ | 层板 | 宽 | | 度 0 — — — — — — 1 ↓ ——————————————→ 0=前左角 1=前右角 2=后右角 3=后左角

5.1 圆角

在板件四个角的任意角上做圆弧倒角

参数含义示例
类型固定 "圆角""圆角"
位置角编号 0/1/2/3"0", "1"
半径圆角半径(支持表达式)"100", "yj"
"type": [
  { "位置": "1", "半径": "yj", "类型": "圆角" }
]
多个角都要圆角时,在 type 里写多项即可。半径写参数名可在面板实时调节。

5.2 斜切角

在板件边角做直线切角

参数含义示例
类型固定 "斜切角""斜切角"
位置角编号 0/1/2/3"0", "1"
红边长切角沿 Y 方向的边长"50", "hbc"
绿边长切角沿 Z 方向的边长"30", "lbc"
"type": [
  { "位置": "2", "类型": "斜切角", "红边长": "70", "绿边长": "70" }
]
红边长=绿边长时切出等边三角形;不相等时切出直角三角块。

5.3 方缺角

在板件边角做矩形缺角

参数含义示例
类型固定 "方缺角""方缺角"
位置角编号 0/1/2/3"0"
红边长缺角沿 Y 方向的长度"70", "fqjk"
绿边长缺角沿 Z 方向的长度"35", "fqjs"
距红边沿红边方向偏移(通常 0)"0"
距绿边沿绿边方向偏移"0", "(k-2*bh)/2-35"
"type": [
  {
    "位置": "0",
    "类型": "方缺角",
    "红边长": "fqjk",
    "绿边长": "fqjs",
    "距红边": "0",
    "距绿边": "0"
  }
]
距红边/距绿边为 0 时缺角紧贴板边;写正数则缺角向板内偏移。

5.4 挤压体(异形板)

封闭轮廓沿厚度方向拉伸成体。适合 L 形板、烟机镂空、异形墙板等。

参数含义示例
类型固定 "挤压体""挤压体"
extrude_contour轮廓点数组 [[x,y,z], ...],至少 3 点见下
extrude_depth挤压厚度(表达式)"bh"
extrude_machines可选,在体上做孔/槽/钻孔等加工见下
"type": [
  {
    "类型": "挤压体",
    "extrude_contour": [
      ["0", "0", "0"],
      ["0", "s-2-mbh", "0"],
      ["0", "s-2-mbh", "k-2*bh"],
      ["0", "0", "k-2*bh"]
    ],
    "extrude_depth": "bh"
  }
]
轮廓必须封闭:首尾会自动连接。坐标支持表达式。

挤压体五种加工

5.4.1 通孔(hole)— 格式一:圆心+直径

center圆心 [x, y, z]
dim孔径(表达式)
depth可选,不写则用板厚(通孔)
"extrude_machines": [
  {
    "name": "烟机孔",
    "machining": "hole",
    "center": ["bh/2", "(s-2-mbh)/2", "(k-2*bh)/2"],
    "dim": "yjcc",
    "depth": "bh"
  }
]

5.4.1 通孔(hole)— 格式二:起终点

start起点 [x, y, z]
end终点 [x, y, z]
dim孔径
vector方向向量(可选)
"extrude_machines": [
  {
    "machining": "hole",
    "start": ["k*3/4", "s/2", "0"],
    "end": ["k*3/4", "s/2", "g"],
    "vector": [0, 0, 1],
    "dim": "25"
  }
]

5.4.2 钻孔(drill_hole)

center圆心 [x, y, z]
dim孔径(表达式)
depth可选,不写则用板厚
"extrude_machines": [
  {
    "name": "中心钻孔",
    "machining": "drill_hole",
    "center": ["k/2", "s/2", "0"],
    "dim": "40",
    "depth": "g"
  }
]

5.4.3 槽(slotting)

start槽一端 [x, y, z]
end槽另一端 [x, y, z]
width槽宽(默认 5mm)
depth槽深(默认 5mm)
"extrude_machines": [
  {
    "name": "灯带槽",
    "machining": "slotting",
    "start": ["k/4", "s/2", "0"],
    "end": ["k*3/4", "s/2", "0"],
    "width": "10",
    "depth": "10"
  }
]

5.4.4 多边形孔洞(holes)

holes孔洞列表,每个孔为 [[x,y,z], ...] 顶点数组
depth可选,不写则用板厚
"extrude_machines": [
  {
    "name": "矩形镂空",
    "machining": "holes",
    "holes": [
      [
        ["k*0.2", "s*0.2", "0"],
        ["k*0.4", "s*0.2", "0"],
        ["k*0.4", "s*0.6", "0"],
        ["k*0.2", "s*0.6", "0"]
      ]
    ],
    "depth": "g"
  }
]

5.4.5 放样车削减切(turn_profile)

machining固定 "turn_profile"
path扫掠路径,至少 2 个 [x,y,z]
profileMTY 截面字符串(英寸)或参数名
profile_2d截面点列 [[u,v], ...](毫米)
enabled可选,公式为 0 时跳过
"extrude_machines": [
  {
    "name": "刀型槽",
    "machining": "turn_profile",
    "enabled": "if(cd_ms == 0, 1, 0)",
    "profile": "pro1",
    "path": [["k-dao_offset", "0", "0"], ["k-dao_offset", "s", "0"]]
  }
]

5.5 阵列写在 type 里

阵列也可以作为 type 的一项,与圆角、斜切角、挤压体并列,不冲突

"type": [
  { "位置": "1", "半径": "yj", "类型": "圆角" },
  {
    "类型": "阵列",
    "count": "layer_sl",
    "direction": "z",
    "start_offset": "bh",
    "end_offset": "bh",
    "shelf_thickness": "bh"
  }
]

5.6 速查表

类型用途核心参数
圆角边角做圆弧位置(0-3)、半径
斜切角边角做斜切三角位置(0-3)、红边长、绿边长
方缺角边角做矩形缺角位置(0-3)、红边长、绿边长、距红边、距绿边
挤压体轮廓拉伸成体extrude_contour、extrude_depth、extrude_machines
阵列板件复制均分count、direction、start_offset、end_offset

六、阵列

等净空阵列(推荐)

层板自动均分,无需手算间距:

"array": {
  "count": "layer_sl",
  "direction": "z",
  "start_offset": "bh",
  "end_offset": "bh",
  "shelf_thickness": "bh"
}
参数含义
count阵列数量
direction方向:"x", "y", "z"
start_offset起始端距离(如距底板 bh)
end_offset结束端距离(如距顶板 bh)
shelf_thickness阵列板件在该方向的厚度

没有顶/底板时

"end_offset": "0"→ 顶板不存在
"start_offset": "0"→ 底板不存在

七、材质

板件的 mat_name 指定材质文件:

"mat_name": "material/guiti.skm"→ 插件内置材质
"mat_name": "YunMaterial/木纹/红橡.skm"→ 悦木云资产库材质

不写 mat_name 时使用默认柜体板材质。

八、保存与生成

按钮功能
保存配置文件保存 JSON 到文件
保存并生成到场景保存 + 直接在 SketchUp 中生成组件
切换到文本视图切换到原始 JSON 编辑模式

也可以在菜单中:

Plugins → 悦木云-参数组件编辑器 → 参数组件生成器

选择一个配置文件即可快速生成到场景。

九、学习路径

  1. 入门:打开 Resources/其他/简单盒子.json,逐个改动板件参数,在 3D 预览里观察变化
  2. 实战:复制 Resources/标准橱柜/标准对开门地柜.json,尝试去掉门板、加底板、改层板数量
  3. 进阶:打开 Resources/其他/挤压体示例.json,修改轮廓坐标
  4. 精通:参考 docs/ 目录下的详细文档——类型说明、阵列说明、挤压体功能总结、JSON 写法说明

十、常见问题

Q: 改了参数 3D 预览没变?
A: 修改板件的 basic 公式后,需要在右侧参数面板修改任意一个数值触发刷新。
Q: 板件跑到柜子外面了?
A: 检查 x_pos/y_pos/z_pos 起始位置,以及旋转是否正确。板厚永远是 x_len = bh,旋转靠 y_rot。
Q: 阵列的层板不显示?
A: 检查 count 参数是否 > 0,以及 hidden 是否误设为 1。
Q: 公式里能用中文字符串比较吗?
A: 可以。如 if(jg == '侧包顶底', bh, 0),注意用单引号括中文。