我已经尽我所能确保信息的准确性,但是如果您发现任何错误或不准确的地方,请随时在评论区指出。我非常感谢您的反馈,这将帮助我改进我的内容。
UG系统环境变量设置
正确安装UG软件应该都有UGII_BASE_DIR这个系统变量
代码
void export_step_file(vector<TaggedObject*> tag_objs) {
NXOpen::Session* theSession = NXOpen::Session::GetSession();
NXOpen::Part* workPart(theSession->Parts()->Work());
NXOpen::Part* displayPart(theSession->Parts()->Display());
NXOpen::StepCreator* stepCreator1;
stepCreator1 = theSession->DexManager()->CreateStepCreator();
stepCreator1->SetExportAs(NXOpen::StepCreator::ExportAsOptionAp214);
char* ugii_base_dir = getenv("UGII_BASE_DIR");
string str_ugstep214(ugii_base_dir);
str_ugstep214 += "\\step214ug\\ugstep214.def";
stepCreator1->SetSettingsFile(str_ugstep214.c_str());
stepCreator1->ExportSelectionBlock()->SetSelectionScope(NXOpen::ObjectSelector::ScopeSelectedObjects);
vector<NXObject*> nx_objs;
for (TaggedObject* tag_obj : tag_objs) {
tag_t tag = tag_obj->Tag();
NXObject* nx_obj = dynamic_cast<NXOpen::NXObject*> (NXOpen::NXObjectManager::Get(tag));
nx_objs.push_back(nx_obj);
}
bool added1;
added1 = stepCreator1->ExportSelectionBlock()->SelectionComp()->Add(nx_objs);
string stp_path = "step_file_path.stp";
stepCreator1->SetOutputFile(stp_path.c_str());
stepCreator1->SetFileSaveFlag(false);
stepCreator1->SetLayerMask("1-256");
stepCreator1->SetProcessHoldFlag(true);
NXOpen::NXObject* nXObject1;
nXObject1 = stepCreator1->Commit();
stepCreator1->Destroy();
}
int demo::update_cb(NXOpen::BlockStyler::UIBlock* block)
{
try
{
if (block == blockStyler1){
UF_initialize();
// 定义接收选择对象的容器
vector<TaggedObject*> selectobs;
// 从对象选择器中得到选择对象
selectobs = selector -> GetSelectedObjects();
export_step_file(selectobs);
}
else if (block == blockStyler2){
}
}
catch(exception& ex)
{
//---- Enter your exception handling code here -----
demo::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
return 0;
}