优化多个柜子一起选中时的bug

pull/214/head
Zoe 6 years ago
parent 314032b1e6
commit 03314d93fd

@ -40,12 +40,17 @@ export class DrawTopline implements Command
return;
let brs = brsRes.SelectSet.SelectEntityList as Board[];
let objs = brs.map(br => br.Draw());
let spaceParse = new SurroundOutlineParse(brs);
await spaceParse.Parse();
brs.forEach(br => br.Draw().visible = false);
let cus = spaceParse.m_Outline;
const updateObjVisible = (isShow: boolean) =>
objs.forEach(obj => obj.visible = isShow)
updateObjVisible(false);
let cus = spaceParse.m_Outlines;
cus.forEach(cu => JigUtils.Draw(cu.ApplyMatrix(spaceParse.m_SpaceOCS)));
let cuRes = await app.m_Editor.GetSelection({
@ -55,7 +60,7 @@ export class DrawTopline implements Command
if (cuRes.Status === PromptStatus.Cancel)
{
brs.forEach(br => br.Draw().visible = true);
updateObjVisible(true);
return;
}
@ -69,12 +74,9 @@ export class DrawTopline implements Command
else
{
for (let c of group[0])
{
path.Join(c);
}
}
brs.forEach(br => br.Draw().visible = true);
app.m_Database.ModelSpace.Append(path)
updateObjVisible(true);
let sweepSolid = new SweepSolid(outline, path);
app.m_Database.ModelSpace.Append(sweepSolid);

@ -4,6 +4,7 @@ import { Curve } from '../DatabaseServices/Curve';
import { Polyline } from '../DatabaseServices/Polyline';
import { Command } from '../Editor/CommandMachine';
import { PromptStatus } from '../Editor/PromptResult';
import { MoveMatrix } from '../Geometry/GeUtils';
export class Sweep implements Command
{
@ -23,6 +24,9 @@ export class Sweep implements Command
}
}
let contour = enRes.Entity;
contour.ApplyMatrix(contour.OCSInv);
let min = contour.BoundingBox.min;
contour.ApplyMatrix(MoveMatrix(min.negate()));
enRes = await app.m_Editor.GetEntity({ Msg: "请选择路径:" });

@ -1,7 +1,6 @@
import { Box3, Vector3 } from "three";
import { arrayLast } from "../../Common/ArrayExt";
import { Vector3 } from "three";
import { FixIndex } from "../../Common/Utils";
import { BoardType, ConverBoardTypeToSpaceType } from "../../DatabaseServices/Board";
import { ConverBoardTypeToSpaceType } from "../../DatabaseServices/Board";
import { Curve } from "../../DatabaseServices/Curve";
import { Polyline } from "../../DatabaseServices/Polyline";
import { Region } from "../../DatabaseServices/Region";
@ -14,7 +13,7 @@ import { ISpaceParse } from "./ISpaceParse";
*/
export class SurroundOutlineParse extends ISpaceParse
{
m_Outline: Curve[] = [];
m_Outlines: Curve[] = [];
async Parse()
{
let pls: Polyline[] = [];
@ -23,24 +22,7 @@ export class SurroundOutlineParse extends ISpaceParse
{
let splitType = ConverBoardTypeToSpaceType(type);
let bs = this.ParseBoardBox(brs, splitType);
let boxes = [];
if (type === BoardType.Layer)
{
let box = new Box3();
for (let b of bs)
{
box.union(b);
}
boxes = [box];
}
else
{
boxes = [bs[0]];
if (bs.length > 1)
boxes.push(arrayLast(bs));
}
for (let b of boxes)
for (let b of bs)
{
let max = b.max;
if (max.z > height)
@ -76,7 +58,7 @@ export class SurroundOutlineParse extends ISpaceParse
i--;
}
}
this.m_Outline.push(...cus);
this.m_Outlines.push(...cus);
}
}
}

Loading…
Cancel
Save