diff --git a/__test__/Polyline/offset.test.ts b/__test__/Polyline/offset.test.ts index 04fbc275f..7e2e396f3 100644 --- a/__test__/Polyline/offset.test.ts +++ b/__test__/Polyline/offset.test.ts @@ -379,3 +379,19 @@ test('闭合多段线偏移测试14', () => // expect(cus[0].GetOffsetCurves(1).length).toBe(1); // 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); +}); diff --git a/src/GraphicsSystem/OffestPolyline.ts b/src/GraphicsSystem/OffestPolyline.ts index 863ef170f..aceae8082 100644 --- a/src/GraphicsSystem/OffestPolyline.ts +++ b/src/GraphicsSystem/OffestPolyline.ts @@ -224,7 +224,10 @@ export class PolyOffestUtil arrayRemoveIf(offResList, r => !r.curve || equaln(r.curve.Length, 0, 1e-6)); if (offResList.length <= 1) + { this.m_RetCurves = offResList.map(r => r.curve); + return; + } //下一线段起始点 let nextStartPt: Vector3 = offResList[0].curve.StartPoint;