diff --git a/__test__/Polyline/__snapshots__/offset.test.ts.snap b/__test__/Polyline/__snapshots__/offset.test.ts.snap index 945e1a284..f02659407 100644 --- a/__test__/Polyline/__snapshots__/offset.test.ts.snap +++ b/__test__/Polyline/__snapshots__/offset.test.ts.snap @@ -152,3 +152,304 @@ Array [ ], ] `; + +exports[`中间区域需要圆裁剪 1`] = ` +Array [ + 8, + Array [ + "Polyline", + 1, + 1, + -1, + false, + 7, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + ], + 2, + 2, + Array [ + -1266.7406897021474, + -691.805675613746, + ], + 0, + Array [ + -1243.4652905261744, + -700.1065279590455, + ], + 0, + false, + ], + Array [ + "Polyline", + 1, + 1, + -1, + false, + 2, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + ], + 2, + 5, + Array [ + -1278.6992002366314, + -725.3370642786467, + ], + 0, + Array [ + -1241.3563766124655, + -738.6548708914224, + ], + 0, + Array [ + -1233.6700445337992, + -703.5998682903481, + ], + 0, + Array [ + -1266.7406897021474, + -691.805675613746, + ], + 0, + Array [ + -1278.6992002366314, + -725.3370642786467, + ], + 0, + false, + ], + Array [ + "Polyline", + 1, + 1, + -1, + false, + 2, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + ], + 2, + 5, + Array [ + -1235.7901881836015, + -739.1366800621489, + ], + 0, + Array [ + -1221.9838469756232, + -728.4950394202735, + ], + 0, + Array [ + -1243.7169693496471, + -700.2987383884769, + ], + 0, + Array [ + -1257.5233105576253, + -710.9403790303522, + ], + 0, + Array [ + -1235.7901881836015, + -739.1366800621489, + ], + 0, + false, + ], + Array [ + "Circle", + 1, + 1, + -1, + false, + 2, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + -1278.6992002366314, + -725.3370642786467, + 0, + 1, + ], + 1, + 35.6, + ], + Array [ + "Circle", + 1, + 1, + -1, + false, + 2, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + -1241.3563766124655, + -738.6548708914224, + 0, + 1, + ], + 1, + 35.6, + ], + Array [ + "Circle", + 1, + 1, + -1, + false, + 2, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + -1235.7901881836015, + -739.1366800621489, + 0, + 1, + ], + 1, + 35.6, + ], + Array [ + "Circle", + 1, + 1, + -1, + false, + 2, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + -1221.9838469756232, + -728.4950394202735, + 0, + 1, + ], + 1, + 35.6, + ], + Array [ + "Circle", + 1, + 1, + -1, + false, + 2, + -1, + Array [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + -1198.3915503428952, + -730.521482183179, + 0, + 1, + ], + 1, + 35.6, + ], +] +`; diff --git a/__test__/Polyline/offset.test.ts b/__test__/Polyline/offset.test.ts index 604543f3d..a2ae0e8f0 100644 --- a/__test__/Polyline/offset.test.ts +++ b/__test__/Polyline/offset.test.ts @@ -681,3 +681,37 @@ describe("不规则不闭合多段线测试", () => } }) }) + + +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); +}); + + +test('中间区域需要圆裁剪', () => +{ + let f = new CADFile(); + + f.Data = + [2, ["Polyline", 1, 1, 3, false, 1, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1227.4248455167763, -753.9100675211082, 0, 1], 2, 5, [-51.274354719855246, 28.573003242461496], 0, [-13.931531095689206, 15.255196629685734], 3.7897716494829594, [-8.365342666825299, 14.77338745895928], 0, [5.4409985411529185, 25.415028100834675], 0.37399715496699776, [29.033295173881022, 23.38858533792915], 0, false], ["Polyline", 1, 1, 1060, false, 7, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 2, [-1266.7245873464547, -691.7605249785062], 0, [-1233.6603714182982, -703.5524247546464], 0, false]] + + f.Read(); + + let pl = f.ReadObject() as Polyline; + + let cus = pl.GetOffsetCurves(-35.6); + + EntityToMatchSnapshot(cus); +});