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__/Sweep/SweepGripAndStrench.test.ts

69 lines
16 KiB

import { Vector3 } from "three";
import { HardwareTopline } from "../../src/DatabaseServices/Hardware/HardwareTopline";
import { LoadEntityFromFileData } from "../Utils/LoadEntity.util";
describe("三维扫掠夹点拉伸及拖拽", () =>
{
test("连接点拖拽", () =>
{
let data = { "file": [1, "HardwareTopline", 10, 2, 289, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 2, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, 2, 12, [1691.4177159478995, 702.8822712717154], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1746.210156625953, 710.970458694799], 0, [1775.6109646391687, 681.5696506815787], 0, [1811.5243923180442, 717.4830783604598], 0, [1851.9100343613813, 677.0974363171161], 0, [1851.9100343613813, 677.0974363171161], 0, [1900.5427993008007, 725.7302012565432], 0, [1799.7364779468508, 826.5365226105092], 0, [1691.4177159478995, 702.8822712717154], 0, false, 2, "Polyline", 10, 2, 0, 0, 1, 7, 71, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1756.7709279402495, 0, 0, 1], 0, 0, 1, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1756.7709279402495, 0, 0, 1], 0, 0, 1, 2, 4, [0, -1759.3364756864237], 0, [2540.6486638849437, -1754.5919838318846], 0, [2646.5114137277756, 2782.5795590546654], 0, [0, 2676.716809211834], 0, false, "Polyline", 10, 2, 0, 0, 1, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 2, 4, [1756.7709279402495, 2676.716809211834], 0, [-1452.394394942868, 2676.716809211834], 0, [-1452.394394942868, -1759.3364756864237], 0, [1756.7709279402495, -1759.3364756864237], 0, false, 1, 0, "0", "2", "", "", "", "", "", "", "", "", "", 0], "basePt": { "x": -1558.2571447857001, "y": -2754.976206098365, "z": -1865.1992255292557 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let en = LoadEntityFromFileData(data)[0] as HardwareTopline;
en.MoveGripPoints([6, 7], new Vector3(0, 3000, 3000));
const pathGripPts = en.GetGripPoints();
for (let pt of pathGripPts)
expect(pt).toMatchSnapshot();
});
test("中间点拖拽", () =>
{
let data = { "file": [1, "HardwareTopline", 10, 2, 289, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 2, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, 2, 12, [1691.4177159478995, 702.8822712717154], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1746.210156625953, 710.970458694799], 0, [1775.6109646391687, 681.5696506815787], 0, [1811.5243923180442, 717.4830783604598], 0, [1851.9100343613813, 677.0974363171161], 0, [1851.9100343613813, 677.0974363171161], 0, [1900.5427993008007, 725.7302012565432], 0, [1799.7364779468508, 826.5365226105092], 0, [1691.4177159478995, 702.8822712717154], 0, false, 2, "Polyline", 10, 2, 0, 0, 1, 7, 71, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1756.7709279402495, 0, 0, 1], 0, 0, 1, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1756.7709279402495, 0, 0, 1], 0, 0, 1, 2, 4, [0, -1759.3364756864237], 0, [2540.6486638849437, -1754.5919838318846], 0, [2646.5114137277756, 2782.5795590546654], 0, [0, 2676.716809211834], 0, false, "Polyline", 10, 2, 0, 0, 1, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 2, 4, [1756.7709279402495, 2676.716809211834], 0, [-1452.394394942868, 2676.716809211834], 0, [-1452.394394942868, -1759.3364756864237], 0, [1756.7709279402495, -1759.3364756864237], 0, false, 1, 0, "0", "2", "", "", "", "", "", "", "", "", "", 0], "basePt": { "x": -1558.2571447857001, "y": -2754.976206098365, "z": -1865.1992255292557 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let en = LoadEntityFromFileData(data)[0] as HardwareTopline;
en.MoveGripPoints([5], new Vector3(0, 0, 2500));
const pathGripPts = en.GetGripPoints();
for (let pt of pathGripPts)
expect(pt).toMatchSnapshot();
});
test("三线段连接点拖拽", () =>
{
let data = { "file": [1, "HardwareTopline", 10, 2, 290, 0, 1, 7, 71, [0.08710264982404563, -0.995587843197948, -0.03489949670250097, 0, 0.9961946980917455, 0.08715574274765814, 0, 0, 0.003041691556625918, -0.03476669358110182, 0.9993908270190958, 0, 4585.502577142352, -3723.710151480106, 2182.6332735674614, 1], 0, 0, 1, [0.08710264982404563, -0.995587843197948, -0.03489949670250097, 0, 0.9961946980917455, 0.08715574274765814, 0, 0, 0.003041691556625918, -0.03476669358110182, 0.9993908270190958, 0, 4585.502577142352, -3723.710151480106, 2182.6332735674614, 1], 0, 0, 1, 2, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, 2, 12, [1691.4177159478995, 702.8822712717154], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1746.210156625953, 710.970458694799], 0, [1775.6109646391687, 681.5696506815787], 0, [1811.5243923180442, 717.4830783604598], 0, [1851.9100343613813, 677.0974363171161], 0, [1851.9100343613813, 677.0974363171161], 0, [1900.5427993008007, 725.7302012565432], 0, [1799.7364779468508, 826.5365226105092], 0, [1691.4177159478995, 702.8822712717154], 0, false, 4, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 2, 4, [2079.4342344794095, 1585.0706627478594], 0, [5161.537758750944, 1369.5366844918453], 0, [5161.537758750944, -1871.4511341125599], 0, [2317.886631016043, -1896.850481283555], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, 2, 2, [1830.4094117647062, -3266.3871657754003], 0, [0, -3266.3871657754003], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [0, -1, 0, 0, 1.2246467991473532e-16, 0, -1, 0, 1, 0, 1.2246467991473532e-16, 0, 487.47721925133686, 0, -1896.850481283555, 1], 0, 0, 1, [0, -1, 0, 0, 1.2246467991473532e-16, 0, -1, 0, 1, 0, 1.2246467991473532e-16, 0, 487.47721925133686, 0, -1896.850481283555, 1], 0, 0, 1, 2, 4, [0, 0], 0, [2374.4326701394516, 0], 0, [2374.4326701394516, -3259.051966436142], 0, [0, -3740.6774573715625], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, 2, 2, [-5.808380874699053e-14, 474.29029159616266], 0, [1591.957015228073, 215.53397825601405], 0, false, 1, 0, "0", "2", "", "", "", "", "", "", "", "", "", 0], "basePt": { "x": 2147.057632809272, "y": -9249.31319428957, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let en = LoadEntityFromFileData(data)[0] as HardwareTopline;
en.MoveGripPoints([9, 10], new Vector3(70, -800, 2000));
const pathGripPts = en.GetGripPoints();
for (let pt of pathGripPts)
expect(pt).toMatchSnapshot();
});
test("三线段中间点拖拽", () =>
{
let data = { "file": [1, "HardwareTopline", 10, 2, 290, 0, 1, 7, 71, [0.08710264982404563, -0.995587843197948, -0.03489949670250097, 0, 0.9961946980917455, 0.08715574274765814, 0, 0, 0.003041691556625918, -0.03476669358110182, 0.9993908270190958, 0, 4585.502577142352, -3723.710151480106, 2182.6332735674614, 1], 0, 0, 1, [0.08710264982404563, -0.995587843197948, -0.03489949670250097, 0, 0.9961946980917455, 0.08715574274765814, 0, 0, 0.003041691556625918, -0.03476669358110182, 0.9993908270190958, 0, 4585.502577142352, -3723.710151480106, 2182.6332735674614, 1], 0, 0, 1, 2, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, 2, 12, [1691.4177159478995, 702.8822712717154], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1746.210156625953, 710.970458694799], 0, [1775.6109646391687, 681.5696506815787], 0, [1811.5243923180442, 717.4830783604598], 0, [1851.9100343613813, 677.0974363171161], 0, [1851.9100343613813, 677.0974363171161], 0, [1900.5427993008007, 725.7302012565432], 0, [1799.7364779468508, 826.5365226105092], 0, [1691.4177159478995, 702.8822712717154], 0, false, 4, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 2, 4, [2079.4342344794095, 1585.0706627478594], 0, [5161.537758750944, 1369.5366844918453], 0, [5161.537758750944, -1871.4511341125599], 0, [2317.886631016043, -1896.850481283555], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, 2, 2, [1830.4094117647062, -3266.3871657754003], 0, [0, -3266.3871657754003], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [0, -1, 0, 0, 1.2246467991473532e-16, 0, -1, 0, 1, 0, 1.2246467991473532e-16, 0, 487.47721925133686, 0, -1896.850481283555, 1], 0, 0, 1, [0, -1, 0, 0, 1.2246467991473532e-16, 0, -1, 0, 1, 0, 1.2246467991473532e-16, 0, 487.47721925133686, 0, -1896.850481283555, 1], 0, 0, 1, 2, 4, [0, 0], 0, [2374.4326701394516, 0], 0, [2374.4326701394516, -3259.051966436142], 0, [0, -3740.6774573715625], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, 2, 2, [-5.808380874699053e-14, 474.29029159616266], 0, [1591.957015228073, 215.53397825601405], 0, false, 1, 0, "0", "2", "", "", "", "", "", "", "", "", "", 0], "basePt": { "x": 2147.057632809272, "y": -9249.31319428957, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let en = LoadEntityFromFileData(data)[0] as HardwareTopline;
en.MoveGripPoints([18], new Vector3(10, -1000, 2500));
const pathGripPts = en.GetGripPoints();
for (let pt of pathGripPts)
expect(pt).toMatchSnapshot();
});
test("二线段拉伸", () =>
{
let data = { "file": [1, "HardwareTopline", 10, 2, 289, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 2, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, 2, 12, [1691.4177159478995, 702.8822712717154], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1746.210156625953, 710.970458694799], 0, [1775.6109646391687, 681.5696506815787], 0, [1811.5243923180442, 717.4830783604598], 0, [1851.9100343613813, 677.0974363171161], 0, [1851.9100343613813, 677.0974363171161], 0, [1900.5427993008007, 725.7302012565432], 0, [1799.7364779468508, 826.5365226105092], 0, [1691.4177159478995, 702.8822712717154], 0, false, 2, "Polyline", 10, 2, 0, 0, 1, 7, 71, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1756.7709279402495, 0, 0, 1], 0, 0, 1, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1756.7709279402495, 0, 0, 1], 0, 0, 1, 2, 4, [0, -1759.3364756864237], 0, [2540.6486638849437, -1754.5919838318846], 0, [2646.5114137277756, 2782.5795590546654], 0, [0, 2676.716809211834], 0, false, "Polyline", 10, 2, 0, 0, 1, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 2, 4, [1756.7709279402495, 2676.716809211834], 0, [-1452.394394942868, 2676.716809211834], 0, [-1452.394394942868, -1759.3364756864237], 0, [1756.7709279402495, -1759.3364756864237], 0, false, 1, 0, "0", "2", "", "", "", "", "", "", "", "", "", 0], "basePt": { "x": -1558.2571447857001, "y": -2754.976206098365, "z": -1865.1992255292557 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let en = LoadEntityFromFileData(data)[0] as HardwareTopline;
en.MoveStretchPoints([6, 5], new Vector3(-2500, 0, 0));
const pathGripPts = en.GetStretchPoints();
for (let pt of pathGripPts)
expect(pt).toMatchSnapshot();
});
test("三线段拉伸", () =>
{
let data = { "file": [1, "HardwareTopline", 10, 2, 290, 0, 1, 7, 71, [0.08710264982404563, -0.995587843197948, -0.03489949670250097, 0, 0.9961946980917455, 0.08715574274765814, 0, 0, 0.003041691556625918, -0.03476669358110182, 0.9993908270190958, 0, 4585.502577142352, -3723.710151480106, 2182.6332735674614, 1], 0, 0, 1, [0.08710264982404563, -0.995587843197948, -0.03489949670250097, 0, 0.9961946980917455, 0.08715574274765814, 0, 0, 0.003041691556625918, -0.03476669358110182, 0.9993908270190958, 0, 4585.502577142352, -3723.710151480106, 2182.6332735674614, 1], 0, 0, 1, 2, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1794.6800494579688, -752.3551866479207, 0, 1], 0, 0, 1, 2, 12, [1691.4177159478995, 702.8822712717154], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1714.7698425753852, 679.5301446442261], 0, [1746.210156625953, 710.970458694799], 0, [1775.6109646391687, 681.5696506815787], 0, [1811.5243923180442, 717.4830783604598], 0, [1851.9100343613813, 677.0974363171161], 0, [1851.9100343613813, 677.0974363171161], 0, [1900.5427993008007, 725.7302012565432], 0, [1799.7364779468508, 826.5365226105092], 0, [1691.4177159478995, 702.8822712717154], 0, false, 4, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 2, 4, [2079.4342344794095, 1585.0706627478594], 0, [5161.537758750944, 1369.5366844918453], 0, [5161.537758750944, -1871.4511341125599], 0, [2317.886631016043, -1896.850481283555], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, 2, 2, [1830.4094117647062, -3266.3871657754003], 0, [0, -3266.3871657754003], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [0, -1, 0, 0, 1.2246467991473532e-16, 0, -1, 0, 1, 0, 1.2246467991473532e-16, 0, 487.47721925133686, 0, -1896.850481283555, 1], 0, 0, 1, [0, -1, 0, 0, 1.2246467991473532e-16, 0, -1, 0, 1, 0, 1.2246467991473532e-16, 0, 487.47721925133686, 0, -1896.850481283555, 1], 0, 0, 1, 2, 4, [0, 0], 0, [2374.4326701394516, 0], 0, [2374.4326701394516, -3259.051966436142], 0, [0, -3740.6774573715625], 0, false, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 487.4772192513367, 0, 1369.5366844918453, 1], 0, 0, 1, 2, 2, [-5.808380874699053e-14, 474.29029159616266], 0, [1591.957015228073, 215.53397825601405], 0, false, 1, 0, "0", "2", "", "", "", "", "", "", "", "", "", 0], "basePt": { "x": 2147.057632809272, "y": -9249.31319428957, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let en = LoadEntityFromFileData(data)[0] as HardwareTopline;
en.MoveStretchPoints([11, 10, 9, 8, 1, 0], new Vector3(0, 0, 2000));
const pathGripPts = en.GetStretchPoints();
for (let pt of pathGripPts)
expect(pt).toMatchSnapshot();
});
});