!2735 修复: 圆弧板坍塌的Param在大孔面时也做四舍五入取整

pull/2223/MERGE
张子涵 5 months ago committed by ChenX
parent a8e3b8080a
commit f4c0c2a74c

@ -0,0 +1,32 @@
import { LoadBoardsFromFileData } from "../Utils/LoadEntity.util";
// 测试命令(用于复制)npm run test -- ArcBoardBuild.test.ts
// 测试在build过程中是否会报错
test('创建圆弧板1', () =>
{
const data = { "file": [1, "Board", 10, 2, 64355, 0, 1, 2, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 42161.81736322144, -20.159418886198523, 29172.231620093924, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 42161.81736322144, -20.159418886198523, 29172.231620093924, 1], 0, 0, 1, 3, 1200, 1063.61945, 6, true, "Polyline", 10, 2, 0, 0, 0, 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, 4, [0, 0], 0, [1063.61945, 0], 0, [1063.61945, 1200], 0, [0, 1200], 0, true, 0, 3, 0, 0, 0, 0, 0, 19, 0, "圆弧板", "", "", "", "", "", 0, 0, "不排", 2, 0, "0", "0", "0", "0", "", "", "", 4, "不排", "不排", "不排", "不排", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null, 0, 0, "", "", "", "", 0, false, 0, "Polyline", 10, 2, 0, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, [0, -1, 0, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, -14, 0, 1], 0, 0, 1, 2, 5, [1.3322676295501878e-15, 0], 0, [7.815970093361103e-14, -346.00000000000006], 0, [-193.99999999999991, -346.0000000000001], 0, [-193.99999999999997, -144.00000000000006], -0.41421356237309503, [-50, -1.0658141036401503e-14], 0, true, 0, 0, true, 2, -1, 0, 6, 6, 2, 0, 0, 0, 3, 0, 3, 235.61945, 6, 6, 2, 0, 0, 0, 3, 0], "basePt": { "x": 41961.81736322144, "y": -26.159418886198523, "z": 29172.231620093924 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] };
let br = LoadBoardsFromFileData(data)[0];
expect(!br.GetSweepPath()).toBe(false);
});
test('创建圆弧板2', () =>
{
const data = { "file": [1, "Board", 10, 2, 102, 0, 1, 2, 71, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 303.4013605442178, 529.5918367346939, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 303.4013605442178, 529.5918367346939, 0, 1], 0, 0, 1, 3, 1200, 1302.93878, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 0, [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, 4, [0, 0], 0, [1302.93878, 0], 0, [1302.93878, 1200], 0, [0, 1200], 0, true, 0, 3, 0, 0, 0, 0, 0, 19, 0, "圆弧板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null, 0, 0, "", "", "", "", 0, false, 0, "Polyline", 10, 2, 0, 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, -274.48979591836735, 0, 1], 0, 0, 1, 2, 4, [0, 0], 0, [0, -274.48979591836735], 0, [448.9795918367346, -274.48979591836735], 0, [448.9795918367346, 0], 0, true, 0, 0, true, 1, -1, 0, 6, 6, 2, 0, 0, 0, 3, 0], "basePt": { "x": 303.4013605442178, "y": 529.5918367346939, "z": -2.1316282072803006e-12 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let br = LoadBoardsFromFileData(data)[0];
expect(!br.GetSweepPath()).toBe(false);
});
test('创建圆弧板3', () =>
{
const data = { "file": [1, "Board", 10, 2, 109, 0, 1, 2, 71, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 6341.718991840809, 1051.00060295893, 0, 1], 0, 0, 1, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 6341.718991840809, 1051.00060295893, 0, 1], 0, 0, 1, 3, 903.0864494339985, 997.0402133676007, 18, false, "Polyline", 10, 2, 0, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, [0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, -1051.00060295893, 6921.580846196026, 0, 1], 0, 0, 1, 2, 12, [997.0402133676007, 402.1205832057158], 0, [361.6838765145899, 903.0864494339985], 0, [0, 903.0864494339985], 0, [0, 696.4099485685183], 0, [361.6838765145899, 696.4099485685183], 0, [361.6838765145899, 530.1701543941108], 0, [0, 402.1205832057158], 0, [361.6838765145899, 307.76826759321375], 0, [361.6838765145899, 163.99331046940097], 0, [163.99331046934822, 163.99331046940097], 0, [0, 0], 0, [361.6838765145899, 0], 0, true, 0, 3, 0, 0, 0, 0, 0, 19, 0, "层板", "", "", "", "", "", 0, 0, "三合一", 2, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "1", "1", "1", "1", "", "", "", 12, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, null, 0, 0, "", "", "", "", 0, false, 0, "Polyline", 10, 2, 0, 0, 0, 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, 4, [0, 0], 0, [248.5375920688773, 0], -1.5008372021322007, [498.96275723417256, -1.2789769243681803e-13], 0, [744.8000053995568, -7.105427357601002e-15], 0, false, 0, 0, true, 2, -1, 0, 6, 6, 2, 0, 0, 0, 3, 0, 1, 533.50621, 6, 6, 2, 0, 0, 0, 3, 0], "basePt": { "x": 5438.632566059559, "y": 1051.00060295893, "z": -1.6697754290362354e-13 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let br = LoadBoardsFromFileData(data)[0];
expect(!br.GetSweepPath()).toBe(false);
});
test('创建圆弧板4', () =>
{
const data = { "file": [1, "Board", 10, 2, 171, 0, 1, 11, 71, [-0.4322464455898701, 0.901755515799556, 0, 0, 0, 0, 1, 0, 0.901755515799556, 0.4322464455898701, 0, 0, 539.0971045899771, 2529.068579580106, 0, 1], 0, 0, 1, [-0.4322464455898701, 0.901755515799556, 0, 0, 0, 0, 1, 0, 0.901755515799556, 0.4322464455898701, 0, 0, 539.0971045899771, 2529.068579580106, 0, 1], 0, 0, 1, 3, 1200, 1416.15236, 18, true, "Polyline", 10, 2, 0, 0, 0, 7, 0, [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, 4, [0, 0], 0, [1416.15236, 0], 0, [1416.15236, 1200], 0, [0, 1200], 0, true, 0, 3, 0, 0, 0, 0, 0, 19, 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, 0, "", "", "", "", 0, false, 0, "Polyline", 10, 2, 0, 0, 1, 7, 71, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], 0, 0, 1, [-0.43224644558987013, 0.9017555157995563, 0, 0, 0.9017555157995563, 0.43224644558987013, 0, 0, 0, 0, -1.0000000000000002, 0, -2091.7624739682556, -1626.610684053688, 0, 1], 0, 0, 1, 2, 8, [0, 0], 0, [-31.06356827203399, 64.80503036062237], 0, [42.8141663390752, 100.21749819074103], 0, [109.2902024412274, -38.46526678099053], 0, [-43.649669209840795, -111.77528790299039], 0, [-143.05308768034888, 95.60080925100078], 0, [92.837222832316, 208.67219776120373], 0, [192.86191266826472, 0], 0, false, 0, 0, true, 1, -1, 0, 6, 6, 2, 0, 0, 0, 3, 0], "basePt": { "x": 326.2702261568901, "y": 2319.723100927412, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
let br = LoadBoardsFromFileData(data)[0];
expect(!br.GetSweepPath()).toBe(false);
});

@ -750,7 +750,7 @@ export class ArcBoardBuild
let onlyD = this._CornerFuzzFactory.lookupOrCreate([x], x);
if (this._CornerSet.has(onlyD))//坍塌
{
let p2 = this._SweepPath2.GetPointAtParam(curveIndex + param);
let p2 = this._SweepPath2.GetPointAtParam(curveIndex + Math.round(param));
derv = p2.sub(c.GetPointAtParam(param)).divideScalar(this._board.Thickness);
}

Loading…
Cancel
Save