From ed0321905812b90f56453acc3e8ac6ae2fe0adaf Mon Sep 17 00:00:00 2001 From: ChenX Date: Wed, 11 Sep 2024 15:38:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=E4=BD=99=E6=96=99=E5=88=86?= =?UTF-8?q?=E6=9E=90=E7=BB=93=E6=9E=9C=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Nest/Core/ParseOddments.ts | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Nest/Core/ParseOddments.ts b/src/Nest/Core/ParseOddments.ts index 214b32c56..5503068ac 100644 --- a/src/Nest/Core/ParseOddments.ts +++ b/src/Nest/Core/ParseOddments.ts @@ -23,18 +23,21 @@ const CanPutPaths = [ */ export function ParseOddments(container: Container, binPath: Path, knifeRadius: number = 3.5, squarePath: Path = SquarePath, canPutPaths: Path[] = CanPutPaths): Path[] { - //构建轮廓数据 - let partPaths: ClipInput[] = container.PlacedParts.map(part => + let partPaths: ClipInput[] = []; + for (let part of container.PlacedParts) { - //直接在这里偏移,而不缓存,应该没有性能问题 - let newPts = clipperCpp.lib.offsetToPaths({ + //外偏移一个刀半径 + let offsetPathArray = clipperCpp.lib.offsetToPaths({ delta: knifeRadius * 1e4, offsetInputs: [{ data: part.State.Contour.BigIntPoints, joinType: JoinType.Miter, endType: EndType.ClosedPolygon }] - })[0]; + }); - let path = PathTranslate(newPts, { x: part.PlacePosition.x - 5e3, y: part.PlacePosition.y - 5e3 });//因为移动了0.5,0.5,所以这里也要移动0.5 - return { data: path }; - }); + for (let path of offsetPathArray) + { + let movePath = PathTranslate(path, { x: part.PlacePosition.x - 5e3, y: part.PlacePosition.y - 5e3 });//因为移动了0.5,0.5,所以这里也要移动0.5 + partPaths.push({ data: movePath }); + } + } //所有的余料(使用布尔差集) let oddmentsPolygon = clipperCpp.lib.clipToPolyTree({