From 908c37fe2737979baec537f354481d8e93589213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=89?= <940119273@qq.com> Date: Wed, 28 Aug 2024 02:01:53 +0000 Subject: [PATCH] =?UTF-8?q?!3019=20=E4=BC=98=E5=8C=96:=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E6=97=B6,=E6=98=BE=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E6=9D=BF=E6=9D=90=E5=90=8D=E3=80=81=E6=9D=90=E6=96=99=E5=92=8C?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E4=BF=A1=E6=81=AF=E4=BC=9A=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E8=A7=86=E5=8F=A3=E5=86=85=E6=89=80=E6=9C=89=E7=9A=84=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/Viewport/OneKeyLayout.ts | 41 ++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/Add-on/Viewport/OneKeyLayout.ts b/src/Add-on/Viewport/OneKeyLayout.ts index b4d31eac7..bd4116c4c 100644 --- a/src/Add-on/Viewport/OneKeyLayout.ts +++ b/src/Add-on/Viewport/OneKeyLayout.ts @@ -85,7 +85,7 @@ export class OneKeyLayout implements Command let p2: Vector3;//视口的第二个点 UCS let tkBoxMinP = new Vector3();//图框盒子的最小点 let tkPolylineDrawObjects: Object3D[] = [];//图框内的多段线绘制对象 - let specialTexts = new Set(); + let specialTexts = new Set(); let pagTexts = new Set(); let paperTexts = new Set(); let dateTexts = new Set(); @@ -668,15 +668,27 @@ export class OneKeyLayout implements Command let g = new GroupRecord(); g.Name = "图框"; 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) { if (this._cacheRect.has(c.TempData)) continue; let cloneC = c.Clone(); if (specialTexts.has(c)) { - this.HandleTextMetaData(cloneC as Text, board); - if (!(cloneC).TextString) + let strSet: Set = new Set(); + 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; } 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, en?: Board) { - let metaData = text.TextString.slice(1); + let isMaterial = false; if (en) { const option = en.BoardProcessOption; @@ -766,26 +778,31 @@ export class OneKeyLayout implements Command { case "房名": case "房间名": - text.TextString = option[EBoardKeyList.RoomName]; + strSet.add(option[EBoardKeyList.RoomName]); break; case "柜名": - text.TextString = option[EBoardKeyList.CabinetName]; + strSet.add(option[EBoardKeyList.CabinetName]); break; case "板材名": - text.TextString = option[EBoardKeyList.BrMat]; + strSet.add(option[EBoardKeyList.BrMat]); + isMaterial = true; break; case "材料": - text.TextString = option[EBoardKeyList.Mat]; + strSet.add(option[EBoardKeyList.Mat]); + isMaterial = true; break; case "颜色": - text.TextString = option[EBoardKeyList.Color]; + strSet.add(option[EBoardKeyList.Color]); + isMaterial = true; break; case "图纸名称": - text.TextString = option[EBoardKeyList.PaperName]; + strSet.add(option[EBoardKeyList.PaperName]); break; default: break; } } + + return isMaterial; } }