#include <uf_obj.h>
#include <uf_assem.h>
#include <uf_modl.h>
#include <uf_ui.h>
#include <NXOpen/GeometricAnalysis_SimpleInterference.hxx>
#include <NXOpen/GeometricAnalysis_AnalysisManager.hxx>
std::vector<tag_t> GetInterferenceFace(tag_t solidTAG1, tag_t solidTAG2)
{
NXOpen::Session *theSession = NXOpen::Session::GetSession();
NXOpen::Part *workPart(theSession->Parts()->Work());
NXOpen::Part *displayPart(theSession->Parts()->Display());
std::vector<NXObject*>faces_object_collection;
std::vector<tag_t>faces_tag_collection;
NXOpen::GeometricAnalysis::SimpleInterference *simpleInterference1;
simpleInterference1 = workPart->AnalysisManager()->CreateSimpleInterferenceObject();
simpleInterference1->SetInterferenceType(NXOpen::GeometricAnalysis::SimpleInterference::InterferenceMethodInterferenceSolid);
simpleInterference1->SetFaceInterferenceType(NXOpen::GeometricAnalysis::SimpleInterference::FaceInterferenceMethodAllPairs);
NXOpen::Body *body1(dynamic_cast<NXOpen::Body *>(NXOpen::NXObjectManager::Get(solidTAG1)));//将solidTAG1转换为NXOpen对象
simpleInterference1->FirstBody()->SetValue(body1);
NXOpen::Body *body2(dynamic_cast<NXOpen::Body *>(NXOpen::NXObjectManager::Get(solidTAG2)));//将solidTAG2转换为NXOpen对象
simpleInterference1->SecondBody()->SetValue(body2);
simpleInterference1->SetInterferenceType(NXOpen::GeometricAnalysis::SimpleInterference::InterferenceMethodInterferingFaces);//设置输出为面对。
simpleInterference1->Reset();
NXOpen::GeometricAnalysis::SimpleInterference::Result result1;
result1 = simpleInterference1->PerformCheck();
faces_object_collection = simpleInterference1->GetInterferenceResults();//获得简单干涉结果,并将面对导入容器。前两个对象代表第一对干扰面,接下来的两个对象代表第二对干扰面,以此类推。
for (int i = 0; i < faces_object_collection.size(); i++)
{
faces_tag_collection.push_back(faces_object_collection[i]->Tag());//将NX对象转换成UF对象。
}
simpleInterference1->Reset();
simpleInterference1->Destroy();
theSession->CleanUpFacetedFacesAndEdges();
return faces_tag_collection;//返回干涉面对Tag的容器。
}
【UG\NX二次开发】NXOpen 简单干涉 求干涉面 (SimpleInterference)
于 2023-11-09 21:42:06 首次发布