修正当线段丢失的时候,越界访问

pull/68/head
ChenX 6 years ago
parent 2f34bf9e54
commit 9d747fe8ca

@ -379,3 +379,19 @@ test('闭合多段线偏移测试14', () =>
// expect(cus[0].GetOffsetCurves(1).length).toBe(1); // expect(cus[0].GetOffsetCurves(1).length).toBe(1);
// expect(cus[0].GetOffsetCurves(1.2).length).toBe(3); // expect(cus[0].GetOffsetCurves(1.2).length).toBe(3);
}) })
test('提前丢失所有的线段', () =>
{
let f = new CADFile();
f.Data =
[1, ["Polyline", 1, 1, 12, false, 7, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -17.386067452264705, 17.11283965241085, 0, 1], 2, 3, [108.37693694676932, 28.257776463252547], 0.4472440944881872, [108.37693694676932, 17.68555707305448], 3.5940684866260213, [111.70676982557188, 14.089337563947739], 0.5086040192926764, false]];
f.Read();
let pl = f.ReadObject() as Polyline;
let cus = pl.GetOffsetCurves(-7.155086190577401);
expect(cus.length).toBe(0);
});

@ -224,7 +224,10 @@ export class PolyOffestUtil
arrayRemoveIf(offResList, r => !r.curve || equaln(r.curve.Length, 0, 1e-6)); arrayRemoveIf(offResList, r => !r.curve || equaln(r.curve.Length, 0, 1e-6));
if (offResList.length <= 1) if (offResList.length <= 1)
{
this.m_RetCurves = offResList.map(r => r.curve); this.m_RetCurves = offResList.map(r => r.curve);
return;
}
//下一线段起始点 //下一线段起始点
let nextStartPt: Vector3 = offResList[0].curve.StartPoint; let nextStartPt: Vector3 = offResList[0].curve.StartPoint;

Loading…
Cancel
Save