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 }