You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WebCAD/__test__/Polyline/join.test.ts

52 lines
2.3 KiB

import { LoadEntityFromFileData } from "../Utils/LoadEntity.util";
import { Polyline } from "../../src/DatabaseServices/Entity/Polyline";
import { equaln } from "../../src/Geometry/GeUtils";
import { Line } from "../../src/DatabaseServices/Entity/Line";
test('多段线与多段线Join', () =>
{
let data =
[2, "Polyline", 2, 1, 102, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 2, 4, [69.1964285714286, -106.02678571428574], 0, [-60.26785714285711, 58.03571428571427], 0.4847381535042383, [-241.07142857142856, 58.03571428571427], -1.124793513518748, [-340.9598214285714, 157.9241071428571], 0, false, "Polyline", 2, 1, 103, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 2, 4, [69.1964285714286, -106.02678571428574], 0, [181.36160714285717, 6.138392857142875], -0.7890083669838478, [389.50892857142867, -121.65178571428574], 1.286428411698261, [556.9196428571429, -132.81250000000003], 0, false];
let pls = LoadEntityFromFileData(data) as Polyline[];
let pl1 = pls[0].Clone();
let pl2 = pls[1].Clone();
let length = pl1.Length + pl2.Length;
//sp sp
expect(pl1.Join(pl2)).toBe(1);
expect(equaln(pl1.Length, length)).toBeTruthy();
pl1 = pls[0].Clone();
pl2 = pls[1].Clone();
pl2.Reverse();
//sp ep
expect(pl1.Join(pl2)).toBe(1);
expect(equaln(pl1.Length, length)).toBeTruthy();
pl1 = pls[0].Clone();
pl2 = pls[1].Clone();
pl1.Reverse();
//ep sp
expect(pl1.Join(pl2)).toBe(1);
expect(equaln(pl1.Length, length)).toBeTruthy();
pl1 = pls[0].Clone();
pl2 = pls[1].Clone();
pl1.Reverse();
pl2.Reverse();
//ep ep
expect(pl1.Join(pl2)).toBe(1);
expect(equaln(pl1.Length, length)).toBeTruthy();
});
test('一定精度容差内的直线Join', () =>
{
let data =
[2, "Line", 2, 1, 168, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -97.39422719143477, 40.30682517259278, 0, 1], 1, 1, [140.3943227792479, -100, 0], [314.3387826639938, -99.99999883531063, 0], "Line", 2, 1, 169, false, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -97.39422719143477, 40.30682517259278, 0, 1], 1, 1, [314.3387826639938, -99.99999883531063, 0], [318, -100, 0]];
let lines = LoadEntityFromFileData(data) as Line[];
expect(lines[0].Join(lines[1])).toBe(1);
});