1
This commit is contained in:
BIN
ScreenShot_2026-05-14_211724_525.png
Normal file
BIN
ScreenShot_2026-05-14_211724_525.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 153 KiB |
BIN
ScreenShot_2026-05-14_214732_699.png
Normal file
BIN
ScreenShot_2026-05-14_214732_699.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 141 KiB |
BIN
ScreenShot_2026-05-14_225837_961.png
Normal file
BIN
ScreenShot_2026-05-14_225837_961.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 180 KiB |
BIN
ScreenShot_2026-05-14_231715_439.png
Normal file
BIN
ScreenShot_2026-05-14_231715_439.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 65 KiB |
BIN
ScreenShot_2026-05-14_232613_280.png
Normal file
BIN
ScreenShot_2026-05-14_232613_280.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 84 KiB |
BIN
ScreenShot_2026-05-14_233850_275.png
Normal file
BIN
ScreenShot_2026-05-14_233850_275.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 131 KiB |
@ -859,8 +859,12 @@
|
|||||||
// 只清除旧的放置区域网格,不清除模型
|
// 只清除旧的放置区域网格,不清除模型
|
||||||
kernel.dropZone.clearZones();
|
kernel.dropZone.clearZones();
|
||||||
|
|
||||||
// 使用新的 API:只传入分割数量
|
// 如果传入了 divisions,使用统一分割数;否则使用每个墙面自己的分割数
|
||||||
kernel.dropZone.generateDropZones(divisions);
|
if (divisions !== undefined) {
|
||||||
|
kernel.dropZone.generateDropZones(divisions);
|
||||||
|
} else {
|
||||||
|
kernel.dropZone.generateDropZones();
|
||||||
|
}
|
||||||
|
|
||||||
// 显示放置区域
|
// 显示放置区域
|
||||||
kernel.dropZone.show();
|
kernel.dropZone.show();
|
||||||
|
|||||||
2
index.js
2
index.js
@ -33,7 +33,7 @@ const models = data.data // 这就是模型列表
|
|||||||
|
|
||||||
models.forEach(model => {
|
models.forEach(model => {
|
||||||
console.log(model);
|
console.log(model);
|
||||||
kernel.dropZone.setData(model.placement_zone);
|
// kernel.dropZone.setData(model.placement_zone);
|
||||||
kernel.model.add({
|
kernel.model.add({
|
||||||
modelId: model.id,
|
modelId: model.id,
|
||||||
modelUrl: model.file_url,
|
modelUrl: model.file_url,
|
||||||
|
|||||||
@ -54,10 +54,10 @@ export class AppDropZone {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 生成放置区域
|
* 生成放置区域
|
||||||
* @param divisions 分割数量(必传)
|
* @param divisions 可选的统一分割数量,如果不传则使用每个墙面自己的 divisions
|
||||||
* @param config 配置参数(可选,如果不传则使用 setData 设置的数据)
|
* @param config 配置参数(可选,如果不传则使用 setData 设置的数据)
|
||||||
*/
|
*/
|
||||||
generateDropZones(divisions: number, config?: DropZoneConfig): PlacementZoneInfo[] {
|
generateDropZones(divisions?: number, config?: DropZoneConfig): PlacementZoneInfo[] {
|
||||||
const finalConfig = config || this.dropZoneConfig;
|
const finalConfig = config || this.dropZoneConfig;
|
||||||
|
|
||||||
if (!finalConfig) {
|
if (!finalConfig) {
|
||||||
@ -65,12 +65,13 @@ export class AppDropZone {
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 为所有墙面设置分割数,同时保留其他配置属性
|
// 为墙面设置分割数
|
||||||
const configWithDivisions: DropZoneConfig = {
|
const configWithDivisions: DropZoneConfig = {
|
||||||
...finalConfig, // 保留所有配置属性(color, alpha, thickness, showBorder, borderColor)
|
...finalConfig, // 保留所有配置属性(color, alpha, thickness, showBorder, borderColor)
|
||||||
walls: finalConfig.walls.map(wall => ({
|
walls: finalConfig.walls.map(wall => ({
|
||||||
...wall,
|
...wall,
|
||||||
divisions: divisions
|
// 如果传入了统一的 divisions,使用它;否则使用墙面自己的 divisions;都没有则默认为 1
|
||||||
|
divisions: divisions !== undefined ? divisions : (wall.divisions || 1)
|
||||||
}))
|
}))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -260,6 +260,7 @@ export class KernelAdapter {
|
|||||||
endPoint: [number, number, number];
|
endPoint: [number, number, number];
|
||||||
height: number;
|
height: number;
|
||||||
offset?: number;
|
offset?: number;
|
||||||
|
divisions?: number;
|
||||||
}>;
|
}>;
|
||||||
color?: string;
|
color?: string;
|
||||||
alpha?: number;
|
alpha?: number;
|
||||||
@ -305,7 +306,8 @@ export class KernelAdapter {
|
|||||||
startPoint: new Vector3(startPoint[0], startPoint[1], startPoint[2]),
|
startPoint: new Vector3(startPoint[0], startPoint[1], startPoint[2]),
|
||||||
endPoint: new Vector3(endPoint[0], endPoint[1], endPoint[2]),
|
endPoint: new Vector3(endPoint[0], endPoint[1], endPoint[2]),
|
||||||
height: parseFloat(wall.height),
|
height: parseFloat(wall.height),
|
||||||
offset: wall.offset ? parseFloat(wall.offset) : undefined
|
offset: wall.offset ? parseFloat(wall.offset) : undefined,
|
||||||
|
divisions: wall.divisions ? parseInt(wall.divisions) : undefined
|
||||||
};
|
};
|
||||||
}).filter((wall: any) => wall !== null) // 过滤掉无效的墙面
|
}).filter((wall: any) => wall !== null) // 过滤掉无效的墙面
|
||||||
};
|
};
|
||||||
@ -314,11 +316,14 @@ export class KernelAdapter {
|
|||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* 生成放置区域(使用已存储的配置数据)
|
* 生成放置区域(使用已存储的配置数据)
|
||||||
* @param divisions 分割数量
|
* @param divisions 可选的统一分割数量,如果不传则使用每个墙面自己的 divisions
|
||||||
* @example
|
* @example
|
||||||
|
* // 使用每个墙面自己的分割数
|
||||||
|
* kernel.dropZone.generateDropZones();
|
||||||
|
* // 或者统一设置所有墙面的分割数
|
||||||
* kernel.dropZone.generateDropZones(5);
|
* kernel.dropZone.generateDropZones(5);
|
||||||
*/
|
*/
|
||||||
generateDropZones: (divisions: number): any[] => {
|
generateDropZones: (divisions?: number): any[] => {
|
||||||
return this.mainApp.appDropZone.generateDropZones(divisions);
|
return this.mainApp.appDropZone.generateDropZones(divisions);
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user