mirror of https://gitee.com/cf-fz/WebCAD.git
!1326 功能:铰链信息写入到板件备注,命令:parsehinge
parent
d87225032e
commit
067a1ece68
@ -0,0 +1,51 @@
|
|||||||
|
import { Vector3 } from "three";
|
||||||
|
import { app } from "../../ApplicationServices/Application";
|
||||||
|
import { arrayRemoveIf } from "../../Common/ArrayExt";
|
||||||
|
import { FixedNotZero } from "../../Common/Utils";
|
||||||
|
import { Board } from "../../DatabaseServices/Entity/Board";
|
||||||
|
import { HardwareCompositeEntity } from "../../DatabaseServices/Hardware/HardwareCompositeEntity";
|
||||||
|
import { Command } from "../../Editor/CommandMachine";
|
||||||
|
import { PromptStatus } from "../../Editor/PromptResult";
|
||||||
|
import { BoardOpenDir } from "../../UI/Store/BoardInterface";
|
||||||
|
|
||||||
|
export class ParseHinge implements Command
|
||||||
|
{
|
||||||
|
async exec()
|
||||||
|
{
|
||||||
|
let res = await app.Editor.GetSelection({
|
||||||
|
Msg: "请选择需要分析铰链的门板",
|
||||||
|
Filter: {
|
||||||
|
filterFunction: (o, e) => e instanceof Board && e.OpenDir !== BoardOpenDir.None
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (res.Status === PromptStatus.OK)
|
||||||
|
{
|
||||||
|
let doors = res.SelectSet.SelectEntityList as Board[];
|
||||||
|
|
||||||
|
for (let door of doors)
|
||||||
|
{
|
||||||
|
let hingeMap = new Map<string, string>();
|
||||||
|
for (let hid of door.RelativeHardware)
|
||||||
|
{
|
||||||
|
let hw = hid.Object;
|
||||||
|
if (hw instanceof HardwareCompositeEntity)
|
||||||
|
{
|
||||||
|
if (hw.HardwareOption.name.includes("铰链"))
|
||||||
|
{
|
||||||
|
let pos = new Vector3().setFromMatrixPosition(hw.SpaceOCS).applyMatrix4(door.OCSInv);
|
||||||
|
let posStr = hingeMap.get("jl-" + hw.HardwareOption.name);
|
||||||
|
if (!posStr)
|
||||||
|
posStr = "";
|
||||||
|
posStr += `${FixedNotZero(pos.x, 2)},${FixedNotZero(pos.y, 2)},${FixedNotZero(pos.z, 2)}|`;
|
||||||
|
hingeMap.set("jl-" + hw.HardwareOption.name, posStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let oldRemarks = door.BoardProcessOption.remarks.slice();
|
||||||
|
arrayRemoveIf(oldRemarks, (r) => hingeMap.has(r[0]));
|
||||||
|
oldRemarks.push(...hingeMap.entries());
|
||||||
|
door.BoardProcessOption.remarks = oldRemarks;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue