PLM之家PLMHome-工业软件践行者

[二次开发源码] NX二次开发源码分享:选择体导出Step格式

[复制链接]

2016-12-25 10:40:44 2807 0

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2016-12-25 10:40:44 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x

  K$ l/ R: x4 v' G9 g7 ?. z% fNX二次开发源码分享:选择体导出Step格式
4 ^! ]. ]) L, N# X" @
6 y5 G! }+ Q( t2 D& C1 Lvoid StepExport::do_it()9 d' c0 v, N! U! ~5 y
{7 ~" d( n7 ^% W) s/ Q: _* f
    std::vector<TaggedObject*> objectArray;
7 s# @$ a6 u4 W9 {5 [    if (select_bodies(objectArray))
% r/ F5 E- X+ b: a/ J) }    {2 H# c. d; s3 g1 }% z! h
        NXOpen::Session::UndoMarkId markId1;
8 N5 h+ v7 f( \9 P5 J        markId1 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, "Start");
- c1 W$ Y8 O" C7 R7 J        NXString sBaseDir = theSession->GetEnvironmentVariableValue("UGII_BASE_DIR");2 g: f: u$ y- t$ \+ a! I
        NXString sCfgFile = sBaseDir + "\\step214ug\\ugstep214.def";8 b/ p9 {, r! N3 }7 {8 T
        NXString sPartSpec = displayPart->FullPath();
) f6 E- f, N: ^  c4 U        std::string sFolder = sPartSpec.GetText();$ J( j* o' Y, l( y8 k
        std::size_t found = sFolder.find_last_of(".");
9 B3 b9 W& b. H0 p7 f        NXString sStepSpec = sFolder.substr(0, found) + ".stp";
& k) @- J# Z' {: x1 m        NXOpen::StepCreator *stepCreator1;  t% ^' C2 J! X5 T$ m6 W6 P/ B# |
        stepCreator1 = theSession->DexManager()->CreateStepCreator();4 Z1 z2 G# L; O* w) g, C
        stepCreator1->SetExportAs(NXOpen::StepCreator::ExportAsOptionAp214);9 _% t1 ]' k2 S
        stepCreator1->ExportSelectionBlock()->SetSelectionScope(NXOpen::ObjectSelector::ScopeSelectedObjects);
% `7 X( J# A+ F1 e! ?1 ^! p        stepCreator1->ObjectTypes()->SetSolids(true);4 Q/ K8 x+ c/ d, H. j  B
        stepCreator1->SetSettingsFile(sCfgFile);. L4 L* S( x0 s( Z: r; ], N
        stepCreator1->SetInputFile(sPartSpec);" ]2 D5 X$ s! P. F$ U
        stepCreator1->SetOutputFile(sStepSpec);" Z# m! G3 ?8 \3 v
        stepCreator1->SetFileSaveFlag(false);- T# Z1 V/ W  t5 a9 s( k1 n
        stepCreator1->SetLayerMask("1-256");
) F/ \, M* P' W7 x        std::stringstream sBodyList("");
5 `/ _2 g0 N6 R        std::vector<TaggedObject*>::iterator iter;' C9 R7 Q; W' ]7 T/ g: A9 u% q
        bool added1;8 `% S$ W. D" G" t5 x; g
        for (iter = objectArray.begin(); iter != objectArray.end(); ++iter)
( W# |# s! X. z, s' J0 o% K7 L* _        {$ Z2 g8 c6 I. C
            Body* theBody = dynamic_cast<NXOpen::Body*>(*iter);
9 E- [$ W: g/ T  d1 U  q0 l' }; B            if (theBody)4 J3 }* P7 B3 i. B  O
            {$ d2 O& ^9 ]2 @2 X; W$ t/ B
                added1 = stepCreator1->ExportSelectionBlock()->SelectionComp()->Add(theBody);
1 n  a3 b3 ^0 ?9 n                sBodyList << "Adding Body " << (theBody)->Tag() << std::endl;' h1 E8 y* s! Z
            }
4 T4 ?# N. i; `, P; C# d        }
7 X+ R. R3 p8 ^6 s+ A9 R- V3 @        // Debug output3 l) ?0 m) }2 w0 I( E
        print("UGII_BASE_DIR = " + sBaseDir);& a. n/ |* H: k- l2 h3 W
        print("Settings File = " + sCfgFile);
- L. o( v  Z1 H- X. n        print("Input File = " + sPartSpec);
- q6 d: F' `) Y5 [% [8 d        print("Output File = " + sStepSpec);
, H5 X" V  ]2 u        print(sBodyList.str());
6 G* k7 ?0 H' |% u  c! ^& f        NXOpen::NXObject *nXObject1 = stepCreator1->Commit();
6 [7 K( E/ ~' q& A( t        stepCreator1->Destroy();
5 Y4 ~/ F8 }$ j& y    }+ \' A$ x  Z4 D" c  i; n+ x
   
' T* E8 ^0 T) H9 a) Y6 Q: f. _8 B8 D}& v2 |1 l$ f" ]* I9 z
- T( r$ L" \" I4 C1 E8 F
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了