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__/Interfere/interfere.test.ts

89 lines
55 KiB

import { CheckInterfereTool, Solid3D } from "../../src/Common/InterfereUtil";
import { ObjectId } from "../../src/DatabaseServices/ObjectId";
import { LoadEntityFromFileData } from "../Utils/LoadEntity.util";
async function Check(data: any, count: number)
{
let boards = LoadEntityFromFileData(data) as Solid3D[];
for (let i = 0; i < boards.length; i++)
boards[i].objectId = new ObjectId(i) as any;
await CheckInterfereTool.GetInstance().Check(boards as any[]);
expect(CheckInterfereTool.GetInstance().objMap.length).toBe(count);
}
describe("干涉测试", () =>
{
test("切割板件", async () =>
{
let data =
[2, "Board", 8, 2, 100, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -2231.9185171823483, -4422.281844206504, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2231.9185171823483, -4422.281844206504, 0, 1], 0, 3, 2000, 600, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 4, 3, 18, 600, 9, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 18], 0, [0, 18], 0, true, 0, 3, 0, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -2222.9185171823483, -4422.281844206504, 486.5, 1], 3, 18, 600, 6, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 18], 0, [0, 18], 0, true, 0, 3, 0, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -2219.9185171823483, -4422.281844206504, 991, 1], 3, 1780.0698549677409, 18.000000000000455, 10, true, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -500.6580645161275, -219.93014503225913, 0, 1], 0, 0, true, [-1.8369701987210297e-16, -1, 0, 0, 1, -1.8369701987210297e-16, 0, 0, 0, 0, 1, 0, 2789.204261929938, 4347.811790451612, 0, 1], 0, 2, 4, [500.658064516128, 2000], 0, [500.6580645161275, 219.93014503225913], 0, [518.6580645161275, 219.93014503225913], 0, [518.658064516128, 2000], 0, true, 0, 3, 0, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -2223.9185171823483, -3921.623779690376, 219.93014503225913, 1], 3, 18, 600, 9, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 18], 0, [0, 18], 0, true, 0, 3, 0, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -2222.9185171823483, -4422.281844206504, 50, 1], 3, 0, 0, 0, 0, 0, 9, 1, "左侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, "Board", 8, 2, 103, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -1049.9185171823483, -4422.281844206504, 486.5, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1049.9185171823483, -4422.281844206504, 486.5, 1], 0, 3, 1173, 600, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1173], 0, [0, 1173], 0, true, 0, 3, 0, 0, 0, 0, 0, 9, 0, "层板", "主卧", "下柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 1, 101, 2, 3, 112, 113, 114, 3, 115, 116, 117, 0, 0, 0, 0, 0, 0, true];
await Check(data, 0);
data = [2, "Board", 8, 2, 101, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1049.9185171823483, -4422.281844206504, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1049.9185171823483, -4422.281844206504, 0, 1], 0, 3, 2000, 600, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 2000], 0, [0, 2000], 0, true, 1, 3, 1780.0698549677409, 18.000000000000455, 10, true, "Polyline", 8, 2, 0, false, 0, 1, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -500.6580645161275, -219.93014503225913, 0, 1], 0, 0, true, [-1.8369701987210297e-16, -1, 0, 0, 1, -1.8369701987210297e-16, 0, 0, 0, 0, 1, 0, 2789.2042619299355, 4347.811790451612, 0, 1], 0, 2, 4, [500.658064516128, 2000], 0, [500.6580645161275, 219.93014503225913], 0, [518.6580645161275, 219.93014503225913], 0, [518.658064516128, 2000], 0, true, 0, 3, 0, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1041.9185171823483, -3921.623779690376, 219.93014503225913, 1], 3, 0, 0, 0, 0, 0, 9, 1, "右侧板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 2, 102, 2, 3, 104, 105, 106, 3, 107, 108, 109, 103, 2, 3, 112, 113, 114, 3, 115, 116, 117, 0, 0, 0, 0, 0, 0, true, "Board", 8, 2, 103, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, -606.3306739002, -4422.281844206504, 486.5, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1049.9185171823483, -4422.281844206504, 486.5, 1], 0, 3, 1616.5878432821482, 600, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 443.58784328214824, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 443.58784328214824, 0, 1], 0, 2, 4, [0, -443.58784328214824], 0, [600, -443.58784328214824], 0, [600, 1173], 0, [0, 1173], 0, true, 0, 3, 0, 0, 0, 0, 0, 9, 0, "层板", "主卧", "下柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 1, 101, 2, 3, 112, 113, 114, 3, 115, 116, 117, 0, 0, 0, 0, 0, 0, true];
await Check(data, 1);
data = [2, "Board", 8, 2, 15731, false, 1, 12, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -17103.964135848066, 173.0236442641158, 3142.826736584199, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -17103.964135848066, -20, 3142.826736584199, 1], 0, 3, 1182, 136.9763557358842, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -193.0236442641158, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -193.0236442641158, 0, 0, 1], 0, 2, 4, [193.0236442641158, 0], 0, [330, 0], 0, [330, 1182], 0, [193.0236442641158, 1182], 0, true, 0, 3, 0, 0, 0, 0, 0, 9, 1, "右侧板", "鞋柜", "鞋柜左柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, "Board", 8, 2, 15732, false, 1, 5, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -17256.775064763995, 283, 3142.119629803012, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -18267.25702906688, 274.6553453088989, 3142.119629803012, 1], 0, 3, 59.99999365700023, 153.5180356971141, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1010.4819643028859, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1010.4819643028859, 0, 0, 1], 0, 2, 4, [1010.4819643028859, 0], 0, [1164, 0], 0, [1164, 59.99999365700023], 0, [1010.4819643028859, 59.99999365700023], 0, true, 0, 3, 0, 0, 0, 0, 0, 9, 2, "地脚线", "鞋柜", "鞋柜左柜", "", "", "", 1, 0, "地脚线三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "地脚线三合一", "地脚线三合一", "地脚线三合一", "地脚线三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true];
await Check(data, 1);//上一个变更,我们对1mm以下的深度碰撞进行忽略不计 Extrude.ts Func:ConverToLocalGroove if (!(ibox.getSize(size).toArray().every(x => x > 1))) return []; //2021-07-09现在又开启了这个特性
data = [2, "Board", 8, 2, 107, false, 1, 12, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -790.2005878370492, 9217.434542891759, 0.7071067811871217, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -790.2005878370492, 9024.410898627642, 0.7071067811871217, 1], 0, 3, 1182, 136.9763557358842, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -193.0236442641158, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -193.0236442641158, 0, 0, 1], 0, 2, 4, [193.0236442641158, 0], 0, [330, 0], 0, [330, 1182], 0, [193.0236442641158, 1182], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 1, "右侧板", "鞋柜", "鞋柜左柜", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 108, false, 1, 5, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -934.0558157408685, 9327.410898627642, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1944.5377800437545, 9319.06624393654, 0, 1], 0, 3, 59.99999365700023, 153.5180356971141, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1010.4819643028859, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1010.4819643028859, 0, 0, 1], 0, 2, 4, [1010.4819643028859, 0], 0, [1164, 0], 0, [1164, 59.99999365700023], 0, [1010.4819643028859, 59.99999365700023], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 2, "地脚线", "鞋柜", "鞋柜左柜", "", "", "", 1, 0, "地脚线三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "地脚线三合一", "地脚线三合一", "地脚线三合一", "地脚线三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0];
await Check(data, 1);
});
test("五金孔", async () =>
{
let data = { "file": [2, "Board", 8, 2, 9087, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 36291.119983889046, -362.1228211863199, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 36291.119983889046, -362.1228211863199, 0, 1], 0, 3, 1148, 450, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [450, 0], 0, [450, 1148], 0, [0, 1148], 0, true, 4, 3, 20, 20, 8.80000000000291, false, "Circle", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 10, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 324.2271826086958, -614.5869582319652, 0, 1], 0, 1, 10, 0, 4, 0, 0, 0, 0, 0, [0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 36300.31998388904, -282.1228211863199, 167.6515268497169, 1], 3, 20, 20, 8.80000000000291, false, "Circle", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 10, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 324.2271826086958, -614.5869582319652, 0, 1], 0, 1, 10, 0, 4, 0, 0, 0, 0, 0, [0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 36300.31998388904, -212.12282118631998, 167.6515268497169, 1], 3, 20, 20, 8.80000000000291, false, "Circle", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 10, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 324.2271826086958, -614.5869582319652, 0, 1], 0, 1, 10, 0, 4, 0, 0, 0, 0, 0, [0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 36300.31998388904, -142.12282118631992, 167.6515268497169, 1], 3, 20, 20, 8.80000000000291, false, "Circle", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 10, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 324.2271826086958, -614.5869582319652, 0, 1], 0, 1, 10, 0, 3, 0, 0, 0, 0, 0, [0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 36300.31998388904, -72.12282118631992, 167.6515268497169, 1], 3, 0, 0, 0, 0, 0, 9, 1, "立板", "主卧", "下柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, "HardwareCompositeEntity", 1, 8, 2, 9088, false, 1, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 34201.81915615466, -362.1228211863199, -606.142083904032, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 36309.119983889046, -362.1228211863199, 117.6515268497169, 1], 0, 5, "ExtrudeHole", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 2107.3008277343833, 350, 743.7936107537489, 1], 0, 0, true, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 2102.3008277343833, 450, 743.7936107537489, 1], 0, 5, 350, 0, 0, 2, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1783.8728901982536, -737.2996364928794, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1783.8728901982536, -737.2996364928794, 0, 1], 0, 2, 4, [1783.8728901982536, 737.2996364928794], 0, [1803.8728901982536, 737.2996364928794], 0, [1803.8728901982536, 817.2996364928794], 0, [1783.8728901982536, 817.2996364928794], 0, true, 3, true, "ExtrudeHole", 8, 2, 0, false, 0, 7, 0, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 2107.500827734383, 290, 773.7936107537489, 1], 0, 0, true, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 2107.500827734383, 290, 773.7936107537489, 1], 0, 5, 9, 0, 0, 2, "Circle", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 10, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 324.2271826086958, -614.5869582319652, 0, 1], 0, 1, 10, 3, true, "ExtrudeHole", 8, 2, 0, false, 0, 7, 0, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 2107.500827734383, 220, 773.7936107537489, 1], 0, 0, true, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 2107.500827734383, 220, 773.7936107537489, 1], 0, 5, 9, 0, 0, 2, "Circle", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10, 10, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 324.2271826086958, -614.5869582319652, 0, 1], 0, 1, 10, 4, true, "ExtrudeHole", 8, 2, 0, false, 0, 7, 0, [0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 2107.500827734383, 149.99999999999994, 773.7936107537489, 1], 0, 0, true, [
await Check(data, 0);//理论上4个干涉看起来不大友好,但是因为判断差集是否成功的时候不大准确,导致了这个错误. (设置一样的曲线分段后,这个结果是0)
});
test("斜板件", async () =>
{
let data = { "file": [2, "Board", 8, 2, 141, false, 1, 2, 0, [0, 1, 0, 0, -0.7071067811865476, 0, -0.7071067811865475, 0, -0.7071067811865475, 0, 0.7071067811865476, 0, 1457.168983625335, 0, 819.3295198795947, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1457.168983625335, 0, 819.3295198795947, 1], 0, 3, 761.1436553548998, 600, 17.999999999999993, false, "Polyline", 8, 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], 0, 2, 24, [0, 0], 0, [600, 0], 0, [600, 761.1436553548998], 0, [0, 761.1436553548998], 0, [0, 636.3863794624164], 0, [303, 636.3863794624164], 0, [303, 620.1863794624165], 0, [0, 620.1863794624165], 0, [0, 512.5291035699332], 0, [303, 512.5291035699332], 0, [303, 496.3291035699331], 0, [0, 496.3291035699331], 0, [0, 388.67182767745004], 0, [303, 388.67182767745004], 0, [303, 372.4718276774499], 0, [0, 372.4718276774499], 0, [0, 264.8145517849668], 0, [303, 264.8145517849668], 0, [303, 248.61455178496684], 0, [0, 248.61455178496684], 0, [0, 140.9572758924837], 0, [303, 140.9572758924837], 0, [303, 124.75727589248348], 0, [0, 124.75727589248348], 0, true, 0, 3, 0, 0, 0, 0, 0, 9, 0, "右板15", "", "", "", "", "", 0, 0, "不排", 2, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "1", "1", "1", "1", "", "", "", 24, "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, -0.7853981633974483, 0, 0, 0, true, "Board", 8, 2, 142, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1439.168983625335, 0, 281.11967972102866, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1439.168983625335, 0, 281.11967972102866, 1], 0, 3, 593.2911126104882, 600, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 593.2911126104882], 0, [0, 593.2911126104882], 0, true, 0, 3, 0, 0, 0, 0, 0, 9, 1, "右侧板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true], "basePt": { "x": 906.231221405411, "y": 0, "z": 281.11967972102866 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] };
await Check(data, 1);
});
test("鹿角干涉", async () =>
{
let data = { "file": [2, "Board", 8, 2, 100, false, 1, 1, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 18772.744294221397, 75.30508230915177, 213.02254539250862, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 18772.744294221397, 75.30508230915177, 213.02254539250862, 1], 0, 3, 426.1862999999999, 512.2803050119994, 18, false, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -11287.040410179, 7.105427357601002e-14, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -11287.040410179, 7.105427357601002e-14, 0, 1], 0, 2, 135, [11575.177889619, 183.9111], -0.254612865, [11519.549149821, 180.0828], -0.254612865, [11486.149016414, 224.733], 0.049131544, [11481.750650228, 236.3367], 0.031145283, [11479.277954769, 240.2842], 0.053715145, [11477.466271849, 226.3247], -0.006397846, [11477.461810351, 214.9593], -0.297918804, [11470.568787514, 201.8175], -0.180078198, [11411.024025155, 243.6921], 0, [11403.562761857, 234.5964], 0, [11393.787959259, 250.9923], 0, [11401.249222556, 260.0879], 0.014430924, [11396.835052412, 292.4591], -0.04253151, [11397.925134219, 355.943], 0.004683701, [11403.360754974, 426.1145], 0.240296591, [11391.815439486, 410.3221], 0.023565487, [11385.352522926, 381.8093], -0.364482816, [11378.084548262, 381.9742], -0.09837455, [11367.021626556, 391.159], 0.071116764, [11362.519097998, 395.0163], 1.02815249, [11361.370679631, 395.0163], 0.052151674, [11368.7771923, 373.0268], -0.04297448, [11381.128178264, 338.3146], -0.158396361, [11380.309935386, 317.5927], -0.132109045, [11377.959294551, 313.3645], -0.275983075, [11357.512291734, 327.2632], -0.067114461, [11343.341893042, 364.7725], 0.029838949, [11328.316966659, 413.214], 0.073072941, [11322.966435497, 421.4163], 0.135789841, [11321.766728399, 421.4163], 0.028827145, [11322.7214116, 408.9037], 0.024405929, [11327.800553142, 383.1967], -0.015601406, [11335.090914834, 349.9768], -0.061798133, [11335.786914938, 334.9212], -0.138782737, [11332.578297984, 326.6398], -0.069487037, [11306.428730945, 328.5789], 0.031600673, [11287.040410179, 331.3179], -0.144553022, [11290.424199241, 326.8061], -0.009458704, [11326.919408534, 315.4381], -0.091477617, [11367.966734075, 293.438], -0.277997279, [11382.956035178, 249.8128], -0.344624021, [11351.907237585, 261.8741], -0.015987502, [11333.313730763, 283.9223], 0.052407896, [11322.953392024, 294.2163], -0.061710025, [11321.775018611, 294.3001], 0.076426257, [11328.466369157, 272.3322], 0.106068382, [11347.011107859, 248.3883], 0.061972259, [11401.60771331, 216.2024], -0.053746633, [11445.339857422, 190.9484], -0.253436665, [11431.529139506, 186.9512], -0.035461175, [11413.310889227, 186.8128], 0.024362283, [11391.366582053, 184.9014], 0.420111382, [11393.247576808, 181.2685], 0.012212189, [11434.512618522, 176.3274], -0.062775564, [11470.7012434, 169.0987], -0.430891816, [11487.195471731, 140.6975], -0.046259578, [11479.04336139, 115.0782], 0.128917906, [11475.733345427, 75.1079], 0.068188271, [11487.362628345, 36.9554], 0, [11487.362628345, 78.8163], 0, [11505.362628345, 78.8163], 0, [11505.362628345, 14.6299], -0.014550612, [11521.804708805, 5.4898], 0.057423089, [11534.066582053, 0.1705], 0, [11534.066582053, 75.8632], 0, [11552.166582053, 75.8632], 0, [11552.166582053, 0], 0.096578936, [11581.576353606, 15.5105], 0, [11581.576353606, 80.0159], 0, [11599.576353606, 80.0159], 0, [11599.576353606, 38.2867], 0.065688118, [11610.599818679, 75.1079], 0.128917906, [11607.289802717, 115.0782], -0.047156952, [11601.02806164, 140.6975], -0.274535317, [11606.260736742, 159.8827], -0.089605693, [11652.588230602, 172.9365], 0.030873658, [11688.991201222, 180.7212], 0.050381766, [11694.916107746, 185.0219], 0.031449162, [11670.4825118, 184.6727], -0.10399231, [11640.966582053, 187.4348], -0.336449094, [11640.966582054, 191.0032], -0.036722822, [11680.533084623, 214.3934], 0.054192788, [11726.213254997, 241.6738], 0.076337606, [11753.770938476, 272.623], 0.049489895, [11762.656825324, 285.98], 0.138087058, [11763.356033891, 294.2058], 0.000047238, [11761.10014684, 291.9499], 0.09861929, [11741
await Check(data, 0);
});
test("干涉检查错误", async () =>
{
let data = { "file": [2, "Board", 8, 2, 102, false, 1, 11, 0, [-0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, -0.9975640502598242, 0.06975647374412529, 0, 0, 19556.454728975208, 767.9363869300789, 242.84526779845544, 1], 0, 0, true, [-0.9975640502598242, 0.06975647374412529, 0, 0, -0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, 19556.454728975208, 767.9363869300789, 242.84526779845544, 1], 0, 3, 1135, 600.0000000000027, 18, false, "Polyline", 8, 2, 0, false, 0, 1, 0, [1.0000000000000004, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.0000000000000004, 0, 5632.016584763501, 2521.7574867597896, 0, 1], 0, 0, true, [-0.0697564737441253, 0, -0.9975640502598244, 0, -0.9975640502598244, 0, 0.0697564737441253, 0, 0, 1, 0, 0, 5632.016584763501, 2521.7574867597896, -7.275957614183426e-12, 1], 0, 2, 6, [-5382.016584763494, -1386.7574867597896], 0, [-5632.016584763498, -1386.7574867597896], 0, [-5632.016584763496, -2521.7574867597896], 0, [-5032.016584763496, -2521.7574867597896], 0, [-5032.016584763497, -1686.7574867597896], 0, [-5382.016584763495, -1686.7574867597896], 0, true, 6, 3, 409, 5.030673312097093, 5.0418581680963825, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [5.030673312097093, 0], 0, [5.030673312097093, 409], 0, [0, 409], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, -0.9975640502598242, 0.06975647374412529, 0, 0, 19542.489716748765, 753.9899777379917, 255.8452677984559, 1], 3, 293, 5.030673312097093, 5.0418581680963825, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [5.030673312097093, 0], 0, [5.030673312097093, 293], 0, [0, 293], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, -0.9975640502598242, 0.06975647374412529, 0, 0, 19542.489716748765, 753.9899777379917, 1072.8488815631117, 1], 3, 293, 5.038666380177347, 4.945957896650957, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [5.038666380177347, 0], 0, [5.038666380177347, 293], 0, [0, 293], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, -0.9975640502598242, 0.06975647374412529, 0, 0, 19555.412614810877, 753.0334600645194, 1072.8491295150625, 1], 3, 409, 5.038666380177347, 4.945957896650957, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [5.038666380177347, 0], 0, [5.038666380177347, 409], 0, [0, 409], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, -0.9975640502598242, 0.06975647374412529, 0, 0, 19555.412614810877, 753.0334600645194, 255.8452677984559, 1], 3, 394, 5.0386663801773475, 4.945957896650957, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1.0000000000000002, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.0000000000000002, 0, 0, 0, 0, 1], 0, 0, true, [1.0000000000000002, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1.0000000000000002, 0, 0, 0, 0, 1], 0, 2, 4, [0, 0], 0, [5.038666380177347, 0], 0, [5.038666380177347, 394], 0, [0, 394], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, -0.9975640502598242, 0.06975647374412529, 0, 0, 19555.412614810877, 753.0334600645194, 670.8452677984554, 1], 3, 394, 5.030673312097093, 5.0418581680963825, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [5.030673312097093, 0], 0, [5.030673312097093, 394], 0, [0, 394], 0, true, 0, 3, 0, 0, 0, 0, 0, [-0.06975647374412529, -0.9975640502598242, 0, 0, 0, 0, 1, 0, -0.9975640502598242, 0.06975647374412529, 0, 0, 19542.489716748765, 753.9899777379917, 670.8
await Check(data, 0);
});
test("3干涉背板", async () =>
{
let data = { "file": [3, "Board", 8, 2, 100, false, 1, 3, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -351.8109794803895, -112.36982647504192, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -346.8109794803895, -594.3698264750419, 5, 1], 0, 3, 949.9999999999998, 942, 6, true, "Polyline", 8, 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], 0, 2, 4, [942, 0], 0, [942, 949.9999999999998], 0, [-1.468822192785737e-15, 949.9999999999995], 0, [0, 0], 0, true, 0, 3, 6, 0, 1, 0, 0, 10, 2, "薄背板", "麓府2-202", "2.次卧1衣柜", "", "多层板", "TYH-8076", 1, 1, "三合一", 2, 4, 0, 0, 0, 0, "0", "0", "0", "0", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", false, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 101, false, 1, 5, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -346.8109794803895, -106.36982647504192, 944.9999999999991, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -346.8109794803895, -594.3698264750419, 5, 1], 0, 3, 120, 932, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5, 0, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -5, 0, 0, 1], 0, 2, 4, [937, 2.2737367544323206e-13], 0, [937, 120], 0, [5, 120], 0, [5, 0], 0, true, 0, 3, 6, 0, 1, 0, 0, 10, 2, "背拉条", "麓府2-202", "2.次卧1衣柜", "", "多层板", "TYH-8076", 1, 1, "三合一", 2, 4, 0.6, 0.6, 0.6, 0.6, "0.6", "0.6", "0.6", "0.6", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", false, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 102, false, 1, 3, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -351.8109794803895, -112.36982647504192, 1059.999999999999, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -346.8109794803895, -594.3698264750419, 5, 1], 0, 3, 942.0000000000005, 942, 6, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 140, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 140, 0, 1], 0, 2, 4, [942, -140], 0, [942, 802.0000000000005], 0, [0, 802.0000000000005], 0, [0, -140], 0, true, 0, 3, 6, 0, 1, 0, 0, 10, 2, "薄背板", "麓府2-202", "2.次卧1衣柜", "", "多层板", "TYH-8076", 1, 1, "三合一", 2, 4, 0, 0, 0, 0, "0", "0", "0", "0", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", false, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0], "basePt": { "x": -351.8109794803895, "y": -124.36982647504192, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
await Check(data, 2);
});
test("重叠板件", async () =>
{
let data = { "file": [2, "Board", 8, 2, 103, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 3099.0177832142217, -138.39374678209424, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3099.0177832142217, -138.39374678209424, 0, 1], 0, 3, 1200, 600, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 0, "层板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 104, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 3099.0177832142217, -138.39374678209424, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3099.0177832142217, -138.39374678209424, 0, 1], 0, 3, 1200, 600, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [600, 0], 0, [600, 1200], 0, [0, 1200], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 0, "层板", "", "", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0], "basePt": { "x": 1899.0177832142217, "y": -138.39374678209424, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
await Check(data, 1);
});
test("板件倾斜", async () =>
{
let data = { "file": [4, "Board", 8, 2, 100, false, 1, 2, 0, [0, 0.9831300494835278, 0.18290791618329785, 0, -1, 0, 0, 0, 0, -0.18290791618329785, 0.9831300494835278, 0, 1108.4743411927875, 128.72923569518287, 1025.1786752030148, 1], 0, 0, true, [1, 0, 0, 0, 0, 0.9831300494835278, 0.18290791618329785, 0, 0, -0.18290791618329785, 0.9831300494835278, 0, 1108.6443411927876, 126.76297559621582, 1024.8128593706488, 1], 0, 3, 750, 430.6086591386313, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2, -0.17000000000007276, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2, -0.17000000000007276, 0, 1], 0, 2, 4, [2, 0.17000000000007276], 0, [432.6086591386313, 0.17000000000007276], 0, [432.6086591386313, 750.1700000000001], 0, [2, 750.1700000000001], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 0, "顶板", "", "讲桌", "18颗粒蓝色", "颗粒板", "蓝色", 0, 1, "**多种**", 2, 0, "1.5", "1.5", "1.5", "1.5", "", "", "", 4, "三合一", "不排", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 101, false, 1, 3, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 483.4743411927875, 559.6438564782645, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 483.4743411927875, 559.6438564782645, 0, 1], 0, 3, 1160, 500, 18, false, "Polyline", 8, 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], 0, 2, 6, [0, 0], 0, [500, 0], 0, [500, 1130], 0.41421356237309503, [470, 1160], 0, [30, 1160], 0.41421356237309503, [0, 1130], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 2, "封板", "", "讲桌", "18颗粒蓝色", "颗粒板", "蓝色", 0, 1, "不排", 2, 0, "0.6", "0.6", "0.6", "0.6", "", "", "", 6, "不排", "不排", "不排", "不排", "不排", "不排", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 113, false, 1, 2, 0, [0, 0.9831300494835278, 0.18290791618329785, 0, -1, 0, 0, 0, 0, -0.18290791618329785, 0.9831300494835278, 0, 1108.4743411927875, 637.6961828178574, 1044.0516874415487, 1], 0, 0, true, [1, 0, 0, 0, 0, 0.9831300494835278, 0.18290791618329785, 0, 0, -0.18290791618329785, 0.9831300494835278, 0, 1108.6443411927876, 635.7299227188904, 1043.6858716091826, 1], 0, 3, 750, 430.6086591386313, 18, true, "Polyline", 8, 2, 0, false, 0, 7, 0, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2, -0.17000000000007276, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -2, -0.17000000000007276, 0, 1], 0, 2, 4, [2, 0.17000000000007276], 0, [432.6086591386313, 0.17000000000007276], 0, [432.6086591386313, 750.1700000000001], 0, [2, 750.1700000000001], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 0, "顶板", "", "讲桌", "18颗粒蓝色", "颗粒板", "蓝色", 0, 1, "**多种**", 2, 0, "1.5", "1.5", "1.5", "1.5", "", "", "", 4, "三合一", "不排", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 114, false, 1, 3, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 483.4743411927875, 1075.7481526935562, 18.873012238533875, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 483.4743411927875, 1075.7481526935562, 18.873012238533875, 1], 0, 3, 1160, 500, 18, false, "Polyline", 8, 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], 0, 2, 6, [0, 0], 0, [500, 0], 0, [500, 1130], 0.41421356237309503, [470, 1160], 0, [30, 1160], 0.41421356237309503, [0, 1130], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 2, "封板", "", "讲桌", "18颗粒蓝色", "颗粒板", "蓝色", 0, 1, "不排", 2, 0, "0.6", "0.6", "0.6", "0.6", "", "", "", 6, "不排", "不排", "不排", "不排", "不排", "不排", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0], "basePt": { "x": 358.4743411927875, "y": 125.4368932038835, "z": 0 }, "ucs": [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1] };
await Check(data, 2);
});
test('精度问题导致的干涉检查错误', async () =>
{
let d = { "file": [2, "Board", 8, 2, 104, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -762.4275697786074, 100, 2800.6163080949336, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -762.4275697786074, 100, 2800.6163080949336, 1], 0, 3, 172, 300, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [300, 0], 0, [300, 172], 0, [0, 172], 0, true, 1, 3, 159, 9, 4.996599999996761, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [9, 0], 0, [9, 159], 0, [0, 159], 0, true, 0, 3, 0, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -762.4275697786074, 371, 2813.6163080949336, 1], 3, 0, 0, 0, 0, 0, 10, 1, "立板", "", "1", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 3, 103, 2, 3, 148, 149, 150, 3, 151, 152, 153, 105, 2, 3, 156, 157, 158, 3, 159, 160, 161, 107, 2, 3, 164, 165, 166, 3, 167, 168, 169, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 193, false, 1, 3, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, -1301.7609697786106, 380, 2813.6163080949336, 1], 192, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1301.7609697786106, 380, 2813.6163080949336, 1], 0, 3, 164, 544.3299999999999, 9, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [544.3299999999999, 0], 0, [544.3299999999999, 164], 0, [0, 164], 0, true, 0, 3, 0, 0, 0, 0, 0, 10, 2, "背板", "", "1", "", "", "", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", false, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0], "basePt": { "x": -1301.7609697786106, "y": 100, "z": 2800.6163080949336 }, "ucs": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] };
await Check(d, 0);
});
test('精度问题导致的干涉检查错误2', async () =>
{
let d = { "file": [6, "Board", 8, 2, 102, false, 1, 2, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2122.090449307405, 53.524216164179364, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2122.090449307405, 53.524216164179364, 0, 1], 0, 3, 1166.67, 480, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [480, 0], 0, [480, 1166.67], 0, [0, 1166.67], 0, true, 2, 3, 1166.67, 9, 5.00333333399783, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [9, 0], 0, [9, 1166.67], 0, [0, 1166.67], 0, true, 0, 5, 6, 1, 1, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2122.090449307405, 506.5242161641794, 0, 1], 3, 1166.67, 9, 5, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [9, 0], 0, [9, 1166.67], 0, [0, 1166.67], 0, true, 0, 5, 6, 1, 1, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2135.090449307405, 506.5242161641794, 0, 1], 3, 0, 0, 0, 0, 0, 10, 1, "右侧板", "次卧2", "衣柜", "科技原木", "多层板", "科技原木", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 103, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 2608.423782641403, 53.524216164179364, 1166.6671609740006, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 2608.423782641403, 53.524216164179364, 1166.6671609740006, 1], 0, 3, 1432, 480, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [480, 0], 0, [480, 1432], 0, [0, 1432], 0, true, 2, 3, 950.67, 9, 5.002839025999492, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [9, 0], 0, [9, 950.67], 0, [0, 950.67], 0, true, 0, 5, 6, 1, 1, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 2127.093782641401, 506.5242161641794, 1166.6671609740006, 1], 3, 473.33333333399787, 9, 5.002839025999492, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [9, 0], 0, [9, 473.33333333399787], 0, [0, 473.33333333399787], 0, true, 0, 5, 6, 1, 1, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 2608.423782641403, 506.5242161641794, 1166.6671609740006, 1], 3, 0, 0, 0, 0, 0, 10, 0, "顶板", "次卧2", "衣柜", "科技原木", "多层板", "科技原木", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 104, false, 1, 2, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 5745.042300967834, 108.6197325287223, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 5745.042300967834, 108.6197325287223, 0, 1], 0, 3, 782.33, 430, 18, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [430, 0], 0, [430, 782.33], 0, [0, 782.33], 0, true, 1, 3, 769.3300000000017, 9, 5, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [9, 0], 0, [9, 769.3300000000017], 0, [0, 769.3300000000017], 0, true, 0, 5, 6, 1, 1, 0, 0, [0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 5745.042300967834, 511.6197325287223, 13, 1], 3, 0, 0, 0, 0, 0, 10, 0, "底板", "电视柜", "电视柜", "科技原木", "多层板", "科技原木", 0, 1, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, t
await Check(d, 0);
});
test('精度问题导致的干涉错误3', async () =>
{
let d =
{ "file": [2, "Board", 8, 2, 100, false, 1, 11, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 279.67078189300446, 184.15912208504804, 0, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 279.67078189300446, 184.15912208504804, 0, 1], 0, 3, 2349, 330, 17, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [330, 0], 0, [330, 2349], 0, [0, 2349], 0, true, 1, 3, 976.6666666666679, 6, 5, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [6, 0], 0, [6, 976.6666666666679], 0, [0, 976.6666666666679], 0, true, 0, 2.5, 6, 0, 0, 0, 0, [0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 291.67078189300446, 490.159122085048, 1360.3333333333321, 1], 3, 0, 0, 0, 0, 0, 10, 1, "左侧板", "客厅", "鞋柜", "", "", "", 0, 0, "三合一", 2, 0, "1", "1", "1", "1", "", "", "", 4, "三合一", "三合一", "三合一", "三合一", true, true, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0, "Board", 8, 2, 101, false, 1, 3, 0, [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 291.67078189300446, 496.159122085048, 1360.3333333333321, 1], 0, 0, true, [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 296.67078189300446, 184.15912208504804, 1365.3333333333321, 1], 0, 3, 976.6666666666679, 768, 6, true, "Polyline", 8, 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], 0, 2, 4, [0, 0], 0, [768, 0], 0, [768, 976.6666666666679], 0, [0, 976.6666666666679], 0, true, 0, 2.5, 6, 0, 0, 0, 0, 10, 2, "薄背板", "客厅", "鞋柜", "", "", "", 0, 1, "不排", 2, 0, "0", "0", "0", "0", "", "", "", 4, "不排", "不排", "不排", "不排", false, false, 0, 0, 0, 0, 0, 0, 0, 0, true, 0, 0], "basePt": { "x": 279.67078189300446, "y": 184.15912208504804, "z": 0 }, "ucs": [1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 1] };
await Check(d, 0);
});
});