Join支持拉伸实体

pull/385/MERGE
ChenX 5 years ago
parent 455ccb49a7
commit 9d61b9b447

@ -6,35 +6,41 @@ import { Arc } from "../DatabaseServices/Entity/Arc";
import { Board, BoardType } from "../DatabaseServices/Entity/Board";
import { Circle } from "../DatabaseServices/Entity/Circle";
import { Curve } from '../DatabaseServices/Entity/Curve';
import { ExtureSolid } from "../DatabaseServices/Entity/Extrude";
import { Line } from "../DatabaseServices/Entity/Line";
import { Polyline } from "../DatabaseServices/Entity/Polyline";
import { Command } from "../Editor/CommandMachine";
import { PromptStatus } from "../Editor/PromptResult";
import { FuzzDirection } from "../Geometry/FuzzVector";
import { ptToString, comparePoint } from "../Geometry/GeUtils";
import { comparePoint, ptToString } from "../Geometry/GeUtils";
import { PlaneExt } from "../Geometry/Plane";
export class Command_Join implements Command
{
async exec()
{
let exSsRes = await app.Editor.GetSelection({ Msg: "请选择对象<全部选择>:", UseSelect: true, Filter: { filterTypes: [Curve, Board] } });
let exSsRes = await app.Editor.GetSelection({ Msg: "请选择对象<全部选择>:", UseSelect: true, Filter: { filterTypes: [Curve, Board, ExtureSolid] } });
if (exSsRes.Status === PromptStatus.Cancel)
return;
let curveCol: Curve[] = [];
let brs: Board[] = [];
let exts: ExtureSolid[] = [];
for (let en of exSsRes.SelectSet.SelectEntityList)
{
if (en instanceof Curve)
curveCol.push(en)
curveCol.push(en);
else if (en instanceof Board)
brs.push(en)
brs.push(en);
else if (en instanceof ExtureSolid)
exts.push(en);
}
if (brs.length > 1)
this.MergeBoards(brs);
this.JoinSameTypeBrs(exts);
let typeMap = new Map<string, Curve[]>();
for (let cu of curveCol)
{
@ -208,17 +214,15 @@ export class Command_Join implements Command
brMap.set(br.BoardType, [br]);
}
for (let [, bs] of brMap)
{
this.JoinSameTypeBrs(bs);
}
}
private JoinSameTypeBrs(brs: Board[])
private JoinSameTypeBrs(brs: ExtureSolid[])
{
let sortFn = comparePoint("xyz");
//排序
brs.sort((a, b) =>
{
return sortFn(a.MinPoint, b.MinPoint);
return sortFn(a.Position, b.Position);
});
let flag = 0;//用于记录连续不可合并次数

Loading…
Cancel
Save