From 20a669254c64b3ef48a1468088b7b50abb9ed028 Mon Sep 17 00:00:00 2001 From: ChenX Date: Thu, 27 Jun 2024 19:22:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=8F=91:=E4=BF=AE=E5=A4=8D=E5=BE=AA?= =?UTF-8?q?=E7=8E=AF=E4=BE=9D=E8=B5=96=E5=AF=BC=E8=87=B4=E7=9A=84=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Add-on/CommandSideModelFeediing.ts | 2 +- src/Geometry/DrillParse/BoardGetFace.ts | 41 +++++++++++++++- src/Geometry/DrillParse/ParseBoardSideFace.ts | 47 ------------------- .../ToolPath/FeedingToolPath.ts | 2 +- src/Production/Product.ts | 2 +- 5 files changed, 43 insertions(+), 51 deletions(-) delete mode 100644 src/Geometry/DrillParse/ParseBoardSideFace.ts diff --git a/src/Add-on/CommandSideModelFeediing.ts b/src/Add-on/CommandSideModelFeediing.ts index f43fd1f41..e01cd80ff 100644 --- a/src/Add-on/CommandSideModelFeediing.ts +++ b/src/Add-on/CommandSideModelFeediing.ts @@ -7,7 +7,7 @@ import { Polyline } from "../DatabaseServices/Entity/Polyline"; import { Text, TextAligen } from "../DatabaseServices/Text/Text"; import { Command } from "../Editor/CommandMachine"; import { PromptStatus } from "../Editor/PromptResult"; -import { ParseBoardSideFace } from "../Geometry/DrillParse/ParseBoardSideFace"; +import { ParseBoardSideFace } from "../Geometry/DrillParse/BoardGetFace"; import { MoveMatrix } from "../Geometry/GeUtils"; import { FeedingToolPath } from "../GraphicsSystem/ToolPath/FeedingToolPath"; diff --git a/src/Geometry/DrillParse/BoardGetFace.ts b/src/Geometry/DrillParse/BoardGetFace.ts index 8dfcf95f2..ae66bd3f0 100644 --- a/src/Geometry/DrillParse/BoardGetFace.ts +++ b/src/Geometry/DrillParse/BoardGetFace.ts @@ -9,8 +9,9 @@ import { Board } from "../../DatabaseServices/Entity/Board"; import { Curve } from "../../DatabaseServices/Entity/Curve"; import { Polyline } from "../../DatabaseServices/Entity/Polyline"; import { Region } from "../../DatabaseServices/Entity/Region"; -import { GetBoardHighSeal } from "../../GraphicsSystem/CalcEdgeSealing"; +import { GetBoardContour, GetBoardHighSeal } from "../../GraphicsSystem/CalcEdgeSealing"; import { IHighSealedItem } from "../../UI/Store/OptionInterface/IHighSealedItem"; +import { GetSideCuFaceMtx } from "../Board2DModelCSG/BoardSideModelCSGBuilder"; import { AsVector2, ZAxis, angle, equaln, equalv3 } from "../GeUtils"; import { CanDrawHoleFuzz } from "./CanDrawHoleFuzz"; import { Face } from "./Face"; @@ -363,3 +364,41 @@ export function GetSideFaceMtx(cu: Curve, inverseZ = false): Matrix4 .makeBasis(x, y, z) .setPosition(basePt); } + +export class ParseBoardSideFace extends BoardGetFace +{ + constructor(public Board: Board) + { + super(Board); + } + + ParseFaces() + { + this.GetSideFaces(); + } + + GetSideFaces() + { + let con = GetBoardContour(this.Board); + let inverseZ = con.Area2 < 0; + let cus = con.Explode() as Curve[]; + for (let cu of cus) + { + let type = BoardFaceType.Side; + + let length = cu.Length; + if (equaln(length, 0) || cu instanceof Arc) + type = BoardFaceType.NoSide; + + let mtx = GetSideCuFaceMtx(cu, inverseZ); + let face = new Face({ + type, + localBoard: this.Board, + matrix4: new Matrix4().multiplyMatrices(this.Board.OCS.clone(), mtx), + length, + width: this.Board.Thickness, + }); + this.Faces.push(face); + } + } +} diff --git a/src/Geometry/DrillParse/ParseBoardSideFace.ts b/src/Geometry/DrillParse/ParseBoardSideFace.ts deleted file mode 100644 index 4030162dd..000000000 --- a/src/Geometry/DrillParse/ParseBoardSideFace.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Matrix4 } from "three"; -import { Arc } from "../../DatabaseServices/Entity/Arc"; -import { Board } from "../../DatabaseServices/Entity/Board"; -import { Curve } from "../../DatabaseServices/Entity/Curve"; -import { GetBoardContour } from "../../GraphicsSystem/CalcEdgeSealing"; -import { GetSideCuFaceMtx } from "../Board2DModelCSG/BoardSideModelCSGBuilder"; -import { equaln } from "../GeUtils"; -import { BoardFaceType, BoardGetFace } from "./BoardGetFace"; -import { Face } from "./Face"; - -export class ParseBoardSideFace extends BoardGetFace -{ - constructor(public Board: Board) - { - super(Board); - } - - ParseFaces() - { - this.GetSideFaces(); - } - - GetSideFaces() - { - let con = GetBoardContour(this.Board); - let inverseZ = con.Area2 < 0; - let cus = con.Explode() as Curve[]; - for (let cu of cus) - { - let type = BoardFaceType.Side; - - let length = cu.Length; - if (equaln(length, 0) || cu instanceof Arc) - type = BoardFaceType.NoSide; - - let mtx = GetSideCuFaceMtx(cu, inverseZ); - let face = new Face({ - type, - localBoard: this.Board, - matrix4: new Matrix4().multiplyMatrices(this.Board.OCS.clone(), mtx), - length, - width: this.Board.Thickness, - }); - this.Faces.push(face); - } - } -} diff --git a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts index d9b8e4d98..36408c696 100644 --- a/src/GraphicsSystem/ToolPath/FeedingToolPath.ts +++ b/src/GraphicsSystem/ToolPath/FeedingToolPath.ts @@ -19,8 +19,8 @@ import { ShapeManager } from "../../DatabaseServices/ShapeManager"; import { GetSideCuFaceMtx } from "../../Geometry/Board2DModelCSG/BoardSideModelCSGBuilder"; import { Box3Ext } from "../../Geometry/Box"; import { Route } from "../../Geometry/CurveMap"; +import { ParseBoardSideFace } from "../../Geometry/DrillParse/BoardGetFace"; import { CanDrawHoleFuzz } from "../../Geometry/DrillParse/CanDrawHoleFuzz"; -import { ParseBoardSideFace } from "../../Geometry/DrillParse/ParseBoardSideFace"; import { AsVector2, ZAxis, equaln, isParallelTo } from "../../Geometry/GeUtils"; import { RegionParse } from "../../Geometry/RegionParse"; import { FixIndex } from "../../Nest/Common/Util"; diff --git a/src/Production/Product.ts b/src/Production/Product.ts index 793471e4d..8f963725a 100644 --- a/src/Production/Product.ts +++ b/src/Production/Product.ts @@ -24,8 +24,8 @@ import { GroupRecord } from "../DatabaseServices/GroupTableRecord"; import { HardwareCompositeEntity } from "../DatabaseServices/Hardware/HardwareCompositeEntity"; import { HardwareTopline } from "../DatabaseServices/Hardware/HardwareTopline"; import { Shape } from "../DatabaseServices/Shape"; +import { ParseBoardSideFace } from "../Geometry/DrillParse/BoardGetFace"; import { CanDrawHoleFuzz } from "../Geometry/DrillParse/CanDrawHoleFuzz"; -import { ParseBoardSideFace } from "../Geometry/DrillParse/ParseBoardSideFace"; import { AsVector2, IsBetweenA2B, MoveMatrix, XAxis, angle, angleTo, equaln, equalv2, equalv3, isIntersect2, isParallelTo, isPerpendicularityTo } from "../Geometry/GeUtils"; import { BrSealedData, GetSealedBoardContour } from "../GraphicsSystem/CalcEdgeSealing"; import { FeedingToolPath, GetModelingFromCustomDrill } from "../GraphicsSystem/ToolPath/FeedingToolPath";