import { LoadRegionsFromFileData } from "../Utils/LoadEntity.util"; import { BoolOpeartionType } from "../../src/GraphicsSystem/BoolOperateUtils"; test('差集共线(圆)', () => { let d = { "file": [2, "Region", 7, 2, 103, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 1, 1, 1, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 6, [807.6555023923443, 146.3157894736844], 0, [1710.7559808612436, 146.3157894736844], 0, [1710.7559808612436, 706.1818181818184], 0, [1459.7725447442663, 706.1818181818184], -0.9999999999999999, [1058.6389385093214, 706.1818181818184], 0, [807.6555023923443, 706.1818181818184], 0, true, 0, "Region", 7, 2, 105, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1259.205741626794, 706.1818181818184, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1259.205741626794, 706.1818181818184, 0, 1], 1, 1, 1, 1, "Circle", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1259.205741626794, 706.1818181818184, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 200.56680311747243, 0], "basePt": { "x": 807.6555023923443, "y": 146.3157894736844, "z": 0 } }; let regs = LoadRegionsFromFileData(d); regs[0].BooleanOper(regs[1], BoolOpeartionType.Subtract); expect(regs[0].Area).toMatchSnapshot(); }); test('差集问题', () => { let d = { "file": [2, "Region", 7, 2, 179, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 1, 1, 1, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 2, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [166.89661244019044, 262.16359808612503], 0, [361.0113684210519, 262.16359808612503], 0, [361.0113684210519, 475.46411483253655], 0, [166.89661244019044, 475.46411483253655], 0, true, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [224.89278468899556, 700.9699521531093], 0, [516.496842105263, 700.9699521531093], 0, [516.496842105263, 756.458181818181], 0, [224.89278468899556, 756.458181818181], 0, true, "Region", 7, 2, 206, false, 1, 3, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 1, 1, 1, 1, "Polyline", 7, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 2, 4, [134.10526315789502, 423.99555980861203], 0, [419.38373205741664, 423.99555980861203], 0, [419.38373205741664, 903.3818181818185], 0, [134.10526315789502, 903.3818181818185], 0, true, 0], "basePt": { "x": 0, "y": 0, "z": 0 } }; let regs = LoadRegionsFromFileData(d); regs[0].BooleanOper(regs[1], BoolOpeartionType.Subtract); expect(regs[0].ShapeManager.ShapeList.length).toBe(1); expect(regs[0].Explode().length).toBe(16); expect(regs[0].Area).toMatchSnapshot(); }); test("弧形板差集", () => { let d = { "file": [2, "Region", 8, 2, 239, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7164.031205116695, -312.3853909685172, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7164.031205116695, -312.3853909685172, 0, 1], 0, 1, 1, 1, 1, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7164.031205116695, -312.3853909685172, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -7164.031205116695, -312.3853909685172, 0, 1], 0, 2, 4, [1488.2724956409866, -403.9906338621595], 0, [1556.769411177408, -276.18933276551024], 0.25108720252037403, [-1817.9873510282487, -276.1893327618018], 0, [-1749.4904354922473, -403.99063385883346], -0.25108720252039435, true, 0, "Region", 8, 2, 238, false, 1, 7, 0, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6729.018004950986, -356.8947148198645, 0, 1], 0, 0, true, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6729.018004950986, -356.8947148198645, 0, 1], 0, 1, 1, 1, 1, "Polyline", 8, 2, 0, false, 0, 4, 0, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6729.018004950986, -356.8947148198645, 0, 1], 0, 0, true, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6729.018004950986, -356.8947148198645, 0, 1], 0, 2, 4, [0, 0], 0, [145.0094999623654, 0], 0, [145.0094999623654, 18], 0, [0, 18], 0, true, 0], "basePt": { "x": -8982.018556144943, "y": -716.3760248306767, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let regs = LoadRegionsFromFileData(d); regs[0].BooleanOper(regs[1], BoolOpeartionType.Subtract); expect(regs[0].ShapeManager.ShapeList.length).toBe(2); for (let s of regs[0].ShapeManager.ShapeList) expect(s.Area).toMatchSnapshot(); }); test("弧形板差集2", () => { let d = { "file": [2, "Region", 8, 2, 237, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6781.659977097809, -1502.9438267095907, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6781.659977097809, -1502.9438267095907, 0, 1], 0, 1, 1, 1, 1, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6781.659977097809, -1502.9438267095907, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -6781.659977097809, -1502.9438267095907, 0, 1], 0, 2, 4, [1488.2724956409866, -403.9906338621595], 0, [1556.769411177408, -276.18933276551024], 0.25108720252037403, [-1817.9873510282487, -276.1893327618018], 0, [-1749.4904354922473, -403.99063385883346], -0.25108720252039435, true, 0, "Region", 8, 2, 236, false, 1, 7, 0, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6346.646776932101, -1547.453150560938, 0, 1], 0, 0, true, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6346.646776932101, -1547.453150560938, 0, 1], 0, 1, 1, 1, 1, "Polyline", 8, 2, 0, false, 0, 4, 0, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6346.646776932101, -1547.453150560938, 0, 1], 0, 0, true, [0.16234909674127015, 0.9867333838414984, 0, 0, -0.9867333838414984, 0.16234909674127015, 0, 0, 0, 0, 1, 0, -6346.646776932101, -1547.453150560938, 0, 1], 0, 2, 4, [0, 0], 0, [144.9994999623654, 0], 0, [144.9994999623654, 18], 0, [0, 18], 0, true, 0], "basePt": { "x": -8599.647328126059, "y": -1906.9344605717502, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] }; let regs = LoadRegionsFromFileData(d); regs[0].BooleanOper(regs[1], BoolOpeartionType.Subtract); expect(regs[0].ShapeManager.ShapeList.length).toBe(2); for (let s of regs[0].ShapeManager.ShapeList) expect(s.Area).toMatchSnapshot(); });