在 SketchUp 菜单栏点击:
Plugins → 悦木云-参数组件编辑器 → 可视化编辑器
界面分为三个区域:
| 区域 | 位置 | 功能 |
|---|---|---|
| 左侧文件树 | 左栏 | 选择路径、打开目录、搜索、浏览配置文件 |
| 3D 预览区 | 中栏 | 实时预览模型,修改参数即时刷新 |
| 右侧参数编辑区 | 右栏 | 编辑组件参数、板件公式、查看板件属性 |
点击左侧栏的 「打开目录」,在资源管理器中找一个接近需求的 JSON 配置,复制一份并改名。
推荐模板:
| 场景 | 模板路径 |
|---|---|
| 标准柜(有门有层板) | Resources/标准橱柜/标准对开门地柜.json |
| 开放柜(无门) | Resources/衣柜/开放柜.json |
| 异形板 / 挤压体 | Resources/其他/挤压体示例.json |
| 纯盒子(学习用) | Resources/其他/简单盒子.json |
在编辑器中打开你的配置,左侧参数面板包含三类参数:
主参数 rule_infos — 宽深高、板厚等,用户必调。
| 参数名 | 默认值 | 说明 |
|---|---|---|
k | 600 | 宽度(X 方向) |
s | 500 | 深度(Y 方向) |
g | 800 | 高度(Z 方向) |
bh | 18 | 板厚 |
自定义数值 custom_inputs — 可选参数,如层板数量、缩进量。
下拉选项 custom_drop_downs — 如"柜体结构"选侧包顶底/底托侧、"门板开向"选左开/右开。
参数名在公式中可以直接当变量用,例如写 k-2*bh 表示宽度减两倍板厚。
板件的 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。
{
"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"
}
}
{
"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"
}
}
{
"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"
}
}
{
"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 结果为 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": [
{ "位置": "1", "半径": "yj", "类型": "圆角" },
{ "类型": "阵列", "count": "layer_sl", "direction": "z",
"start_offset": "bh", "end_offset": "bh", "shelf_thickness": "bh" }
]
板件大面在 YZ 平面,四个角从 左下角 为 0 起,逆时针 编号:
| 位置 | 角点 | Y | Z |
|---|---|---|---|
| 0 | 左下 | 最小 | 最小 |
| 1 | 右下 | 最小 | 最大 |
| 2 | 右上 | 最大 | 最大 |
| 3 | 左上 | 最大 | 最小 |
侧板(竖板,y_rot=0) — 看板件正面:
层板(横板,y_rot=90) — 看板件顶面:
在板件四个角的任意角上做圆弧倒角。
| 参数 | 含义 | 示例 |
|---|---|---|
| 类型 | 固定 "圆角" | "圆角" |
| 位置 | 角编号 0/1/2/3 | "0", "1" |
| 半径 | 圆角半径(支持表达式) | "100", "yj" |
"type": [
{ "位置": "1", "半径": "yj", "类型": "圆角" }
]
多个角都要圆角时,在 type 里写多项即可。半径写参数名可在面板实时调节。
在板件边角做直线切角。
| 参数 | 含义 | 示例 |
|---|---|---|
| 类型 | 固定 "斜切角" | "斜切角" |
| 位置 | 角编号 0/1/2/3 | "0", "1" |
| 红边长 | 切角沿 Y 方向的边长 | "50", "hbc" |
| 绿边长 | 切角沿 Z 方向的边长 | "30", "lbc" |
"type": [
{ "位置": "2", "类型": "斜切角", "红边长": "70", "绿边长": "70" }
]
红边长=绿边长时切出等边三角形;不相等时切出直角三角块。
在板件边角做矩形缺角。
| 参数 | 含义 | 示例 |
|---|---|---|
| 类型 | 固定 "方缺角" | "方缺角" |
| 位置 | 角编号 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 时缺角紧贴板边;写正数则缺角向板内偏移。
用封闭轮廓沿厚度方向拉伸成体。适合 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"
}
]
轮廓必须封闭:首尾会自动连接。坐标支持表达式。
| 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"
}
]
| 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"
}
]
| center | 圆心 [x, y, z] |
| dim | 孔径(表达式) |
| depth | 可选,不写则用板厚 |
"extrude_machines": [
{
"name": "中心钻孔",
"machining": "drill_hole",
"center": ["k/2", "s/2", "0"],
"dim": "40",
"depth": "g"
}
]
| 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"
}
]
| 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"
}
]
| machining | 固定 "turn_profile" |
| path | 扫掠路径,至少 2 个 [x,y,z] 点 |
| profile | MTY 截面字符串(英寸)或参数名 |
| 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"]]
}
]
阵列也可以作为 type 的一项,与圆角、斜切角、挤压体并列,不冲突:
"type": [
{ "位置": "1", "半径": "yj", "类型": "圆角" },
{
"类型": "阵列",
"count": "layer_sl",
"direction": "z",
"start_offset": "bh",
"end_offset": "bh",
"shelf_thickness": "bh"
}
]
| 类型 | 用途 | 核心参数 |
|---|---|---|
| 圆角 | 边角做圆弧 | 位置(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 → 悦木云-参数组件编辑器 → 参数组件生成器
选择一个配置文件即可快速生成到场景。
Resources/其他/简单盒子.json,逐个改动板件参数,在 3D 预览里观察变化Resources/标准橱柜/标准对开门地柜.json,尝试去掉门板、加底板、改层板数量Resources/其他/挤压体示例.json,修改轮廓坐标docs/ 目录下的详细文档——类型说明、阵列说明、挤压体功能总结、JSON 写法说明basic 公式后,需要在右侧参数面板修改任意一个数值触发刷新。x_pos/y_pos/z_pos 起始位置,以及旋转是否正确。板厚永远是 x_len = bh,旋转靠 y_rot。count 参数是否 > 0,以及 hidden 是否误设为 1。if(jg == '侧包顶底', bh, 0),注意用单引号括中文。