diff --git a/__test__/Booloperate/__snapshots__/bool5.test.ts.snap b/__test__/Booloperate/__snapshots__/bool5.test.ts.snap new file mode 100644 index 000000000..3091d9dda --- /dev/null +++ b/__test__/Booloperate/__snapshots__/bool5.test.ts.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`差集共线(圆) 1`] = `442426.78778792813`; diff --git a/__test__/Booloperate/bool5.test.ts b/__test__/Booloperate/bool5.test.ts new file mode 100644 index 000000000..e10232e1d --- /dev/null +++ b/__test__/Booloperate/bool5.test.ts @@ -0,0 +1,14 @@ +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(); +}); diff --git a/__test__/DTO/__snapshots__/Board2CADViewer.test.ts.snap b/__test__/DTO/__snapshots__/Board2CADViewer.test.ts.snap index c9de1554d..7f58c073d 100644 --- a/__test__/DTO/__snapshots__/Board2CADViewer.test.ts.snap +++ b/__test__/DTO/__snapshots__/Board2CADViewer.test.ts.snap @@ -152,8 +152,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -162,10 +162,6 @@ CADDbBoard { "H": 10, "L": 179.17946854625225, "Pts": Array [ - Vector2 { - "x": 179.17946854625222, - "y": 89.58973427312613, - }, Vector2 { "x": -1.4210854715202004e-14, "y": 89.58973427312614, @@ -174,6 +170,10 @@ CADDbBoard { "x": 179.17946854625222, "y": 89.58973427312613, }, + Vector2 { + "x": -1.4210854715202004e-14, + "y": 89.58973427312614, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [ @@ -185,8 +185,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -195,10 +195,6 @@ CADDbBoard { "H": 10, "L": 139.17946854625225, "Pts": Array [ - Vector2 { - "x": 139.17946854625222, - "y": 69.58973427312613, - }, Vector2 { "x": -1.4210854715202004e-14, "y": 69.58973427312614, @@ -207,6 +203,10 @@ CADDbBoard { "x": 139.17946854625222, "y": 69.58973427312613, }, + Vector2 { + "x": -1.4210854715202004e-14, + "y": 69.58973427312614, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [], @@ -313,8 +313,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -323,10 +323,6 @@ CADDbBoard { "H": 10, "L": 116.79966683283226, "Pts": Array [ - Vector2 { - "x": 116.79966683283226, - "y": 58.39983341641607, - }, Vector2 { "x": 7.105427357601002e-15, "y": 58.39983341641608, @@ -335,6 +331,10 @@ CADDbBoard { "x": 116.79966683283226, "y": 58.39983341641607, }, + Vector2 { + "x": 7.105427357601002e-15, + "y": 58.39983341641608, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [], @@ -384,8 +384,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "主卧", @@ -394,10 +394,6 @@ CADDbBoard { "H": 18, "L": 4408.678960586129, "Pts": Array [ - Vector2 { - "x": 4408.678960586129, - "y": 2204.3394802930643, - }, Vector2 { "x": 0, "y": 2204.3394802930648, @@ -406,6 +402,10 @@ CADDbBoard { "x": 4408.678960586129, "y": 2204.3394802930643, }, + Vector2 { + "x": 0, + "y": 2204.3394802930648, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [ @@ -417,8 +417,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -427,10 +427,6 @@ CADDbBoard { "H": 5, "L": 633.2307692307686, "Pts": Array [ - Vector2 { - "x": 633.2307692307686, - "y": 316.6153846153843, - }, Vector2 { "x": 0, "y": 316.61538461538436, @@ -439,6 +435,10 @@ CADDbBoard { "x": 633.2307692307686, "y": 316.6153846153843, }, + Vector2 { + "x": 0, + "y": 316.61538461538436, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [], @@ -467,8 +467,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -477,10 +477,6 @@ CADDbBoard { "H": 5, "L": 557.8461538461524, "Pts": Array [ - Vector2 { - "x": 557.8461538461524, - "y": 278.9230769230762, - }, Vector2 { "x": 0, "y": 278.9230769230763, @@ -489,6 +485,10 @@ CADDbBoard { "x": 557.8461538461524, "y": 278.9230769230762, }, + Vector2 { + "x": 0, + "y": 278.9230769230763, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [], @@ -761,8 +761,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -771,10 +771,6 @@ CADDbBoard { "H": 18, "L": 189.0974955047293, "Pts": Array [ - Vector2 { - "x": 189.0974955047293, - "y": 94.54874775236476, - }, Vector2 { "x": -1.4210854715202004e-14, "y": 94.54874775236478, @@ -783,6 +779,10 @@ CADDbBoard { "x": 189.0974955047293, "y": 94.54874775236476, }, + Vector2 { + "x": -1.4210854715202004e-14, + "y": 94.54874775236478, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [], @@ -975,8 +975,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -985,10 +985,6 @@ CADDbBoard { "H": 10, "L": 179.17946854625225, "Pts": Array [ - Vector2 { - "x": 179.17946854625222, - "y": 89.58973427312613, - }, Vector2 { "x": -1.4210854715202004e-14, "y": 89.58973427312614, @@ -997,6 +993,10 @@ CADDbBoard { "x": 179.17946854625222, "y": 89.58973427312613, }, + Vector2 { + "x": -1.4210854715202004e-14, + "y": 89.58973427312614, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [ @@ -1008,8 +1008,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -1018,10 +1018,6 @@ CADDbBoard { "H": 10, "L": 139.17946854625225, "Pts": Array [ - Vector2 { - "x": 139.17946854625222, - "y": 69.58973427312613, - }, Vector2 { "x": -1.4210854715202004e-14, "y": 69.58973427312614, @@ -1030,6 +1026,10 @@ CADDbBoard { "x": 139.17946854625222, "y": 69.58973427312613, }, + Vector2 { + "x": -1.4210854715202004e-14, + "y": 69.58973427312614, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [], @@ -1136,8 +1136,8 @@ CADDbBoard { }, "BoardName": "", "Buls": Array [ - -0.9999999999999999, - -0.9999999999999999, + 0.9999999999999999, + 0.9999999999999999, 0, ], "CabName": "", @@ -1146,10 +1146,6 @@ CADDbBoard { "H": 10, "L": 116.79966683283226, "Pts": Array [ - Vector2 { - "x": 116.79966683283226, - "y": 58.39983341641607, - }, Vector2 { "x": 7.105427357601002e-15, "y": 58.39983341641608, @@ -1158,6 +1154,10 @@ CADDbBoard { "x": 116.79966683283226, "y": 58.39983341641607, }, + Vector2 { + "x": 7.105427357601002e-15, + "y": 58.39983341641608, + }, ], "SubBoardAssoc": null, "SubBoardLocal": Array [], diff --git a/__test__/Geometry/__snapshots__/circle.test.ts.snap b/__test__/Geometry/__snapshots__/circle.test.ts.snap index 856d2a244..9ac1f7c2a 100644 --- a/__test__/Geometry/__snapshots__/circle.test.ts.snap +++ b/__test__/Geometry/__snapshots__/circle.test.ts.snap @@ -82,48 +82,48 @@ Vector3 { exports[`圆的切割2 1`] = ` Vector3 { - "x": 5, - "y": 5, + "x": 4.999999999999999, + "y": -5, "z": 0, } `; exports[`圆的切割2 2`] = ` Vector3 { - "x": 4.999999999999999, - "y": -5, + "x": 5, + "y": 5, "z": 0, } `; exports[`圆的切割2 3`] = ` Vector3 { - "x": 4.999999999999999, - "y": -5, + "x": 0, + "y": 6.123233995736766e-16, "z": 0, } `; exports[`圆的切割2 4`] = ` Vector3 { - "x": 0, - "y": 6.123233995736766e-16, + "x": 4.999999999999999, + "y": -5, "z": 0, } `; exports[`圆的切割2 5`] = ` Vector3 { - "x": 0, - "y": 6.123233995736766e-16, + "x": 5, + "y": 5, "z": 0, } `; exports[`圆的切割2 6`] = ` Vector3 { - "x": 5, - "y": 5, + "x": 0, + "y": 6.123233995736766e-16, "z": 0, } `; diff --git a/__test__/Polyline/__snapshots__/offset.test.ts.snap b/__test__/Polyline/__snapshots__/offset.test.ts.snap index 4f8d2757a..96badc19d 100644 --- a/__test__/Polyline/__snapshots__/offset.test.ts.snap +++ b/__test__/Polyline/__snapshots__/offset.test.ts.snap @@ -18,7 +18,7 @@ exports[`中间区域需要圆裁剪 2`] = `"24.71130"`; exports[`假圆弧交点选点直连 1`] = `1`; -exports[`假圆弧交点选点直连 2`] = `"903.79892"`; +exports[`假圆弧交点选点直连 2`] = `"903.79891"`; exports[`判断点在线上错误导致的偏移错误 1`] = `1`; @@ -50,7 +50,7 @@ exports[`圆弧如果连接就自交,需要补圆弧才能解决 2`] = `"948.214 exports[`圆弧连接后逆向 1`] = `1`; -exports[`圆弧连接后逆向 2`] = `"4159.59625"`; +exports[`圆弧连接后逆向 2`] = `"4159.59627"`; exports[`圆弧连接成圆 1`] = `7`; @@ -208,7 +208,7 @@ exports[`精度过高导致连接失败 2`] = `"75154.17850"`; exports[`精度过高导致连接失败 3`] = `1`; -exports[`精度过高导致连接失败 4`] = `"91209.36327"`; +exports[`精度过高导致连接失败 4`] = `"91209.36316"`; exports[`精度问题导致的连接错误 1`] = `2`; diff --git a/src/DatabaseServices/Contour.ts b/src/DatabaseServices/Contour.ts index adc507eb6..8781e0139 100644 --- a/src/DatabaseServices/Contour.ts +++ b/src/DatabaseServices/Contour.ts @@ -311,7 +311,7 @@ export class Contour { if (hasEqualCus) return false; hasEqualCus = fastEqualCurve(cu, pl); - if (hasEqualCus && !equalv3(cu.GetFistDeriv(0).normalize(), pl.GetFistDeriv(0).normalize())) + if (hasEqualCus && !equalv3(cu.GetFistDeriv(cu.EndParam * 0.5).normalize(), pl.GetFistDeriv(pl.EndParam * 0.5).normalize(), 1e-3)) subtractList.push(pl); return hasEqualCus; }); diff --git a/src/DatabaseServices/Entity/Circle.ts b/src/DatabaseServices/Entity/Circle.ts index c0a81f7ad..aa8bfcf60 100644 --- a/src/DatabaseServices/Entity/Circle.ts +++ b/src/DatabaseServices/Entity/Circle.ts @@ -179,7 +179,7 @@ export class Circle extends Curve let ea = anglelist[i + 1]; if (!equaln(sa, ea, 1e-6)) { - let arc = new Arc(new Vector3(), this._Radius, sa, ea); + let arc = new Arc(new Vector3(), this._Radius, ea, sa, false); arc.ApplyMatrix(this.OCS); curvelist.push(arc); }