添加闭合曲线测试

pull/68/head
Zoe 6 years ago
parent 9d747fe8ca
commit dad4f5e7a4

@ -55,6 +55,8 @@ test('IKKGK圆与直线补圆弧', () =>
cus = pl.GetOffsetCurves(-1.926388985025112);
EntityToMatchSnapshot(cus);
});
describe("闭合多段线", () =>
{
test('闭合多段线偏移测试1', () =>
{
@ -268,10 +270,17 @@ test('闭合多段线偏移测试9', () =>
[1, ["Polyline", 1, 1, 12283, false, 2, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2494.1602062139054, -154.37421492307953, 0, 1], 2, 4, [-835.9056689963722, -81.71614968554674], -1.404257507243489, [-2.5205246091134654, -224.3682931983378], -0.7704346688180675, [-677.9527382520764, -55.635630094036955], 0, [-835.9056689963722, -81.71614968554674], 0, false]];
let cus = loadFile(data);
//外偏移 -
//内偏移+
for (let i = -350; i <= 350; i += 50)
{
if (i === 0) continue;
expect(cus[0].GetOffsetCurves(i).length).toBe(1);
}
expect(cus[0].GetOffsetCurves(360).length).toBe(0);
for (let i = 360; i <= 460; i += 50)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(0);
}
})
test('闭合多段线偏移测试10', () =>
{
@ -371,27 +380,70 @@ test('闭合多段线偏移测试14', () =>
[1, ["Polyline", 1, 1, 1625, false, 7, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 14, [340.820007357324, -3.870032999900914], 0, [431.6163856609081, 116.2815653567217], 0, [485.54806901416487, 54.84040710617603], 0, [533.3356365423672, 67.81131829240235], 0, [624.1320148459513, 40.504136847715344], 0, [656.9006325795757, 23.43714844478601], -0.783383849320176, [633.0068488154745, -74.86870475608706], 0.4462700081240285, [605.0169878346704, -106.27196341747704], -0.8416099256631104, [529.9222388617812, -128.11770857322662], 0, [510.1245323143834, -22.98506001118185], 0, [430.251026588674, -129.48306764546098], 0, [430.251026588674, -65.99387078656383], 0, [351.74287993519897, -145.86737651227318], 0, [303.2726328708796, -87.83961594231337], 0, true]];
let cus = loadFile(data);
//外偏移 -
for (let i = 0.5; i <= 2; i += 0.5)
for (let i = 10; i <= 90; i += 10)
{
// expect(cus[0].GetOffsetCurves(-i).length).toBe(1);
expect(cus[0].GetOffsetCurves(-i).length).toBe(1);
}
//内偏移+
// expect(cus[0].GetOffsetCurves(1).length).toBe(1);
// expect(cus[0].GetOffsetCurves(1.2).length).toBe(3);
})
test('提前丢失所有的线段', () =>
for (let i = 5; i <= 25; i += 10)
{
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;
expect(cus[0].GetOffsetCurves(i).length).toBe(1);
}
expect(cus[0].GetOffsetCurves(26.5).length).toBe(2);
expect(cus[0].GetOffsetCurves(36).length).toBe(2);
expect(cus[0].GetOffsetCurves(36.1).length).toBe(3);
expect(cus[0].GetOffsetCurves(45).length).toBe(2);
expect(cus[0].GetOffsetCurves(60).length).toBe(1);
for (let i = 71; i <= 101; i += 10)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(0);
}
let cus = pl.GetOffsetCurves(-7.155086190577401);
})
test('闭合多段线偏移测试15', () =>
{
let data =
[1, ["Polyline", 1, 1, 394, false, 7, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 8, [-3.096429035694039, 1.977370035127478], 0, [2.646251476487261, 5.186031066288948], -0.5113280232193118, [8.158566581303122, 2.619102241359773], 0.23700604598013766, [11.103952861189804, -1.2148363240793185], -1.4842976346055852, [7.994019861756378, -4.028585228328609], 0.5402454464135219, [3.1398916351274853, -2.8932128634560885], -1.0879771453350477, [1.4615150957507161, -0.803469525212464], -0.082022192610066, [-3.096429035694039, 1.977370035127478], 0, true]];
let cus = loadFile(data);
//外偏移 -
for (let i = 0.5; i <= 5.5; i += 1)
{
expect(cus[0].GetOffsetCurves(-i).length).toBe(1);
}
//内偏移+
for (let i = 0.1; i <= 1.8; i += 0.3)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(1);
}
expect(cus.length).toBe(0);
});
for (let i = 1.9; i <= 2.2; i += 0.05)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(2);
}
for (let i = 2.3; i <= 3.7; i += 0.2)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(1);
}
for (let i = 3.9; i <= 6.9; i += 0.5)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(0);
}
})
test('闭合多段线偏移测试16', () =>
{
let data =
[1, ["Polyline", 1, 1, 4, false, 7, -1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 5, [-6.203966005665723, -0.056657223796033884], 0, [-1.8834846458923415, -0.923353563739375], -1.4125691360015384, [-1.9069913201133035, -1.5932937790368253], 0, [-6.189801699716714, -2.2096317280453257], -2.3881275241710798, [-6.203966005665723, -0.056657223796033884], 0, true]];
let cus = loadFile(data);
//外偏移 -
//内偏移+
for (let i = -1.5; i <= 1.5; i += 0.2)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(1);
}
expect(cus[0].GetOffsetCurves(1.6).length).toBe(0);
for (let i = 1.6; i <= 4.6; i++)
{
expect(cus[0].GetOffsetCurves(i).length).toBe(0);
}
})
})

@ -12,7 +12,7 @@ import { equal, equaln } from "../Geometry/GeUtils";
import { EBox, SortEntityByBox } from "../Geometry/SortEntityByBox";
import { IsPtsAllOutOrOnReg } from "./BoolOperateUtils";
import { IntersectOption } from "./IntersectWith";
import { testContours } from "../Add-on/testEntity/TestCurve";
import { testContours, testCurve } from "../Add-on/testEntity/TestCurve";
interface offestRes
{
@ -430,11 +430,16 @@ export class PolyOffestUtil
if (index === endIndex) break;
}
//如果和第二个圆(消失圆弧终点构建圆)相交,则直接连接,否则从第一个圆开始,圆数量要大于1
let iPts = cirs.length > 1 ? frontLine.IntersectWith(cirs[1], 0) : [];
if (iPts.length === 0)
{
let dist = frontLine.EndPoint.distanceToSquared(cirs[0].Center);
if (equaln(dist, this.m_dist2))
{
iPts = [frontLine.EndPoint];
}
else
iPts = frontLine.IntersectWith(cirs[0], 0);
}
else

Loading…
Cancel
Save