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

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

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

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

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

Loading…
Cancel
Save