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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x

* h( ^$ F4 K$ _! Z, CNX二次开发源码分享:选择体导出Step格式# L( _1 q! ~9 {' t

! p" ]* X1 ~, v- I" Lvoid StepExport::do_it()
" v5 q$ Z" r; S) X& m{4 `! B0 ^; v" V/ n+ G& l
    std::vector<TaggedObject*> objectArray;6 f$ J6 Y* r- {/ B
    if (select_bodies(objectArray))0 C' N2 W  u, V! _9 t" |+ W7 J
    {! {1 O0 p' P7 f6 R4 _6 E7 U
        NXOpen::Session::UndoMarkId markId1;6 A8 S8 E' b) J1 I# s5 b7 z
        markId1 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, "Start");) ?$ P& j1 Z, N/ R: G- r
        NXString sBaseDir = theSession->GetEnvironmentVariableValue("UGII_BASE_DIR");/ ]1 Q  w- a) P4 O
        NXString sCfgFile = sBaseDir + "\\step214ug\\ugstep214.def";
7 l* T5 A: `( J+ K+ c( d        NXString sPartSpec = displayPart->FullPath();
0 A7 P+ w3 T- c# N        std::string sFolder = sPartSpec.GetText();
  a; h# n* w3 L( D* `( |        std::size_t found = sFolder.find_last_of(".");
4 U7 L2 |9 ?: e6 C7 \, R2 W        NXString sStepSpec = sFolder.substr(0, found) + ".stp";! F9 N5 J4 p: b: u5 I
        NXOpen::StepCreator *stepCreator1;4 R, A5 F9 X9 H2 S; b3 K9 _: _% A
        stepCreator1 = theSession->DexManager()->CreateStepCreator();7 e4 E' s* y) v
        stepCreator1->SetExportAs(NXOpen::StepCreator::ExportAsOptionAp214);# E; ?9 V3 U+ W6 o, g2 p- \
        stepCreator1->ExportSelectionBlock()->SetSelectionScope(NXOpen::ObjectSelector::ScopeSelectedObjects);
! X) }$ z5 _+ Z( H! c        stepCreator1->ObjectTypes()->SetSolids(true);
4 M0 t( N) M$ p' X0 |6 m        stepCreator1->SetSettingsFile(sCfgFile);! `8 M% t0 C  \  {2 h
        stepCreator1->SetInputFile(sPartSpec);$ _+ M9 c7 r/ X
        stepCreator1->SetOutputFile(sStepSpec);- d' z1 Y  {, }
        stepCreator1->SetFileSaveFlag(false);
: W1 T* i* Q0 l( O        stepCreator1->SetLayerMask("1-256");% c( c' d# {; I1 q9 X$ Y2 g/ W2 ]
        std::stringstream sBodyList("");+ \! E% V: a, k2 }8 J5 e
        std::vector<TaggedObject*>::iterator iter;& F! L2 k  _- A3 N' ?/ P
        bool added1;: a. F; _6 Y0 o/ w, ~8 a- r1 {
        for (iter = objectArray.begin(); iter != objectArray.end(); ++iter)
; P% @/ c5 h4 R" z8 J        {
4 i" t2 y" d2 t* [0 x+ Y0 D* p/ `            Body* theBody = dynamic_cast<NXOpen::Body*>(*iter);
9 u9 N6 F; E+ l            if (theBody)$ h/ X) U0 X1 |7 g
            {
( s6 K+ }8 y( }4 [) c. D                added1 = stepCreator1->ExportSelectionBlock()->SelectionComp()->Add(theBody);9 t! b6 Q  B4 x2 _; e- B0 \
                sBodyList << "Adding Body " << (theBody)->Tag() << std::endl;
3 v1 k! j9 F- G' ?" [            }
/ m! ^9 R" s$ a+ U6 ]( q& d+ r        }
' u) E1 ^& H6 {! F% k        // Debug output1 F/ _3 A$ f. k. @7 S/ |3 ?
        print("UGII_BASE_DIR = " + sBaseDir);
7 h4 a8 }& m( G) {        print("Settings File = " + sCfgFile);
( K/ h( G" A9 J- b9 `$ K# \2 `        print("Input File = " + sPartSpec);
. H% B! o7 z" i0 y        print("Output File = " + sStepSpec);
" T0 X8 a! I# M        print(sBodyList.str());
) p6 ?9 Z, u  t: l5 y4 H9 ~6 x0 d        NXOpen::NXObject *nXObject1 = stepCreator1->Commit();' P% K+ Z! y' d4 X# T) ~
        stepCreator1->Destroy();
/ _( i2 y' w9 U    }
- Z" j$ O, u. c* l' ^- V* Z   
+ o  X6 V# Q, }/ w}$ c1 n+ N, q! z! x

7 K) w" u" k$ k2 j: Z+ O$ `3 }1 @
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了