diff --git a/src/Production/Product.ts b/src/Production/Product.ts index 6a70d4c32..af8ded0ba 100644 --- a/src/Production/Product.ts +++ b/src/Production/Product.ts @@ -504,6 +504,12 @@ export namespace Production let cus = br.SweepVisibleFace === FaceDirection.Front ? ArcBoardBuild.SweepCurves2 : ArcBoardBuild.SweepCurves1; let brBoxSize = br.Shape.Outline.Curve.Clone().ApplyMatrix(ArcBoardBuild.Rotate2OCSMtx).BoundingBox.getSize(new Vector3); + if (br.SweepAngle) + { + let extrude = Board.CreateBoard(brBoxSize.y, brBoxSize.x, 1); + sealedContour = extrude.ContourCurve; + } + let currentLength = 0; for (let cu of cus) { @@ -522,11 +528,8 @@ export namespace Production let ocs = br.OCS; if (br.SweepAngle) - { ocs.multiply(ArcBoardBuild.Rotate2OCSMtx); - let extrude = Board.CreateBoard(brBoxSize.y, cu.Length, 1); - sealedContour = extrude.ContourCurve; - } + ocs.multiply(m.setPosition(cu.StartPoint.clone().applyMatrix4(new Matrix4().makeRotationX(Math.PI / 2)))); for (let [, driss] of br.DrillList) @@ -688,6 +691,10 @@ export namespace Production { addPos = cyHole["__CacheAddPos__"]; let ocs = cyHole["__CacheBrOCS__"]; + + cyHole["__CacheAddPos__"] = undefined; + cyHole["__CacheBrOCS__"] = undefined; + if (!ocs || !addPos) return; else @@ -721,8 +728,8 @@ export namespace Production { if (isParallelTo(cyHole.Normal, brNormal, CanDrawHoleFuzz)) { - if (!IsBetweenA2B(position.x, -cyHole.Radius, br.Width + cyHole.Radius, 1e-6) - || !IsBetweenA2B(position.y, -cyHole.Radius, br.Height + cyHole.Radius, 1e-6) + if (!IsBetweenA2B(position.x, -cyHole.Radius, outlineWidth + cyHole.Radius, 1e-6) + || !IsBetweenA2B(position.y, -cyHole.Radius, outlineHeight + cyHole.Radius, 1e-6) || !HoleInBoard(position.clone().setZ(0), cyHole.Radius, outline, cyHole.AllowPxl)) return; position.sub(offsetTanslation); @@ -841,9 +848,6 @@ export namespace Production position.applyMatrix4(ocsInv); endPt?.applyMatrix4(ocsInv); } - - cyHole["__CacheAddPos__"] = undefined; - cyHole["__CacheBrOCS__"] = undefined; } holes.push({