【UG/NX二次开发】导出选择对象的STEP文件

我已经尽我所能确保信息的准确性,但是如果您发现任何错误或不准确的地方,请随时在评论区指出。我非常感谢您的反馈,这将帮助我改进我的内容。

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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值