NX/UG二次开发——简单干涉
简单干涉
以下内容对UG中(分析-简单干涉)进行了二次开发
代码所需包含的额外头文件
#include <uf_obj.h>
#include <uf_assem.h>
#include <uf_modl.h>
#include <uf_ui.h>
#include <NXOpen/GeometricAnalysis_SimpleInterference.hxx>
1.简单干涉获得面对。
std::vector<tag_t> SimpleInterference(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 < size(faces_object_collection); i++)
{
faces_tag_collection.push_back(faces_object_collection[i]->Tag());//将NX对象转换成UF对象。
}
simpleInterference1->Reset();
simpleInterference1->Destroy();
theSession->CleanUpFacetedFacesAndEdges();
return faces_tag_collection;//返回干涉面对Tag的容器。
}
2.简单干涉获得体。
tag_t SimpleInterference(tag_t solidTAG1, tag_t solidTAG2)//输入为两个需要简单干涉的实体,输出为干涉体的Tag。
{
NXOpen::Session *theSession = NXOpen::Session::GetSession();
NXOpen::Part *workPart(theSession->Parts()->Work());
NXOpen::Part *displayPart(theSession->Parts()->Display());
std::vector<NXObject*>body_object_collection;
tag_t body_tag;
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);
NXOpen::GeometricAnalysis::SimpleInterference::Result result1;
result1 = simpleInterference1->PerformCheck();
body_object_collection = simpleInterference1->GetInterferenceResults();//获得简单干涉后的体。
body_tag = body_object_collection[0]->Tag();//默认简单干涉生成了一个实体,将该实体转换成UFun对象。
return body_tag;//返回简单干涉生成的体的Tag。
}