diff --git a/examples/app-global.js b/examples/app-global.js
index dabd128..6c88390 100644
--- a/examples/app-global.js
+++ b/examples/app-global.js
@@ -93,8 +93,7 @@ const getAutoLoadModelList = async () => {
//获取放置区域
const getPlacementZone = async (sku) => {
- //pergolaSku 是需要在加载棚子的时取其引用,传进来的sku则是配件的sku,根据配件的sku来判断放置区域
- const kernel = getKernel();
+ const kernel = getKernel();
let division_include = []
// 同时包含10和13
const only10_13 = /(?=.*10)(?=.*13)/.test(pergolaSku)
@@ -104,8 +103,6 @@ const getPlacementZone = async (sku) => {
const only10_12 = /(?=.*10)(?=.*12)/.test(pergolaSku)
// 同时包含10和20
const only10_20 = /(?=.*10)(?=.*20)/.test(pergolaSku)
- // 只包含13 无13 无12 无20
- const only13 = /(?=.*13)(?!.*10)(?!.*12)(?!.*20)/.test(pergolaSku)
// 1. 只要字符串里包含 10,就返回 true
const has10 = /10/.test(sku);
@@ -147,21 +144,15 @@ const getPlacementZone = async (sku) => {
}
}
- //棚子同时包10和20的并且含配件是13
+ //棚子同时包10和20的并且含配件是13
if (only10_20 && has13) {
if (pergolaSku === "SPF111S1020PILLAR4PCS") {
division_include.push('前', '后')
}
}
- //棚子只包13的并且含配件是13
- if (pergolaSku === "SPF111SEM13" && has13) {
- division_include.push('前', '后')
- }
- if (pergolaSku === "SPF111SEM13" && has10) {
- division_include.push('左', '右')
- }
+ console.log('[放置区域] 本次配件的方向:', division_include);
const response = await fetch(getApiUrl(`/api/product-configs/by-sku/${sku}`));
const result = await response.json();
@@ -170,20 +161,27 @@ const getPlacementZone = async (sku) => {
const { enable_placement_zone, wall_divisions } = result.data;
// const {position_x, position_y, position_z} = data;
if (enable_placement_zone && wall_divisions != undefined) {
- console.log(wall_divisions);
+ console.log('[放置区域] 当前配件的墙面配置:', wall_divisions);
+
const filteredDivisions = wall_divisions.filter(item => division_include.includes(item.name))
- console.log(filteredDivisions);
- // 只清除旧的放置区域网格,不清除模型
- kernel.dropZone.clearZones();
+ console.log('[放置区域] 当前显示的墙面:', filteredDivisions);
+
+ // 不需要手动 clearZones,updateDivisions 会自动处理增量更新
const divisions = filteredDivisions.map(wall => ({
name: wall.name,
divisions: wall.divisions
}))
- kernel.dropZone.updateDivisions(divisions);
- // 显示放置区域
- kernel.dropZone.show();
+ const zones = kernel.dropZone.updateDivisions(divisions);
+
+ // 隐藏所有,然后只显示当前需要的墙面
+ kernel.dropZone.hide();
+ // 从生成的 zones 中提取完整的墙面名称
+ const wallNamesToShow = new Set(zones.map(zone => zone.wallName));
+ wallNamesToShow.forEach(wallName => {
+ kernel.dropZone.showWall(wallName);
+ });
}
}
}
diff --git a/examples/demo-global.html b/examples/demo-global.html
index 39bf543..0318452 100644
--- a/examples/demo-global.html
+++ b/examples/demo-global.html
@@ -585,7 +585,7 @@
-
+