增加配件吸附功能
This commit is contained in:
@ -123,14 +123,7 @@ export class AppDropZone {
|
||||
divisionsMap[item.name] = item.divisions;
|
||||
});
|
||||
|
||||
// 定义方向关键字映射(支持中英文)
|
||||
const directionKeywords: Record<string, string[]> = {
|
||||
'前': ['前', 'front', 'qian'],
|
||||
'后': ['后', 'back', 'hou'],
|
||||
'左': ['左', 'left', 'zuo'],
|
||||
'右': ['右', 'right', 'you']
|
||||
};
|
||||
|
||||
|
||||
// 匹配墙面名称(精确匹配)
|
||||
const matchWallName = (wallName: string): number | null => {
|
||||
// 提取墙面名称的最后部分(最后一个下划线之后)
|
||||
@ -166,6 +159,11 @@ export class AppDropZone {
|
||||
})
|
||||
.filter(wall => wall !== null) as typeof this.dropZoneConfig.walls; // 过滤掉未配置的墙面
|
||||
|
||||
// 更新 wallDivisionsMap(重要:用于后续的自动排列和拖拽检查)
|
||||
this.dropZoneConfig.walls.forEach(wall => {
|
||||
this.wallDivisionsMap.set(wall.name, wall.divisions);
|
||||
});
|
||||
|
||||
// 清除旧的放置区域网格(不清除模型)
|
||||
this.clearZones();
|
||||
|
||||
@ -419,7 +417,7 @@ export class AppDropZone {
|
||||
|
||||
if (this.appModel) {
|
||||
// 计算新位置(从放置区域的中心点加上法线偏移)
|
||||
const offsetDistance = 0.05;
|
||||
const offsetDistance = 0; // 增加偏移距离,让模型更往外
|
||||
const targetPosition = targetZone.center.add(targetZone.normal.scale(offsetDistance));
|
||||
|
||||
// 计算旋转角度(根据法线方向)
|
||||
@ -510,6 +508,14 @@ export class AppDropZone {
|
||||
this.placementWall.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* 只显示指定墙面的放置区域
|
||||
* @param wallName 墙面名称
|
||||
*/
|
||||
showWall(wallName: string): void {
|
||||
this.placementWall.showWall(wallName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 隐藏所有放置区域
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user