!1326 功能:铰链信息写入到板件备注,命令:parsehinge

pull/1326/MERGE
ZoeLeeFZ 4 years ago committed by ChenX
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;
}
}
}
}

@ -71,6 +71,7 @@ export class OrderDataBlock
ObjIDs: BlockObjIds;
KaiLiaoWidth: number;
KaiLiaoHeight: number;
RemarkExtra: string;
}
export enum CadType
{

@ -164,7 +164,10 @@ export class ErpParseData
block.KaiLiaoHeight = boardData.info.kaiLiaoHeight;
let kaiLiaoArray = [boardData.info.kaiLiaoWidth, boardData.info.kaiLiaoHeight];
block.CadData = JSON.stringify([pointInfoArray, basepositionArray, cadModelArray, offsetArray, kaiLiaoArray]);
block.RemarkJson = JSON.stringify(this.GetRemark(boardData.info.remarks));
let filter = (remark: [string, string]) => { return !remark[0].startsWith('jl-'); };
block.RemarkJson = JSON.stringify(this.GetRemark(boardData.info.remarks, filter).map(t => t[1]));
let jlFilter = (remark: [string, string]) => { return remark[0].startsWith('jl-'); };
block.RemarkExtra = JSON.stringify(this.GetRemark(boardData.info.remarks, jlFilter));
let boxSize = boxSizeList.get(entity);
block.BoxWidth = boxSize.x;
block.BoxDepth = boxSize.y;
@ -680,9 +683,13 @@ export class ErpParseData
}
return add;
}
GetRemark(remarks: [string, string][])
GetRemark(remarks: [string, string][], filter: (block: [string, string]) => boolean)
{
return remarks.map(t => t[1]);
if (filter)
{
return remarks.filter(t => filter(t));
}
return remarks;
}
GetAllDrillsObjects(boardList: Board[])
{

@ -195,4 +195,5 @@ export enum CommandNames
Knife = "KNIFES",//编辑BBS
R2B2 = "RECT2BOARD2",
FixIntSelfContour = "FIXINTSELFCONTOUR",
ParseHinge = "PARSEHINGE",//分析门板的铰链
}

@ -191,7 +191,6 @@ import { Polyline2Board } from "../Add-on/twoD2threeD/Polyline2Board";
import { Redo, Undo } from "../Add-on/Undo";
import { ViewChange } from "../Add-on/ViewChange";
import { OneKeyLayout } from "../Add-on/Viewport/OneKeyLayout";
import { OneKeyPrint } from "../Add-on/Viewport/OneKeyPrint";
import { Command_Wblock } from "../Add-on/Wblock";
import { ZoomE } from "../Add-on/ZoomE";
import { CommandNames } from "../Common/CommandNames";
@ -212,6 +211,8 @@ import { ShowKinfeManageModal } from './../Add-on/showModal/ShowKnifeManageModal
import { commandMachine } from './CommandMachine';
import { Rect2Board } from "../Add-on/twoD2threeD/Rect2Board";
import { FixIntersectSelfContour } from "../Add-on/DrawBoard/FixIntersectSelfContour";
import { OneKeyPrint } from "../Add-on/Viewport/OneKeyPrint";
import { ParseHinge } from "../Add-on/DrawBoard/ParseHinge";
export function registerCommand()
{
@ -591,6 +592,7 @@ export function registerCommand()
commandMachine.RegisterCommand(CommandNames.R2B2, new Rect2Board());
commandMachine.RegisterCommand(CommandNames.FixIntSelfContour, new FixIntersectSelfContour());
commandMachine.RegisterCommand(CommandNames.ParseHinge, new ParseHinge());
}
export async function RegistCustomCommand()

@ -361,7 +361,7 @@ export class LookOverBoardInfosModal extends React.Component<LookOverBoardInfosM
switch (key)
{
case "Name":
arr.push(b.Name);
arr.push(`"${b.Name}"`);
break;
case "Width":
case "Height":
@ -443,10 +443,10 @@ export class LookOverBoardInfosModal extends React.Component<LookOverBoardInfosM
}
break;
case "remarks":
arr.push(b.BoardProcessOption.remarks.reduce((s, r) => s += ` ${r[0]}:${r[1]} `, ""));
arr.push(`"${b.BoardProcessOption.remarks.reduce((s, r) => s += ` ${r[0]}:${r[1]} `, "")}"`);
break;
default:
arr.push(b.BoardProcessOption[key]);
arr.push(`"${b.BoardProcessOption[key]}"`);
}
}
this.boardDataInArray.push({ br: b, arr: arr });

Loading…
Cancel
Save