!3019 优化:一键布局时,显示的板材名、材料和颜色信息会读取视口内所有的板的信息

pull/3025/MERGE
林三 1 month ago committed by ChenX
parent acf6695433
commit 908c37fe27

@ -85,7 +85,7 @@ export class OneKeyLayout implements Command
let p2: Vector3;//视口的第二个点 UCS let p2: Vector3;//视口的第二个点 UCS
let tkBoxMinP = new Vector3();//图框盒子的最小点 let tkBoxMinP = new Vector3();//图框盒子的最小点
let tkPolylineDrawObjects: Object3D[] = [];//图框内的多段线绘制对象 let tkPolylineDrawObjects: Object3D[] = [];//图框内的多段线绘制对象
let specialTexts = new Set<Entity>(); let specialTexts = new Set<Text>();
let pagTexts = new Set<Entity>(); let pagTexts = new Set<Entity>();
let paperTexts = new Set<Entity>(); let paperTexts = new Set<Entity>();
let dateTexts = new Set<Entity>(); let dateTexts = new Set<Entity>();
@ -668,15 +668,27 @@ export class OneKeyLayout implements Command
let g = new GroupRecord(); let g = new GroupRecord();
g.Name = "图框"; g.Name = "图框";
app.Database.GroupTable.Add(g); app.Database.GroupTable.Add(g);
let board = bs.find(b => b instanceof Board) as Board; let boards = bs.filter(b => b instanceof Board) as Board[];
for (let c of curves) for (let c of curves)
{ {
if (this._cacheRect.has(c.TempData)) continue; if (this._cacheRect.has(c.TempData)) continue;
let cloneC = c.Clone(); let cloneC = c.Clone();
if (specialTexts.has(c)) if (specialTexts.has(c))
{ {
this.HandleTextMetaData(cloneC as Text, board); let strSet: Set<string> = new Set();
if (!(<Text>cloneC).TextString) let metaData = (cloneC as Text).TextString.slice(1);
for (let br of boards)
{
//由于不同板的 材名 材料 颜色多样式,遍历所有板 其他(如房间名)跳过
if (!this.HandleTextMetaData(metaData, strSet, br))
break;
}
let str = Array.from(strSet).filter((str) => str !== "").join(", ");
(cloneC as Text).TextString = str;
if (!(cloneC as Text).TextString)
continue; continue;
} }
if (paperTexts.has(c)) if (paperTexts.has(c))
@ -755,9 +767,9 @@ export class OneKeyLayout implements Command
} }
} }
private HandleTextMetaData(text: Text, en?: Board) private HandleTextMetaData(metaData: string, strSet: Set<string>, en?: Board)
{ {
let metaData = text.TextString.slice(1); let isMaterial = false;
if (en) if (en)
{ {
const option = en.BoardProcessOption; const option = en.BoardProcessOption;
@ -766,26 +778,31 @@ export class OneKeyLayout implements Command
{ {
case "房名": case "房名":
case "房间名": case "房间名":
text.TextString = option[EBoardKeyList.RoomName]; strSet.add(option[EBoardKeyList.RoomName]);
break; break;
case "柜名": case "柜名":
text.TextString = option[EBoardKeyList.CabinetName]; strSet.add(option[EBoardKeyList.CabinetName]);
break; break;
case "板材名": case "板材名":
text.TextString = option[EBoardKeyList.BrMat]; strSet.add(option[EBoardKeyList.BrMat]);
isMaterial = true;
break; break;
case "材料": case "材料":
text.TextString = option[EBoardKeyList.Mat]; strSet.add(option[EBoardKeyList.Mat]);
isMaterial = true;
break; break;
case "颜色": case "颜色":
text.TextString = option[EBoardKeyList.Color]; strSet.add(option[EBoardKeyList.Color]);
isMaterial = true;
break; break;
case "图纸名称": case "图纸名称":
text.TextString = option[EBoardKeyList.PaperName]; strSet.add(option[EBoardKeyList.PaperName]);
break; break;
default: default:
break; break;
} }
} }
return isMaterial;
} }
} }

Loading…
Cancel
Save