| 
						
						
						
					 | 
				
				 | 
				
					@ -1,5 +1,5 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "organizer/loader.hpp" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "example_loader2.hpp" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#include "organizer/loader.hpp" | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					void loaderTest1() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -782,15 +782,15 @@ void loaderTest2() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 体111和体13布尔并 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loader.unionNode(tag111, tag13); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    before = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // before = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 体1和体111布尔差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loader.differentNode(tag1, tag111); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    after = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // after = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 获取体1 布尔前后的体积差和面积差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    areaDifference   = after.first - before.first; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    volumeDifference = after.second - before.second; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cout << areaDifference << ", " << volumeDifference << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // areaDifference = after.first - before.first;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // volumeDifference = after.second - before.second;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // std::cout << areaDifference << ", " << volumeDifference << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 定义空体 扣减体1 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto subTag1 = loader.addEmpty(); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -902,15 +902,15 @@ void loaderTest2() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    points.push_back(Point3D{-23121.583250388911, 11781.089681679974, -2900.0000000000000}); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for (auto& point : points) { cycle(point); } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    before = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // before = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 体1和扣减体1布尔差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loader.differentNode(tag1, subTag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    after = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // after = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 获取 体1 布尔前后的 体积差 和 面积差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    areaDifference   = after.first - before.first; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    volumeDifference = after.second - before.second; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cout << areaDifference << ", " << volumeDifference << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // areaDifference = after.first - before.first;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // volumeDifference = after.second - before.second;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // std::cout << areaDifference << ", " << volumeDifference << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 体15:Ent1.bool */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    bottomPoint  = Point3D{0.0000, 0.0000, -3600.0000}; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1068,15 +1068,15 @@ void loaderTest2() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    offset    = -2900; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loader.offset(tag22, direction, offset); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    before = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // before = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 体1和体22布尔差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loader.differentNode(tag1, tag22); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    after = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // after = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 获取体1 布尔前后的体积差和面积差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    areaDifference   = after.first - before.first; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    volumeDifference = after.second - before.second; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cout << areaDifference << ", " << volumeDifference << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // areaDifference = after.first - before.first;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // volumeDifference = after.second - before.second;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // std::cout << areaDifference << ", " << volumeDifference << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 体23 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    points.clear(); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1097,15 +1097,15 @@ void loaderTest2() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    offset    = -2900; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loader.offset(tag23, direction, offset); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    before = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // before = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 体1和体23布尔差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loader.differentNode(tag1, tag23); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    after = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // after = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 获取体1 布尔前后的体积差和面积差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    areaDifference   = after.first - before.first; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    volumeDifference = after.second - before.second; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cout << areaDifference << ", " << volumeDifference << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // areaDifference = after.first - before.first;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // volumeDifference = after.second - before.second;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // std::cout << areaDifference << ", " << volumeDifference << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 以下为一个循环,凸度组固定,但点组不一样,其他操作一致 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    auto cycle1 = [&loader, tag1](const Point3D& point1, const Point3D point2) { | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1326,20 +1326,25 @@ void loaderTest2() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    points.push_back(Point3D{9439.2132826892957, -23922.043573038238, 0.0000000000000000}); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    points.push_back(Point3D{8993.7087385355990, -24149.036306706977, 0.0000000000000000}); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    before = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // before = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    for (size_t i = 0; i < points.size(); i += 4) { cycle2(points[i], points[i + 1], points[i + 2], points[i + 3]); } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    after = loader.getAreaAndVolume(tag1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // after = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    /* 获取体1 布尔前后的体积差和面积差 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    areaDifference   = after.first - before.first; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    volumeDifference = after.second - before.second; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    std::cout << areaDifference << ", " << volumeDifference << std::endl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // areaDifference = after.first - before.first;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // volumeDifference = after.second - before.second;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // std::cout << areaDifference << ", " << volumeDifference << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    //auto result = loader.getAreaAndVolume(tag1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    //std::cout << "result:" << result.first << ", " << result.second << std::endl;
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						loader.output(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					int main(int argc, char** argv) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					{ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // loaderTest1();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loaderTest2(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // loaderPolyTilted();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    loaderPolyThickPlane(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    // loaderPolyThickPlane();
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    return 0; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
				 | 
				
					
  |