#include "organizer/loader.hpp" void loaderTest1() { Loader loader; std::vector points; std::vector bulges; Vector3D extusion; Point3D topPoint, bottomPoint, basePoint; Direction3D direction; double offset, radius1, radius2; /* 体1 */ points.clear(); bulges.clear(); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.99999999999999989); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag1 = loader.addExtrude(points, bulges, extusion); loader.output(tag1); /* 体2 */ points.clear(); bulges.clear(); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag2 = loader.addExtrude(points, bulges, extusion); /* 体3 */ points.clear(); bulges.clear(); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag3 = loader.addExtrude(points, bulges, extusion); /* 体4 */ topPoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 0.0000000000000000}; bottomPoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 3300.0000000000000000}; radius1 = 32450.000000000000; radius2 = 33539.000000000000; auto tag4 = loader.addCone(topPoint, bottomPoint, radius1, radius2); /* 体3被切割 */ basePoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 0.0000000000000000}; direction = Direction3D{0, 0, 1}; loader.split(tag3, basePoint, direction); /* 体3和体4布尔差 */ loader.differentNode(tag3, tag4); /* 体5 */ points.clear(); bulges.clear(); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag5 = loader.addExtrude(points, bulges, extusion); /* 体5被切割 */ basePoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 3300.0000000000000000}; direction = Direction3D{0, 0, 1}; loader.split(tag3, basePoint, direction); /* 体3和体5布尔并 */ loader.unionNode(tag3, tag5); /* 体6 */ points.clear(); bulges.clear(); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392534654100421e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391228016184551e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag6 = loader.addExtrude(points, bulges, extusion); /* 体6被切割 */ basePoint = Point3D{-1.1224183253943920e-06, -3.8391322798592142e-07, 3300.0000000000000000}; direction = Direction3D{0, 0, 1}; loader.split(tag6, basePoint, direction); /* 体3和体6布尔并 */ loader.unionNode(tag3, tag6); /* 体2和体3布尔差 */ loader.differentNode(tag2, tag3); /* 体7 */ points.clear(); bulges.clear(); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag7 = loader.addExtrude(points, bulges, extusion); /* 体8 */ points.clear(); bulges.clear(); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag8 = loader.addExtrude(points, bulges, extusion); /* 体9 */ topPoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 0.0000000000000000}; bottomPoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; radius1 = 32450.000000000000; radius2 = 33539.000000000000; auto tag9 = loader.addCone(topPoint, bottomPoint, radius1, radius2); /* 体8被切割 */ basePoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; direction = Direction3D{0, 0, 1}; loader.split(tag8, basePoint, direction); /* 体8和体9布尔差 */ loader.differentNode(tag8, tag9); /* 体10 */ points.clear(); bulges.clear(); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag10 = loader.addExtrude(points, bulges, extusion); /* 体10被切割 */ basePoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; direction = Direction3D{0, 0, 1}; loader.split(tag10, basePoint, direction); /* 体8和体10布尔并 */ loader.unionNode(tag8, tag10); /* 体11 */ points.clear(); bulges.clear(); points.push_back(Point3D{32449.999998877582, -3.8392495305561452e-07, 0.0000000000000000}); points.push_back(Point3D{-32450.000001122418, -3.8391231093737305e-07, 0.0000000000000000}); points.push_back(Point3D{-33539.000001122418, -3.8391191745198337e-07, 0.0000000000000000}); points.push_back(Point3D{33538.999998877582, -3.8392498383114206e-07, 0.0000000000000000}); bulges.push_back(0.99999999999999989); bulges.push_back(0.0000000000000000); bulges.push_back(-0.99999999999999989); bulges.push_back(0.0000000000000000); extusion = Vector3D{0.0000000000000000, 0.0000000000000000, 3300.0000000000000}; auto tag11 = loader.addExtrude(points, bulges, extusion); /* 体11被切割 */ basePoint = Point3D{-1.1224183253943920e-06, -3.8392403600706615e-07, 3300.0000000000000000}; direction = Direction3D{0, 0, 1}; loader.split(tag11, basePoint, direction); /* 体8和体11布尔并 */ loader.unionNode(tag8, tag11); /* 体7和体8布尔差 */ loader.differentNode(tag7, tag8); /* 体2和体7布尔并 */ loader.unionNode(tag2, tag7); /* 体1和体2布尔并 */ loader.unionNode(tag1, tag2); /* 体1 Z轴偏移 -3600 */ direction = Direction3D{0, 0, 1}; offset = -3600; loader.offset(tag1, direction, offset); } int main(int argc, char** argv) { loaderTest1(); return 0; }