PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2016-12-25 10:40:44

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

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

x
5 q6 r4 e' V6 u7 M5 Y) r- L
NX二次开发源码分享:选择体导出Step格式" ]$ R5 b* m% @6 {5 k2 Q& D4 U
2 z. u9 o# k0 L/ a4 H0 j
void StepExport::do_it()
$ |  W2 k7 I$ X! |2 q5 ]{# U! K7 a) c  X1 \
    std::vector<TaggedObject*> objectArray;
+ w% M" f: w4 |* S1 X$ p    if (select_bodies(objectArray))
; R* ^' o5 x5 N    {
" g0 ?# R5 a1 }- T% T        NXOpen::Session::UndoMarkId markId1;, u/ r5 {7 |6 K1 o1 F
        markId1 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, "Start");% o; t3 S$ g$ j% m
        NXString sBaseDir = theSession->GetEnvironmentVariableValue("UGII_BASE_DIR");
/ C) ]) j7 E0 {; m        NXString sCfgFile = sBaseDir + "\\step214ug\\ugstep214.def";
5 K$ a! u' Q: E, J        NXString sPartSpec = displayPart->FullPath();
# C6 ~) H: w' N4 s& o8 j6 [1 W        std::string sFolder = sPartSpec.GetText();
. N9 |% ?" B+ X1 a$ _* V8 M( r, B        std::size_t found = sFolder.find_last_of(".");8 e* y4 J5 o( E3 i# E: ]
        NXString sStepSpec = sFolder.substr(0, found) + ".stp";
5 g+ q  v. ]9 e! o$ }        NXOpen::StepCreator *stepCreator1;0 d# B7 L. j6 J9 f; d9 S9 y
        stepCreator1 = theSession->DexManager()->CreateStepCreator();
$ a+ M: B1 v- [, s8 b% `) t        stepCreator1->SetExportAs(NXOpen::StepCreator::ExportAsOptionAp214);9 R! A+ b# r% y7 w7 w
        stepCreator1->ExportSelectionBlock()->SetSelectionScope(NXOpen::ObjectSelector::ScopeSelectedObjects);
, q! e, B2 W, j+ R% Q) f        stepCreator1->ObjectTypes()->SetSolids(true);
) d9 C1 f( O" D        stepCreator1->SetSettingsFile(sCfgFile);( z- v, t% F7 ^
        stepCreator1->SetInputFile(sPartSpec);# ]. ?& e! t( ^* }* ^
        stepCreator1->SetOutputFile(sStepSpec);7 g: Q+ |0 u; ]2 s9 g
        stepCreator1->SetFileSaveFlag(false);  g& s$ y% P$ x( z/ |0 F
        stepCreator1->SetLayerMask("1-256");7 T+ s' E5 h& e# l, c0 y
        std::stringstream sBodyList("");
. H& f2 C! F6 }        std::vector<TaggedObject*>::iterator iter;+ q( J; M& r  h! H
        bool added1;* M' x  N0 N& _3 k
        for (iter = objectArray.begin(); iter != objectArray.end(); ++iter)
  `- H3 K9 z* `  _# c( J        {
" u" Y/ M1 I! |, `# F" p            Body* theBody = dynamic_cast<NXOpen::Body*>(*iter);4 ~  U* E8 E3 j& w
            if (theBody)( r3 p1 N& j: o* h  ?! y
            {# l' e$ x  \/ B
                added1 = stepCreator1->ExportSelectionBlock()->SelectionComp()->Add(theBody);
( H; G/ e2 @/ h$ ]# {( P                sBodyList << "Adding Body " << (theBody)->Tag() << std::endl;
$ R8 v8 V7 q) R! m% W: U) h( Z# D            }
8 f. A: c1 |2 E' L0 H, N# ]        }
) P# X/ w* m9 T3 _" ?% _9 P        // Debug output7 Q3 S. W$ z& Z  X# J5 b/ I
        print("UGII_BASE_DIR = " + sBaseDir);5 q" {3 U; q# d& m
        print("Settings File = " + sCfgFile);
8 j5 i2 I1 q  k3 G6 r* L        print("Input File = " + sPartSpec);
6 Z" j& K0 o1 {" z: R        print("Output File = " + sStepSpec);
$ q9 C+ C8 u5 u1 O  J) [        print(sBodyList.str());
0 ]' S5 B0 q9 g& a2 q$ L  D3 w        NXOpen::NXObject *nXObject1 = stepCreator1->Commit();2 y) r- ?; L; _: F- y
        stepCreator1->Destroy();
- ]* Z; l& a9 e! t    }
/ H% }+ O$ c. L   
( r5 D- g* D3 Q) j}9 J" y! Y3 U% S, \

: f8 I4 d# J9 F7 d: ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了