修复:更新testyh避免板件因为简化路径而导致的无法排下

pull/1370/MERGE
ChenX 4 years ago
parent 538173cd4d
commit cb606a3149

@ -95,7 +95,10 @@ export function ConverBoard2Part(board: Board, knifRadius = 3.5): Part
c.ApplyMatrix(new Matrix4().setPosition(box.min.negate()));
part.UserData = [c];
if (!board.IsSpecialShape)
{
path = NestCache.CreatePath(board.Width, board.Height, knifRadius);
part.Init2(path, DefaultBin, Rotations[board.BoardProcessOption.lines]);
}
else
{
let contour = board.ContourCurve;
@ -120,14 +123,24 @@ export function ConverBoard2Part(board: Board, knifRadius = 3.5): Part
arrayRemoveDuplicateBySort(pts, (p1, p2) => equalv2(p1, p2, 1e-2));
path = new Path(pts);
if (!(board.ContourCurve instanceof Circle))//如果是圆则不用优化成矩形
if (!(contour instanceof Circle))//如果是圆则不用优化成矩形
{
let area = path.BoundingBox.area - path.Area;
if (area < 15000 && pts.length > 6)
path = NestCache.CreatePath(board.Width, board.Height, knifRadius);
}
part.Init2(path, DefaultBin, Rotations[board.BoardProcessOption.lines]);
//如果不能放下,那么尝试不简化路径(避免轮廓变大)
if (!path.IsRect && !(contour instanceof Circle) && part.RotatedStates.length === 0)
{
pts = Polylin2Points(contour, true, knifRadius)[1];
arrayRemoveDuplicateBySort(pts, (p1, p2) => equalv2(p1, p2, 1e-2));
path = new Path(pts);
part.Init2(path, DefaultBin, Rotations[board.BoardProcessOption.lines]);
}
}
part.Init2(path, DefaultBin, Rotations[board.BoardProcessOption.lines]);
for (let m of board.BoardModeling)
{
if (equaln(m.thickness, board.Thickness))

Loading…
Cancel
Save