修复:无法拷贝灯光的问题 fix #I4CMHS

pull/1653/MERGE
ChenX 3 years ago
parent 0c800ed830
commit cf913a879f

@ -8,6 +8,7 @@ import { ExtrudeHole } from '../DatabaseServices/3DSolid/ExtrudeHole';
import { Hole } from '../DatabaseServices/3DSolid/Hole'; import { Hole } from '../DatabaseServices/3DSolid/Hole';
import { Board } from '../DatabaseServices/Entity/Board'; import { Board } from '../DatabaseServices/Entity/Board';
import { Entity } from '../DatabaseServices/Entity/Entity'; import { Entity } from '../DatabaseServices/Entity/Entity';
import { DirectionalLight } from '../DatabaseServices/Lights/DirectionalLight';
import { Light } from '../DatabaseServices/Lights/Light'; import { Light } from '../DatabaseServices/Lights/Light';
import { Command } from '../Editor/CommandMachine'; import { Command } from '../Editor/CommandMachine';
import { JigUtils } from '../Editor/JigUtils'; import { JigUtils } from '../Editor/JigUtils';
@ -25,7 +26,13 @@ export class Command_Copy implements Command
return; 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) if (ssRes.Status !== PromptStatus.OK)
return; return;
@ -36,7 +43,7 @@ export class Command_Copy implements Command
let ptBase = ptRes.Point; let ptBase = ptRes.Point;
let ptLast = ptBase.clone(); 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); let hasBoard = orgEns.some(en => en instanceof Board);
/* /*
@ -62,7 +69,14 @@ export class Command_Copy implements Command
if (hasBoard) if (hasBoard)
arrayRemoveIf(orgEns, filter); 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) while (true)
{ {
app.Database.hm.StartMark(); app.Database.hm.StartMark();

@ -14,6 +14,7 @@ import { IdMaping } from './IdMaping';
import { AmbientLight } from './Lights/AmbientLight'; import { AmbientLight } from './Lights/AmbientLight';
import { DirectionalLight } from './Lights/DirectionalLight'; import { DirectionalLight } from './Lights/DirectionalLight';
import { HemisphereLight } from './Lights/HemisphereLight'; import { HemisphereLight } from './Lights/HemisphereLight';
import { Light } from './Lights/Light';
import { MaterialTable } from './MaterialTable'; import { MaterialTable } from './MaterialTable';
import { ObjectId, RelevancyType } from './ObjectId'; import { ObjectId, RelevancyType } from './ObjectId';
import { PhysicalMaterialRecord } from './PhysicalMaterialRecord'; import { PhysicalMaterialRecord } from './PhysicalMaterialRecord';
@ -298,7 +299,7 @@ export class Database
filer.Reset(); filer.Reset();
filer.WriteObject(object); filer.WriteObject(object);
let newObject = filer.ReadObject(); let newObject = filer.ReadObject();
if (newObject instanceof Entity) if (!(newObject instanceof Light) && newObject instanceof Entity)//Light类的对象不能拷贝绘制 否则出错
newObject.CloneDrawObject(object as Entity); newObject.CloneDrawObject(object as Entity);
this.AllocationObjectId(newObject); this.AllocationObjectId(newObject);
owner.Add(newObject, false); owner.Add(newObject, false);

Loading…
Cancel
Save