!1261 修复:原始轮廓和扣封边轮廓起点不对应问题

pull/1261/MERGE
ZoeLeeFZ 4 years ago committed by ChenX
parent 4964052565
commit 70138808bf

@ -8,11 +8,11 @@ exports[`切割残留一个封边厚度的凸角的板件封边 1`] = `30420`;
exports[`切割残留一个封边厚度的凸角的板件封边 2`] = `30420`; exports[`切割残留一个封边厚度的凸角的板件封边 2`] = `30420`;
exports[`封边错误板件 1`] = `130118.4094685434`; exports[`封边错误板件 1`] = `130118.40946854133`;
exports[`封边错误板件2 1`] = `779770.9650700318`; exports[`封边错误板件2 1`] = `779770.9650700318`;
exports[`封边错误板件3 1`] = `359947.9512754363`; exports[`封边错误板件3 1`] = `359947.9362569036`;
exports[`封边错误板件4 1`] = `30748.998596293524`; exports[`封边错误板件4 1`] = `30748.998596293524`;
@ -42,4 +42,4 @@ exports[`异型板件,非相切圆弧 1`] = `635612.2751433642`;
exports[`异型板件,非相切圆弧 2`] = `626242.2196800549`; exports[`异型板件,非相切圆弧 2`] = `626242.2196800549`;
exports[`椭圆弧封边 1`] = `23816.280001572693`; exports[`椭圆弧封边 1`] = `23816.280001593965`;

@ -1019,6 +1019,47 @@ export class Polyline extends Curve
return pl; return pl;
} }
/**首尾相连的曲线直接连接 */
static FastCombine(curves: Curve[], tolerance = 1e-5): Polyline | undefined
{
if (!curves || curves.length === 0) return;
let pl = new Polyline;
pl.OCS = ComputerCurvesNormalOCS(curves);
let ocsInv = pl.OCSInv;
let lineData: PolylineProps[] = [];
for (let i = 0; i < curves.length; i++)
{
let cu = curves[i];
let bul = 0;
if (cu instanceof Arc)
bul = cu.Bul;
lineData.push({
pt: AsVector2(cu.StartPoint.applyMatrix4(ocsInv)),
bul
});
if (i === curves.length - 1)
{
lineData.push({
pt: AsVector2(cu.EndPoint.applyMatrix4(ocsInv)),
bul: 0
});
}
}
if (lineData.length > 1)
{
let ld = arrayLast(lineData).pt;
if (equalv2(lineData[0].pt, ld, tolerance))
ld.copy(lineData[0].pt);
}
pl.LineData = lineData;
return pl;
}
PtOnCurve(pt: Vector3): boolean PtOnCurve(pt: Vector3): boolean
{ {

@ -333,7 +333,7 @@ export function GetSealedBoardContour(br: Board, hasSealing: boolean): Polyline
return offsetCus[0] as Circle; return offsetCus[0] as Circle;
if (!CalcEdgeSealing(offsetCus)) return; if (!CalcEdgeSealing(offsetCus)) return;
let pl = Polyline.Combine(offsetCus, LINK_FUZZ); let pl = Polyline.FastCombine(offsetCus, LINK_FUZZ);
if (dir < 0) if (dir < 0)
pl.Reverse(); pl.Reverse();
return pl; return pl;

@ -513,7 +513,7 @@ export namespace Production
} }
let cus = con.Explode(); let cus = con.Explode();
MergeCurvelist(cus); MergeCurvelist(cus);
let pl = Polyline.Combine(cus, LINK_FUZZ); let pl = Polyline.FastCombine(cus, LINK_FUZZ);
if (isSplite && pl.Area2 < 0) if (isSplite && pl.Area2 < 0)
pl.Reverse(); pl.Reverse();
return pl; return pl;

Loading…
Cancel
Save