!3071 修复:部分侧面造型拆单面映射错误问题

Merge pull request !3071 from 林三/fix_side_model_face
pull/3070/MERGE
林三 4 weeks ago
parent 45163e6ce1
commit 59714923fc

@ -9,7 +9,10 @@ import { Command } from "../Editor/CommandMachine";
import { PromptStatus } from "../Editor/PromptResult"; import { PromptStatus } from "../Editor/PromptResult";
import { ParseBoardSideFace } from "../Geometry/DrillParse/BoardGetFace"; import { ParseBoardSideFace } from "../Geometry/DrillParse/BoardGetFace";
import { MoveMatrix } from "../Geometry/GeUtils"; import { MoveMatrix } from "../Geometry/GeUtils";
import { GetBoardContour } from "../GraphicsSystem/CalcEdgeSealing";
import { FeedingToolPath } from "../GraphicsSystem/ToolPath/FeedingToolPath"; import { FeedingToolPath } from "../GraphicsSystem/ToolPath/FeedingToolPath";
import { ConverToPtsBul } from "../Production/Convert2PtsBul";
import { ErpParseData } from "./Erp/ParseData";
export class SideModelFeedingCommand implements Command export class SideModelFeedingCommand implements Command
{ {
@ -31,11 +34,28 @@ export class SideModelFeedingCommand implements Command
if (ptRes.Status === PromptStatus.OK) if (ptRes.Status === PromptStatus.OK)
{ {
let pos = ptRes.Point;; let pos = ptRes.Point;
let width = 0; let width = 0;
//面ID增量 修正到从自身坐标系原点开始计算
let addFace = 0;
let sideModelList = Array.from(AllSideModelGrooveMap); 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) for (let [n, soilds] of sideModelList)
{ {
@ -81,7 +101,12 @@ export class SideModelFeedingCommand implements Command
width = faces.Faces[n].Length; 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)); pos.add(new Vector3(width + 100));
} }

@ -429,7 +429,7 @@ export class ErpParseData
} }
//获取侧面造型数据 //获取侧面造型数据
GetSideModelDetail(DataArray: IOriginSideModelingData[]): CadBlockModel[] GetSideModelDetail(DataArray: IOriginSideModelingData[], isRect: boolean, add: number): CadBlockModel[]
{ {
if (DataArray == null) return []; if (DataArray == null) return [];
let sideModelList: CadBlockModel[] = []; let sideModelList: CadBlockModel[] = [];
@ -439,9 +439,15 @@ export class ErpParseData
if (DataArray[i].outline) if (DataArray[i].outline)
{ {
let newModel = new CadBlockModel(); let newModel = new CadBlockModel();
let face = DataArray[i].dir;
//保持与排钻孔对应 修正到从自身坐标系原点开始计算
if (isRect)
face = (face + add) % 4;
newModel.ModelID = modelID; newModel.ModelID = modelID;
newModel.LineID = 1; newModel.LineID = 1;
newModel.Face = DataArray[i].dir; newModel.Face = face;
newModel.KnifeName = ""; newModel.KnifeName = "";
newModel.ChaiDanName = DataArray[i].chaiDanName; newModel.ChaiDanName = DataArray[i].chaiDanName;
newModel.KnifeRadius = DataArray[i].knifeRadius; newModel.KnifeRadius = DataArray[i].knifeRadius;
@ -679,7 +685,7 @@ export class ErpParseData
frontModelDetail.push(...this.GetOffSetModelDetail(board.modeling2D, maxID)); frontModelDetail.push(...this.GetOffSetModelDetail(board.modeling2D, maxID));
maxID = frontModelDetail.length + 1; maxID = frontModelDetail.length + 1;
frontModelDetail.push(...this.Get3DModelDetail(board.modeling3D, maxID)); 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 frontHoleDetail = this.GetHolesDetail(board.holes.frontBackHoles, FrontOrSide.);
let sideHoleDetail = this.GetHolesDetail(board.holes.sideHoles, FrontOrSide., board.info.isRect, add); let sideHoleDetail = this.GetHolesDetail(board.holes.sideHoles, FrontOrSide., board.info.isRect, add);
let result = new CadBlockInfo(); let result = new CadBlockInfo();

Loading…
Cancel
Save