PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

admin 发表于 2016-12-25 10:40:44 |阅读模式

admin 楼主

2016-12-25 10:40:44

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

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

x
4 q8 P: C% k( O/ e& _
NX二次开发源码分享:选择体导出Step格式. I8 F( w  U% I7 {* f
% a' j/ M1 l( c4 n3 B$ z- [2 Y2 A
void StepExport::do_it()
* I- u+ _% b' a( T) L{" q1 ?6 v: _* H0 R3 O  a
    std::vector<TaggedObject*> objectArray;
0 z* I2 K- z8 U; q: K& j9 o8 B    if (select_bodies(objectArray))9 l* E  s8 o/ C
    {. j, e- a' R& Y5 p) U
        NXOpen::Session::UndoMarkId markId1;
: U/ K8 v) c$ ]* J+ d: k        markId1 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, "Start");
# I; Y, s3 O, o0 X$ y6 J- [  x        NXString sBaseDir = theSession->GetEnvironmentVariableValue("UGII_BASE_DIR");. O) `+ a8 O. U
        NXString sCfgFile = sBaseDir + "\\step214ug\\ugstep214.def";) e# I- o5 e/ }- \9 `- X
        NXString sPartSpec = displayPart->FullPath();0 v" M3 h! y$ t
        std::string sFolder = sPartSpec.GetText();
8 r9 `7 Q! f$ w1 @6 H5 P        std::size_t found = sFolder.find_last_of(".");0 P% D, V# V4 a: P0 }% i% T
        NXString sStepSpec = sFolder.substr(0, found) + ".stp";
, c: @9 K' z* ~+ _9 a- I        NXOpen::StepCreator *stepCreator1;! Y, t. @0 }& m5 y- b8 X5 {
        stepCreator1 = theSession->DexManager()->CreateStepCreator();
8 {$ P2 U: N! p! w3 x/ K: H- ^        stepCreator1->SetExportAs(NXOpen::StepCreator::ExportAsOptionAp214);! m2 V5 M% K0 L, k
        stepCreator1->ExportSelectionBlock()->SetSelectionScope(NXOpen::ObjectSelector::ScopeSelectedObjects);
2 M" G6 I7 o! B% g% l& `, `* f        stepCreator1->ObjectTypes()->SetSolids(true);
  ?1 r" v" @- F+ U6 d4 @        stepCreator1->SetSettingsFile(sCfgFile);
) M& \: ~* D2 f  Y        stepCreator1->SetInputFile(sPartSpec);
% ^" S7 N( N0 c" x9 b( ~        stepCreator1->SetOutputFile(sStepSpec);
5 W7 @0 `7 Z' F5 f* w$ y        stepCreator1->SetFileSaveFlag(false);( Y9 N2 z' c) m- }
        stepCreator1->SetLayerMask("1-256");4 p# e2 `0 x' H( E! x
        std::stringstream sBodyList("");
' q6 k2 {* y; Q% b- v        std::vector<TaggedObject*>::iterator iter;! l3 I8 y4 n  E! F- O2 E
        bool added1;
2 C- F8 a+ [; l5 a* c8 `        for (iter = objectArray.begin(); iter != objectArray.end(); ++iter)+ y/ w# n0 j* M& z6 L: z3 u- g
        {; m% S0 M! r  v; q' _, N6 B
            Body* theBody = dynamic_cast<NXOpen::Body*>(*iter);
+ r( u3 y* h: y* ~2 r            if (theBody)
. g! H9 d/ m+ G. d* e            {' I7 `5 b# {/ A# I' O/ u
                added1 = stepCreator1->ExportSelectionBlock()->SelectionComp()->Add(theBody);
9 u) _8 H7 x% ]1 s' ]                sBodyList << "Adding Body " << (theBody)->Tag() << std::endl;! H5 ?9 q3 E7 }6 _: Y% {
            }
% a5 ]- P5 l1 F8 c' k+ K        }
) K; m& u  s. D) @: h) L        // Debug output
8 c$ t" ]- q3 \$ M' @4 |        print("UGII_BASE_DIR = " + sBaseDir);
2 W# K* R/ B# A2 G        print("Settings File = " + sCfgFile);0 S! X2 z6 `# K
        print("Input File = " + sPartSpec);" I: C# n; @; F9 R. J" d' Z
        print("Output File = " + sStepSpec);
3 a" s4 H5 T; j- ?( o( b  D        print(sBodyList.str());
/ i4 f% `' q9 G( ^* h$ R) U) n        NXOpen::NXObject *nXObject1 = stepCreator1->Commit();0 D# `; j: C/ |; L- J/ G4 i! G
        stepCreator1->Destroy();0 m& c3 v/ v6 t( v- o
    }1 R1 s1 N4 Q2 F) ]8 k
    ( N5 ]& S9 S+ e. y% I8 V
}
% Y! p- X9 @* H+ y% I/ I) N! C6 M  v- \/ q; F9 W5 S
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了