1. 程式人生 > 實用技巧 >獲取面面積,資料來自錄製和網友分享

獲取面面積,資料來自錄製和網友分享

 1 #include <NXOpen/MeasureBuilder.hxx>
 2 #include <NXOpen/MeasureFaceBuilder.hxx>
 3 #include <NXOpen/MeasureFaces.hxx>
 4 #include <NXOpen/Unit.hxx>
 5 #include <NXOpen/UnitCollection.hxx>
 6 #include <NXOpen/NXObject.hxx>
 7 #include <NXOpen/NXObjectManager.hxx>
 8
9 double GetFaceArea(Face* face)//獲取面積 10 { 11 Session* theSession = Session::GetSession(); 12 Part* workPart(theSession->Parts()->Work()); 13 Part* displayPart(theSession->Parts()->Display()); 14 NXObject* nullNXObject(NULL); 15 NXOpen::MeasureFaceBuilder* measureFaceBuilder1;
16 measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject); 17 std::vector<IParameterizedSurface*> objects1(1); 18 objects1[0] = face; 19 MeasureFaces* measureFaces1; 20 measureFaces1 = workPart->MeasureManager()->NewFaceProperties(NULL, NULL, 0.9999
, objects1); 21 measureFaceBuilder1->Commit(); 22 ///measureFaceBuilder1->FaceObjects()->Clear(); 23 measureFaceBuilder1->Destroy(); 24 theSession->CleanUpFacetedFacesAndEdges(); 25 double areaValue = measureFaces1->Area(); 26 return areaValue; 27 } 28 29 double GetFaceArea(tag_t face)//獲取面積//過載tag_t 30 { 31 Session* theSession = Session::GetSession(); 32 Part* workPart(theSession->Parts()->Work()); 33 Part* displayPart(theSession->Parts()->Display()); 34 NXObject* nullNXObject(NULL); 35 NXOpen::MeasureFaceBuilder* measureFaceBuilder1; 36 measureFaceBuilder1 = workPart->MeasureManager()->CreateMeasureFaceBuilder(nullNXObject); 37 std::vector<IParameterizedSurface*> objects1(1); 38 objects1[0] = dynamic_cast<NXOpen::Face*>(NXObjectManager::Get(face)); 39 //NXOpen::Unit* unit1(dynamic_cast<NXOpen::Unit*>(workPart->UnitCollection()->FindObject("SquareMilliMeter"))); 40 //NXOpen::Unit* unit2(dynamic_cast<NXOpen::Unit*>(workPart->UnitCollection()->FindObject("MilliMeter"))); 41 MeasureFaces* measureFaces1; 42 measureFaces1 = workPart->MeasureManager()->NewFaceProperties(NULL, NULL, 0.9999, objects1); 43 measureFaceBuilder1->Commit(); 44 ///measureFaceBuilder1->FaceObjects()->Clear(); 45 measureFaceBuilder1->Destroy(); 46 theSession->CleanUpFacetedFacesAndEdges(); 47 double areaValue = measureFaces1->Area(); 48 return areaValue; 49 }