diff --git a/src/Add-on/CommandSideModelFeediing.ts b/src/Add-on/CommandSideModelFeediing.ts index 1a67fb50b..e56a0102b 100644 --- a/src/Add-on/CommandSideModelFeediing.ts +++ b/src/Add-on/CommandSideModelFeediing.ts @@ -9,7 +9,10 @@ import { Command } from "../Editor/CommandMachine"; import { PromptStatus } from "../Editor/PromptResult"; import { ParseBoardSideFace } from "../Geometry/DrillParse/BoardGetFace"; import { MoveMatrix } from "../Geometry/GeUtils"; +import { GetBoardContour } from "../GraphicsSystem/CalcEdgeSealing"; import { FeedingToolPath } from "../GraphicsSystem/ToolPath/FeedingToolPath"; +import { ConverToPtsBul } from "../Production/Convert2PtsBul"; +import { ErpParseData } from "./Erp/ParseData"; export class SideModelFeedingCommand implements Command { @@ -31,11 +34,28 @@ export class SideModelFeedingCommand implements Command if (ptRes.Status === PromptStatus.OK) { - let pos = ptRes.Point;; + let pos = ptRes.Point; let width = 0; - + //面ID增量 修正到从自身坐标系原点开始计算 + let addFace = 0; let sideModelList = Array.from(AllSideModelGrooveMap); - sideModelList.sort((a, b) => a[0] - b[0]); + + if (br.IsRect) + { + //获取增量 + let brContour = GetBoardContour(br); + //不扣除封边的轮廓信息 + let originOutlinePtsBul = ConverToPtsBul(brContour); + originOutlinePtsBul.pts.pop(); + originOutlinePtsBul.buls.pop(); + addFace = new ErpParseData().GetFaceAdd(originOutlinePtsBul.pts[0]); + + //侧面造型列表按修正后面的顺序排序 + sideModelList.sort((a, b) => ((a[0] + addFace) % 4) - ((b[0] + addFace) % 4)); + } + else + //侧面造型列表按面的顺序排序 + sideModelList.sort((a, b) => a[0] - b[0]); for (let [n, soilds] of sideModelList) { @@ -81,7 +101,12 @@ export class SideModelFeedingCommand implements Command width = faces.Faces[n].Length; - this.OrderText((n + 1).toString(), tMtx, width); + let faceId = n; + if (br.IsRect) + faceId = (faceId + addFace) % 4; + + //绘制下标 面ID + this.OrderText((faceId).toString(), tMtx, width); pos.add(new Vector3(width + 100)); } diff --git a/src/Add-on/Erp/ParseData.ts b/src/Add-on/Erp/ParseData.ts index d78ae6869..d1e40e73f 100644 --- a/src/Add-on/Erp/ParseData.ts +++ b/src/Add-on/Erp/ParseData.ts @@ -429,7 +429,7 @@ export class ErpParseData } //获取侧面造型数据 - GetSideModelDetail(DataArray: IOriginSideModelingData[]): CadBlockModel[] + GetSideModelDetail(DataArray: IOriginSideModelingData[], isRect: boolean, add: number): CadBlockModel[] { if (DataArray == null) return []; let sideModelList: CadBlockModel[] = []; @@ -439,9 +439,15 @@ export class ErpParseData if (DataArray[i].outline) { let newModel = new CadBlockModel(); + let face = DataArray[i].dir; + + //保持与排钻孔对应 修正到从自身坐标系原点开始计算 + if (isRect) + face = (face + add) % 4; + newModel.ModelID = modelID; newModel.LineID = 1; - newModel.Face = DataArray[i].dir; + newModel.Face = face; newModel.KnifeName = ""; newModel.ChaiDanName = DataArray[i].chaiDanName; newModel.KnifeRadius = DataArray[i].knifeRadius; @@ -679,7 +685,7 @@ export class ErpParseData frontModelDetail.push(...this.GetOffSetModelDetail(board.modeling2D, maxID)); maxID = frontModelDetail.length + 1; frontModelDetail.push(...this.Get3DModelDetail(board.modeling3D, maxID)); - let sideModelDetail = this.GetSideModelDetail(board.sideModeling); + let sideModelDetail = this.GetSideModelDetail(board.sideModeling, board.info.isRect, add); let frontHoleDetail = this.GetHolesDetail(board.holes.frontBackHoles, FrontOrSide.正面反面); let sideHoleDetail = this.GetHolesDetail(board.holes.sideHoles, FrontOrSide.侧面, board.info.isRect, add); let result = new CadBlockInfo();