From cf913a879f913a3786e2716f1f4c939ba5942823 Mon Sep 17 00:00:00 2001 From: ChenX Date: Fri, 8 Oct 2021 10:31:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=E6=97=A0=E6=B3=95=E6=8B=B7?= =?UTF-8?q?=E8=B4=9D=E7=81=AF=E5=85=89=E7=9A=84=E9=97=AE=E9=A2=98=20fix=20?= =?UTF-8?q?#I4CMHS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/Copy.ts | 20 +++++++++++++++++--- src/DatabaseServices/Database.ts | 3 ++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Add-on/Copy.ts b/src/Add-on/Copy.ts index 9474573c9..0f2219c67 100644 --- a/src/Add-on/Copy.ts +++ b/src/Add-on/Copy.ts @@ -8,6 +8,7 @@ import { ExtrudeHole } from '../DatabaseServices/3DSolid/ExtrudeHole'; import { Hole } from '../DatabaseServices/3DSolid/Hole'; import { Board } from '../DatabaseServices/Entity/Board'; import { Entity } from '../DatabaseServices/Entity/Entity'; +import { DirectionalLight } from '../DatabaseServices/Lights/DirectionalLight'; import { Light } from '../DatabaseServices/Lights/Light'; import { Command } from '../Editor/CommandMachine'; import { JigUtils } from '../Editor/JigUtils'; @@ -25,7 +26,13 @@ export class Command_Copy implements Command return; } - let ssRes = await app.Editor.GetSelection({ Msg: "请选择需要拷贝的实体:", UseSelect: true }); + let ssRes = await app.Editor.GetSelection({ + Msg: "请选择需要拷贝的实体:", UseSelect: true, + Filter: { + filterFunction: (obj, ent) => !(ent instanceof DirectionalLight)//避免拷贝太阳光 太阳光只能有一个 + } + }); + if (ssRes.Status !== PromptStatus.OK) return; @@ -36,7 +43,7 @@ export class Command_Copy implements Command let ptBase = ptRes.Point; let ptLast = ptBase.clone(); - let orgEns = ssRes.SelectSet.SelectEntityList.filter(e => !(e instanceof Light)); + let orgEns = ssRes.SelectSet.SelectEntityList; let hasBoard = orgEns.some(en => en instanceof Board); /* @@ -62,7 +69,14 @@ export class Command_Copy implements Command if (hasBoard) arrayRemoveIf(orgEns, filter); - let jigEns = orgEns.map(e => JigUtils.Draw(e)); + let jigEns = orgEns.map(e => + { + let ce = JigUtils.Draw(e); + if (e instanceof Light) + e.DrawObject.visible = true;//因为在jig中优化了jig复制显示,仅在copy中保留原始图形的显示 + return ce; + }); + while (true) { app.Database.hm.StartMark(); diff --git a/src/DatabaseServices/Database.ts b/src/DatabaseServices/Database.ts index f489a2e2d..14e818acb 100644 --- a/src/DatabaseServices/Database.ts +++ b/src/DatabaseServices/Database.ts @@ -14,6 +14,7 @@ import { IdMaping } from './IdMaping'; import { AmbientLight } from './Lights/AmbientLight'; import { DirectionalLight } from './Lights/DirectionalLight'; import { HemisphereLight } from './Lights/HemisphereLight'; +import { Light } from './Lights/Light'; import { MaterialTable } from './MaterialTable'; import { ObjectId, RelevancyType } from './ObjectId'; import { PhysicalMaterialRecord } from './PhysicalMaterialRecord'; @@ -298,7 +299,7 @@ export class Database filer.Reset(); filer.WriteObject(object); let newObject = filer.ReadObject(); - if (newObject instanceof Entity) + if (!(newObject instanceof Light) && newObject instanceof Entity)//Light类的对象不能拷贝绘制 否则出错 newObject.CloneDrawObject(object as Entity); this.AllocationObjectId(newObject); owner.Add(newObject, false);