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