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

Loading…
Cancel
Save