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__/dxf/dxf_el.test.ts

41 lines
10 KiB

import { DxfWriter } from "dxf-write";
import { Conver2DxfEntity } from "../../src/Add-on/ACAD/Entity2DxfEntity";
import { Ellipse } from "../../src/DatabaseServices/Entity/Ellipse";
import { LoadEntityFromFileData } from "../Utils/LoadEntity.util";
test('测试椭圆导出', () =>
{
let d =
{ "file": [1, "Ellipse", 10, 2, 100, 0, 1, 8, 0, [1, -1.224646799147353e-16, 0, 0, -1.224646799147353e-16, -1, 0, 0, 0, 0, -1, 0, 1125.3161763730257, 534.314974743387, 0, 1], 0, 0, 1, [1, -1.224646799147353e-16, 0, 0, -1.224646799147353e-16, -1, 0, 0, 0, 0, -1, 0, 697086.744540745, -757821.0258150058, 0, 1], 0, 0, 1, 1, 17.49999999993635, 14.488887394196366, 3.1415926535898886, 2.179041854509288, 7.245736003887706], "basePt": { "x": 1107.8260869565217, "y": 519.8260869565217, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let el = LoadEntityFromFileData(d.file)[0] as Ellipse;
let dxf = new DxfWriter();
let dxfel = Conver2DxfEntity(el, dxf);
expect(dxfel).toMatchSnapshot();
});
test('任意轴坐标系椭圆', () =>
{
let d =
{ "file": [25, "Ellipse", 10, 2, 100, 0, 1, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 337.7892030848327, 0, 558.6118251930241, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 180.46272493573247, 235.26781058609194, 0, 0, 6.283185307179586, "Ellipse", 10, 2, 101, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 971.2021372138901, 9.979027876158327, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 202.24008451235454, 0, 0, 1], 0, 0, 1, 1, 276.94466629724116, 170.64007130729925, 0.08377294374376669, 0, 6.283185307179586, "Ellipse", 10, 2, 102, 0, 1, 7, 71, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 376.2787636521916, 553.5769614228184, 1], 0, 0, 1, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 409.9210746204874, 164.64043160986785, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 103, 0, 1, 7, 71, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, -418.67323531214146, 679.4023475206053, 1], 0, 0, 1, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 192.24386658825847, 248.01477883417138, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 104, 0, 1, 7, 71, [-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, -722.7831100972741, 34.28543499417401, 0, 1], 0, 0, 1, [-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1], 0, 0, 1, 1, 245.33114810826905, 132.8877052253124, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 105, 0, 1, 7, 71, [-1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, -919.2452469445237, 0, 575.1871269736582, 1], 0, 0, 1, [-1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 135.55332237286532, 67.09547142355302, -0.7853981633974483, 0, 6.283185307179586, "Ellipse", 10, 2, 106, 0, 1, 7, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 2881.606171887065, 0, 765.5826058907224, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 578.140759867666, 398.06412974495015, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 107, 0, 1, 7, 71, [-0.7071067811866616, 0, -0.7071067811864334, 0, 0.7071067811864334, 0, -0.7071067811866616, 0, 0, -1, 0, 0, 4383.718724957772, 0, 844.4497602985355, 1], 0, 0, 1, [-0.7071067811866616, 0, -0.7071067811864334, 0, 0.7071067811864334, 0, -0.7071067811866616, 0, 0, -1, 0, 0, 6831.623005709384, 0, 4428.665411224347, 1], 0, 0, 1, 1, 454.9304339942287, 603.0837717578362, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 108, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6149.580932239946, 83.56987103451945, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 1, 683.0077999476371, 318.25078437418193, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 109, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 7216.19585270612, -66.13046868003096, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 1, 652.3273894819047, 211.70825071620195, -0.14392544938821647, 0, 6.283185307179586, "Ellipse", 10, 2, 110, 0, 1, 7, 71, [0.7071067811866076, -0.7071067811864874, 0, 0, 0.7071067811864874, 0.7071067811866076, 0, 0, 0, 0, 1, 0, 8709.485094419037, 403.402459189384, 0, 1], 0, 0, 1, [0.7071067811866076, -0.7071067811864874, 0, 0, 0.7071067811864874, 0.7071067811866076, 0, 0, 0, 0, 1, 0, 2681.09059871903, 6565.014857591026, 0, 1], 0, 0, 1, 1, 278.18194271168045, 467.8135616079704, -1.2277723863741916, 0, 6.283185307179586, "Ellipse", 10, 2, 111, 0, 1, 7, 71, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1495.2977034058104, 726.4288182666232, 1], 0, 0, 1, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 399.6103614450765, 217.88313940064288, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 112, 0, 1, 7, 71, [0, 0.7071067811866039, 0.7071067811864912, 0, 0, -0.7071067811864912, 0.7071067811866039, 0, 1, 0, 0, 0, 0, 2509.463837080227, 561.0221982778894, 1], 0, 0, 1, [0, 0.7071067811866039, 0.7071067811864912, 0, 0, -0.7071067811864912, 0.7071067811866039, 0, 1, 0, 0, 0, 0, 1301.9287441934268, -1680.6472296062252, 1], 0, 0, 1, 1, 240.72913340064906, 102.0691525618754, 0, 0, 6.283185307179586, "Ellipse", 10, 2, 113, 0, 1, 7, 71, [0, -0.9863939238321437, 0.16439898730535749, 0, 0, -0.16439898730535749, -0.9863939238321437, 0, 1, 0, 0, 0, 0, 3221.3069695705594, 610.5992739202115, 1], 0, 0, 1, [0, -0.9863939238321437, 0.16439898730535749, 0, 0, -0.16439898730535749, -0.9863939238321437, 0, 1, 0, 0, 0, 0, 6426.8865759723085, 848.7091203105597, 1], 0, 0, 1, 1, 200.7919955606939, 222.7276522867144, -1.2426764317795915, 0, 6.283185307179586, "Ellipse", 10, 2, 114, 0, 1, 7, 71, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, -2723.1925840252115, 693.593787999137, 1], 0, 0, 1, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 718.6955082075308, 488.065940022972, -1.1839206090638679, 0, 6.283185307179586, "Ellipse", 10, 2, 115, 0, 1, 7, 71, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, -4510.393894710296, 1396.1487859925833, 1], 0, 0, 1, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 1109.2973652528103, 458.0388454782348, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 117, 0, 1, 7, 71, [0, -0.707106781186661, 0.7071067811864341, 0, 0, 0.7071067811864341, 0.707106781186661, 0, -1, 0, 0, 0, 0, -6777.627322824062, 1001.2810781689377, 1], 0, 0, 1, [0, -0.707106781186661, 0.7071067811864341, 0, 0, 0.7071067811864341, 0.707106781186661, 0, -1, 0, 0, 0, 0, -1673.2742376779415, -5502.303983046832, 1], 0, 0, 1, 1, 690.2294717128598, 1238.0866911338492, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 118, 0, 1, 7, 71, [-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, -9289.971667863443, 23.107584966108334, 0, 1], 0, 0, 1, [-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1], 0, 0, 1, 1, 2909.960931186308, 1277.957747099409, -1.2971370057128073, 0, 6.283185307179586, "Ellipse", 10, 2, 119, 0, 1, 7, 71, [-6.123233995736766e-17, 1, 0, 0, 1, 6.123233995736766e-17, 0, 0, 0, 0, -1, 0, -17722.52670987782, -5399.365440418747, 0, 1], 0, 0, 1, [-6.123233995736766e-17, 1, 0, 0, 1, 6.123233995736766e-17, 0, 0, 0, 0, -1, 0, -17401.568747547935, -20489.29919127181, 0, 1], 0, 0, 1, 1, 1916.9366206491131, 2789.578001122757, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 120, 0, 1, 7, 71, [-0.7071067811856951, 0.7071067811873999, 0, 0, 0.7071067811873999, 0.7071067811856951, 0, 0, 0, 0, -1, 0, -23357.383671828775, -1064.7201708014763, 0, 1], 0, 0, 1, [-0.7071067811856951, 0.7071067811873999, 0, 0, 0.7071067811873999, 0.7071067811856951, 0, 0, 0, 0, -1, 0, -6934.054496633824, -17381.704930851134, 0, 1], 0, 0, 1, 1, 3701.785570098034, 1320.7230147568457, -1.7577755967138071, 0, 6.283185307179586, "Ellipse", 10, 2, 121, 0, 1, 7, 71, [-1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, -32145.254657867412, 0, 1725.386311696919, 1], 0, 0, 1, [-1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 3682.3939200746004, 2287.817802977561, -1.29537022309886, 0, 6.283185307179586, "Ellipse", 10, 2, 122, 0, 1, 7, 71, [-1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, -38539.145755787045, 0, 1879.4559767070298, 1], 0, 0, 1, [-1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1], 0, 0, 1, 1, 3934.813766671162, 1307.3244588461444, -0.402321097860441, 0, 6.283185307179586, "Ellipse", 10, 2, 123, 0, 1, 7, 71, [-0.25656801734669404, 0, 0.9665261778528228, 0, 0.9665261778528228, 0, 0.25656801734669404, 0, 0, 1, 0, 0, -48884.69243769194, 0, 2324.1640588586815, 1], 0, 0, 1, [-0.25656801734669404, 0, 0.9665261778528228, 0, 0.9665261778528228, 0, 0.25656801734669404, 0, 0, 1, 0, 0, -37007.13057693618, 0, -44040.80671816236, 1], 0, 0, 1, 1, 3774.70679274773, 7145.992893307455, -1.5707963267948966, 0, 6.283185307179586, "Ellipse", 10, 2, 124, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 20865.625435287715, -9648.578071219148, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 1, 6109.921296799555, 5072.387489361921, 0, 0, 6.283185307179586, "Ellipse", 10, 2, 125, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 33318.935082427575, -17029.50021392631, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, 1, 5648.795158756198, 4616.2115334821865, 0, 0, 6.283185307179586], "basePt": { "x": -54366.47853395107, "y": -21645.71163970756, "z": -5551.093965462198 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let els = LoadEntityFromFileData(d.file) as Ellipse[];
let dxf = new DxfWriter();
for (let el of els)
{
let dxfel = Conver2DxfEntity(el, dxf);
expect(dxfel).toMatchSnapshot();
}
});
test('椭圆转换失败', () =>
{
let d =
{ "file": [1, "Ellipse", 10, 2, 100, 0, 1, 1, 71, [1, 0, 0, 0, 0, -1.8369701987210297e-16, 1, 0, 0, -1, -1.8369701987210297e-16, 0, 1773.6340891544241, 1.26299050262124e-15, -67.1038026928436, 1], 0, 0, 1, [1, 0, 0, 0, 0, -1.8369701987210297e-16, 1, 0, 0, -1, -1.8369701987210297e-16, 0, -623492.8962939418, 2.0719830672442248e-11, -112853.73309240425, 1], 0, 0, 1, 1, 13.610857868193955, 13.610857866349484, 0.7853981633974483, 6.027332289796344, 12.31051759697593], "basePt": { "x": 1785.3807617847342, "y": -4.409732460185456e-28, "z": -60.22840262646787 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] };
let el = LoadEntityFromFileData(d.file)[0] as Ellipse;
el.Convert2Polyline();
});