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

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

[复制链接]

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

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

admin 楼主

2016-12-25 10:40:44

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

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

x

$ W+ W; B7 d7 R1 _NX二次开发源码分享:选择体导出Step格式! r% }; Z% B' S3 Q* a' T, h# R

) h+ j- R( B9 \' C8 h4 z! Mvoid StepExport::do_it()3 |. y: o7 X' _' e" ~
{( b: s) }- p  V' K9 Y8 n( B# V* ]
    std::vector<TaggedObject*> objectArray;8 t$ F2 c$ T  S9 f1 R
    if (select_bodies(objectArray))3 b2 g5 W- m% x0 Z) R. ~; c
    {
' L9 G" d* V! x4 h$ T        NXOpen::Session::UndoMarkId markId1;
2 F9 E; k7 E/ e: [4 k: {' L        markId1 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, "Start");
' Q* R% K0 U# @) f* w/ W        NXString sBaseDir = theSession->GetEnvironmentVariableValue("UGII_BASE_DIR");( b( u3 R5 x  {8 i' K& O) M
        NXString sCfgFile = sBaseDir + "\\step214ug\\ugstep214.def";4 L6 X$ M0 ]# o9 O( C: J
        NXString sPartSpec = displayPart->FullPath();( E6 k5 R: `# a. l) g/ l
        std::string sFolder = sPartSpec.GetText();
. y% k8 g/ N) m        std::size_t found = sFolder.find_last_of(".");
( r) r. f! I4 K        NXString sStepSpec = sFolder.substr(0, found) + ".stp";
! r3 E3 T3 u1 ?# X  [. }' N) N        NXOpen::StepCreator *stepCreator1;
9 I0 c5 R. E! Z8 J! [5 L        stepCreator1 = theSession->DexManager()->CreateStepCreator();0 @9 q: T# v" d
        stepCreator1->SetExportAs(NXOpen::StepCreator::ExportAsOptionAp214);
9 g8 Z( W7 g: I# H0 g* d        stepCreator1->ExportSelectionBlock()->SetSelectionScope(NXOpen::ObjectSelector::ScopeSelectedObjects);3 G' H2 N  t6 y$ n  o
        stepCreator1->ObjectTypes()->SetSolids(true);
: k$ K% y- N. F3 u0 v  J! R        stepCreator1->SetSettingsFile(sCfgFile);: c/ Z  w/ H9 x3 c9 t
        stepCreator1->SetInputFile(sPartSpec);
7 W6 t; O; G- E0 Y1 e8 q        stepCreator1->SetOutputFile(sStepSpec);
+ u0 o/ K5 W" y2 c1 {2 i. w        stepCreator1->SetFileSaveFlag(false);/ }# L6 T# c0 |8 W: _5 T
        stepCreator1->SetLayerMask("1-256");
* _' N$ v  a6 `        std::stringstream sBodyList("");9 v/ A) z  j- N6 m  @+ r+ L
        std::vector<TaggedObject*>::iterator iter;
" S/ Z7 x. S1 j+ A2 w1 P        bool added1;+ P- s! F+ Q4 P2 N- U& J3 F
        for (iter = objectArray.begin(); iter != objectArray.end(); ++iter)9 }& h% Y9 q2 P; Q
        {
% o. L# l: O: {# w& i; u. X# n            Body* theBody = dynamic_cast<NXOpen::Body*>(*iter);
' v5 K6 B5 |! E+ c, B4 _& F" U, f- k- @            if (theBody)
% y& }9 p9 j+ ?' _- O. c            {1 K1 v5 D* ^( \8 A9 [" K3 M3 M5 ^
                added1 = stepCreator1->ExportSelectionBlock()->SelectionComp()->Add(theBody);: e* N1 n% B7 A9 t" v) i
                sBodyList << "Adding Body " << (theBody)->Tag() << std::endl;
' Y$ ?# u* C, |: \& \) g: U/ E            }
9 P7 s4 L$ a0 a4 m. L. R. y        }
9 h3 J8 r: z7 V9 P7 z        // Debug output* J- k2 N! C5 Q) w% J/ ]) \
        print("UGII_BASE_DIR = " + sBaseDir);, C; g3 l' W7 V0 p- \% y+ I
        print("Settings File = " + sCfgFile);3 k) B) E# g; L5 f  r3 r
        print("Input File = " + sPartSpec);
. S5 K* q2 r  o5 Z" _        print("Output File = " + sStepSpec);* ~9 v$ V2 V) n$ @
        print(sBodyList.str());
1 x- A7 |8 Y# g# s4 s8 w: L        NXOpen::NXObject *nXObject1 = stepCreator1->Commit();
, F/ T; {0 l; E6 ^8 _        stepCreator1->Destroy();
* _& b9 l2 D2 P1 X# y+ l    }) o* Q7 }" v7 x9 F; E( J$ t  @* E( V
    ; ^5 G0 n9 v) @, m. K- E1 ^
}5 M- H6 W% R" Y8 z. Q, A
8 X5 M, S. ?, F# u) R: w1 `% A$ r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了