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__/DTO/Board2CADViewer.test.ts

52 lines
16 KiB

import { Vector3 } from "three";
import { ErpParseData } from "../../src/Add-on/Erp/ParseData";
import { CADFiler } from "../../src/DatabaseServices/CADFiler";
import { LoadBoardsFromFileData } from "../Utils/LoadEntity.util";
test('板件到CADViewer', () =>
{
let d =
{ "file": [4, "Board", 5, 2, 101, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 578.7081339712918, 220.0956937799043, 0, 1], 0, 0, 2, 800, 582, 18, false, "Polyline", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1067.7357379169855, 971.8129079922719, 0, 1], 0, 0, 2, 24, [1164.6720034839952, -243.277917476808], 0, [1121.00372884482, -317.9365805695915], 0, [1211.1575861644, -408.090437889186], 0, [1067.7357379169855, -358.1241165642739], 0, [1067.7357379169855, -406.94264572423117], 0, [1158.3330603912116, -497.53996819845736], 0, [1067.7357379169855, -497.53996819845736], 0, [1067.7357379169855, -540.718942633777], 0, [1188.6191218345107, -581.3548824252614], 0, [1067.7357379169855, -646.0134366137052], 0, [1067.7357379169855, -706.1802774996197], 0, [1216.792202246882, -675.7347018067047], 0, [1067.7357379169855, -757.6804357511028], 0, [1067.7357379169855, -839.1385681984573], 0, [1190.0277758551292, -839.1385681984573], 0, [1067.7357379169855, -888.8844819360072], 0, [1067.7357379169855, -940.5616576829932], 0, [1153.402771319047, -940.5616576829932], 0, [1067.7357379169855, -953.2307260030163], 0, [1067.7357379169855, -971.8129079922719], 0, [1649.7357379169855, -971.8129079922719], 0, [1649.7357379169855, -171.8129079922719], 0, [1067.7357379169855, -171.8129079922719], 0, [1067.7357379169855, -187.43419926972626], 0, true, 3, 2, 179.17946854625225, 179.17946854625222, 10, false, "Circle", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 89.58973427312611, 89.58973427312613, 0, 1], 0, 0, 1, 89.58973427312613, 1, 2, 139.17946854625225, 139.17946854625222, 10, false, "Circle", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 69.58973427312611, 69.58973427312613, 0, 1], 0, 0, 1, 69.58973427312613, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 499.9143210279227, 465.4482044552313, 0, 1], 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 519.9143210279227, 445.4482044552313, 0, 1], 2, 800, 9, 10, true, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -553.0000000000002, 0, 0, 1], 0, 0, 2, 4, [562.0000000000002, 0], 0, [562.0000000000002, 800], 0, [553.0000000000002, 800], 0, [553.0000000000002, 0], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 578.7081339712915, 773.0956937799039, 8, 1], 2, 116.79966683283226, 116.79966683283226, 10, false, "Circle", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 58.39983341641613, 58.39983341641607, 0, 1], 0, 0, 1, 58.39983341641612, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 33.54710058358364, 574.8605795387455, 8, 1], 3, 0, 0, 0, 5, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 578.7081339712918, 220.0956937799043, 0, 1], 0, "底板", "", "", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 24, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, "Board", 5, 2, 101, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -100.91743119266054, 73.39449541284404, 0, 1], 0, 0, 2, 4408.678960586129, 4408.678960586129, 18, false, "Circle", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2204.3394802930643, 2204.3394802930643, 0, 1], 0, 0, 1, 2204.3394802930643, 4, 2, 633.2307692307686, 633.2307692307686, 5, false, "Circle", 5, 2, 0, false, 0, 4, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 316.6153846153843, 316.6153846153843, 0, 1], 0, 0, 1, 316.6153846153843, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -100.91743119266054, 2910.9647449366785, 1405.2625572161414, 1], 2, 557.8461538461524, 557.8461538461524, 5, false, "Circle", 5, 2, 0, false, 0, 3, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 278.9230769230762, 278.9230769230762, 0, 1], 0, 0, 1, 278.9230769230762, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -87.91743119266054, 3016.50320647514, 2257.1087110622957, 1], 2, 444.76923076923117, 686, 5, true, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2929.394495412844, -1758.4615384615392, 0, 1], 0, 0, 2, 4, [2929.394495412844, 1758.4615384615392], 0, [3615.394495412844, 1758.4615384615392], 0, [3615.394495412844, 2203.2307692307704], 0, [2929.394495412844, 2203.2307692307704], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -100.91743119266054, 1689.7339757059085, 1556.0317879853721, 1], 2, 625.6923076923076, 1349.3846153846157, 5, true, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2416.7791107974595, -2828.923076923078, 0, 1], 0, 0, 2, 4, [2416.7791107974595, 2828.923076923078], 0, [3766.163726182075, 2828.923076923078], 0, [3766.163726182075, 3454.6153846153857], 0, [2416.7791107974595, 3454.6153846153857], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -87.91743119266054, 1177.1185910905238, 2626.493326446911, 1], 3, 0, 0, 0, 5, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -100.91743119266054, 73.39449541284404, 0, 1], 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "123", 2, 0, "1", "1", "1", "1", "", "", "", 1, "123", true, true, 0, 0, 0, 0, 0, "Board", 5, 2, 102, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1081.0825688073396, 73.39449541284404, 0, 1], 0, 0, 2, 2000, 600, 18, true, "Polyline", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 2, 2, 144.00000000000023, 170.42201834862385, 5, true, "Polyline", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1810.3119266055044, -1946.2018348623849, 0, 1], 0, 0, 2, 4, [1810.3119266055044, 1946.2018348623849], 0, [1980.7339449541282, 1946.2018348623849], 0, [1980.7339449541282, 2090.201834862385], 0, [1810.3119266055044, 2090.201834862385], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1094.0825688073396, 288.2935779816515, 1001.247706422018, 1], 2, 189.0974955047293, 189.0974955047293, 18, false, "Circle", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 94.54874775236465, 94.54874775236476, 0, 1], 0, 0, 1, 94.54874775236466, 0, 3, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1081.0825688073396, 234.6989586696538, 1267.3595091283692, 1], 3, 0, 0, 0, 5, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1081.0825688073396, 73.39449541284404, 0, 1], 1, "右侧板", "主卧", "下柜", "", "", "", 0, 0, "123", 2, 0, "1", "1", "1", "1", "", "", "", 4, "123", "123", "123", "123", true, true, 0, 0, 0, 0, 0, "Board", 5, 2, 112, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1165.9726463403786, 6053.1586224684725, 0, 1], 0, 0, 2, 800, 582, 18, false, "Polyline", 5, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1067.7357379169855, 971.8129079922719, 0, 1], 0, 0, 2, 24, [1164.6720034839952, -243.277917476808], 0, [1121.00372884482, -317.9365805695915], 0, [1211.1575861644, -408.090437889186], 0, [1067.7357379169855, -358.1241165642739], 0, [1067.7357379169855, -406.94264572423117], 0, [1158.3330603912116, -497.53996819845736], 0, [1067.7357379169855, -497.53996819845736], 0, [1067.7357379169855, -540.718942633777], 0, [1188.6191218345107, -581.3548824252614], 0, [1067.7357379169855, -646.0134366137052], 0, [1067.7357379169855, -706.1802774996197], 0, [1216.792202246882, -675.7347018067047], 0, [1067.7357379169855, -757.6804357511028], 0, [1067.7357379169855, -839.1385681984573], 0, [1190.0277758551292, -839.1385681984573], 0, [1067.7357379169855, -888.8844819360072], 0, [1067.7357379169855, -940.5616576829932], 0, [1153.402771319047, -940.5616576829932], 0, [1067.7357379169855, -953.2307260030163], 0, [1067.7357379169855, -971.8129079922719], 0, [1649.7357379169855, -971.8129079922719], 0, [1649.7357379169855, -171.8129079922719], 0, [1067.7357379169855, -171.8129079922719], 0, [1067.7357379169855, -187.43419926972626], 0, true, 3, 2, 179.17946854625225, 179.17946854625222, 10, false, "Circle", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 89.58973427312611, 89.58973427312613, 0, 1], 0, 0, 1, 89.58973427312613, 1, 2, 139.17946854625225, 139.17946854625222, 10, false, "Circle", 5, 2, 0, false, 0, 2, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 69.58973427312611, 69.58973427312613, 0, 1], 0, 0, 1, 69.58973427312613, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1087.1788333970103, 6298.5111331438, 0, 1], 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1107.1788333970103, 6278.5111331438, 0, 1], 2, 800, 9, 10, true, "Polyline", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -553.0000000000002, 0, 0, 1], 0, 0, 2, 4, [562.0000000000002, 0], 0, [562.0000000000002, 800], 0, [553.0000000000002, 800], 0, [553.0000000000002, 0], 0, true, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 1165.972646340378, 6606.1586224684725, 8, 1], 2, 116.79966683283226, 116.79966683283226, 10, false, "Circle", 5, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 58.39983341641613, 58.39983341641607, 0, 1], 0, 0, 1, 58.39983341641612, 0, 3, 0, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 620.8116129526711, 6407.9235082273135, 8, 1], 3, 0, 0, 0, 5, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1165.972646340378, 6053.1586224684725, 0, 1], 0, "底板", "", "", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 24, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0], "basePt": { "x": -221.29186602870823, "y": 73.39449541284404, "z": 0 } };
let brs = LoadBoardsFromFileData(d);
let u = new ErpParseData();
for (let br of brs)
{
expect(u.GetModelData(br)).toMatchSnapshot();
}
});
test('板件到CADViewer2', () =>
{
let d =
{ "file": [1, "Board", 10, 2, 100, 0, 1, 3, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 114.69072164948449, 18, 24.484536082696298, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 114.69072164948449, 18, 24.484536082696298, 1], 0, 0, 1, 3, 500, 500, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, -2.220446049250313e-16, 0, 0, 2.220446049250313e-16, 1, 0, 0, 500, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -1481.8755754107606, -34.104148461507194, 1.1102230246251565e-13, 1], 0, 0, 1, 2, 4, [0, -500], 0, [500, -500], 0, [500, 0], 0, [0, 0], 0, true, 1, 3, 320.0000000000001, 263.1024484536083, 10, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 263.1024484536083, 320.00000000000006, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -1628.7731269571523, -105.78156824470297, 0, 1], 0, 0, 1, 2, 4, [-263.1024484536083, 5.684341886080802e-14], 0, [-263.1024484536083, -320], 0, [0, -320.00000000000006], 0, [0, 0], 0, true, 1, 3, 300, 300, 10, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 300, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -1581.8755754107606, -115.78156824470302, 0, 1], 0, 0, 1, 2, 4, [56.897551546391725, -300], 0, [300, -300], 0, [300, 0], 0, [56.897551546391725, 0], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 214.6907216494845, 9.99999999999989, 106.16195586589212, 1], 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 261.5882731958762, 9.99999999999989, 96.16195586589207, 1], 3, 0, 0, 0, 0, 0, 12, 2, "背板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null, 0], "basePt": { "x": 114.69072164948449, "y": 0, "z": 24.484536082696298 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] };
let brs = LoadBoardsFromFileData(d);
let u = new ErpParseData();
for (let br of brs)
{
expect(u.GetModelData(br)).toMatchSnapshot();
}
});
test('板件到CADViewer3', () =>
{
let d =
{ "file": [1, "Board", 10, 2, 100, 0, 1, 3, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 99.22680412371145, 0, 9.0206185569231, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 99.22680412371145, 0, 9.0206185569231, 1], 0, 0, 1, 3, 500, 500, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, -2.220446049250313e-16, 0, 0, 2.220446049250313e-16, 1, 0, 0, 500, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -848.5824742268046, -20.618556701474947, 1.1102230246251565e-13, 1], 0, 0, 1, 2, 4, [0, -500], 0, [500, -500], 0, [500, 0], 0, [0, 0], 0, true, 1, 3, 154.639175257732, 231.95876288659804, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 154.639175257732, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, -983.8917525773198, -162.37113402106266, 0, 1], 0, 0, 1, 2, 4, [-88.65979381443285, -154.639175257732], 0, [231.95876288659804, -154.639175257732], 0, [231.95876288659804, 0], 0, [-88.65979381443285, 0], 0, true, 0, 3, 0, 0, 0, 0, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 234.53608247422667, -1.1102230246251565e-13, 150.7731958765108, 1], 3, 0, 0, 0, 0, 0, 11, 2, "背板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null], "basePt": { "x": 99.22680412371145, "y": -18, "z": 9.0206185569231 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] };
let brs = LoadBoardsFromFileData(d);
let u = new ErpParseData();
for (let br of brs)
{
expect(u.GetModelData(br)).toMatchSnapshot();
}
});
test('拉伸夹点时更新子槽轮廓', () =>
{
let d =
{ "file": [1, "Board", 10, 2, 102, 0, 1, 11, 71, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1147.9259259259263, 10.370370370370361, 0, 1], 100, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -34.074074074074105, 10.370370370370361, 0, 1], 0, 0, 1, 3, 2000, 600, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2000, 0, 1], 0, 0, 1, [0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1445.1851851851857, -72.59259259259261, 0, 1], 0, 0, 1, 2, 4, [0, -2000], 0, [600, -2000], 0, [600, 0], 0, [0, 0], 0, true, 1, 3, 530.9629629629628, 283.2592592592594, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 24.888888888889227, 607.4074074074074, 0, 1], 0, 0, 1, [0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1618.814814814814, -1085.9259259259259, 0, 1], 0, 0, 1, 2, 4, [-24.888888888889227, -607.4074074074074], 0, [258.3703703703702, -607.4074074074074], 0, [258.3703703703702, -76.44444444444457], 0, [-24.888888888889227, -76.44444444444457], 0, true, 0, 3, 0, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1147.9259259259263, 183.99999999999915, 1013.3333333333333, 1], 3, 0, 0, 0, 0, 0, 12, 1, "右侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null, 0], "basePt": { "x": 1147.9259259259263, "y": 10.370370370370361, "z": 0 }, "ucs": [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1] };
let br = LoadBoardsFromFileData(d)[0];
br.MoveStretchPoints([15, 12, 11, 8], new Vector3(0, 50, 0));
let f = new CADFiler;
br.Grooves[0].WriteFile(f);
expect(f.Data).toMatchSnapshot();
});