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

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

[复制链接]

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

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

admin 楼主

2016-12-25 10:40:44

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

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

x
# T, g: ^. a8 X, I# _
NX二次开发源码分享:选择体导出Step格式3 A  q# s; R8 w
/ W) n0 l" E! L- \- V
void StepExport::do_it()
& V- C" t  c! J) o6 z{1 f+ \/ [2 E) m% n& n0 _
    std::vector<TaggedObject*> objectArray;7 G; H2 ^9 p& R
    if (select_bodies(objectArray))
8 f0 K$ Z4 r3 ?( Z+ ]; ?    {4 T6 s# P  a" }  E
        NXOpen::Session::UndoMarkId markId1;
6 C& L) V& ~' B0 ~* s        markId1 = theSession->SetUndoMark(NXOpen::Session::MarkVisibilityVisible, "Start");( Y# w0 n' D6 ]7 v, o: A2 [
        NXString sBaseDir = theSession->GetEnvironmentVariableValue("UGII_BASE_DIR");
  x7 W( \. O9 g        NXString sCfgFile = sBaseDir + "\\step214ug\\ugstep214.def";1 G5 F* @' M6 m( d
        NXString sPartSpec = displayPart->FullPath();
. u0 ~- [1 M( O" x, }- Z6 L        std::string sFolder = sPartSpec.GetText();
  Q6 `$ g7 r4 V9 A- t" o) \5 [        std::size_t found = sFolder.find_last_of(".");  O- G8 G1 U) {
        NXString sStepSpec = sFolder.substr(0, found) + ".stp";
  @! n  D( q: U* Q7 @$ b* ~        NXOpen::StepCreator *stepCreator1;3 _) G0 `$ F( N' }+ Q
        stepCreator1 = theSession->DexManager()->CreateStepCreator();
( u* v7 _) {1 R0 J5 b" U4 L        stepCreator1->SetExportAs(NXOpen::StepCreator::ExportAsOptionAp214);
- ^" N! f' }7 t% F+ B% h& W; P        stepCreator1->ExportSelectionBlock()->SetSelectionScope(NXOpen::ObjectSelector::ScopeSelectedObjects);
, n! `/ P8 E1 O* u  L9 x: y        stepCreator1->ObjectTypes()->SetSolids(true);
  h, i3 |! A2 [        stepCreator1->SetSettingsFile(sCfgFile);
2 w  B: D" o1 u7 h6 u, ]# s        stepCreator1->SetInputFile(sPartSpec);
. U1 W# g, \0 ^8 l: T* s        stepCreator1->SetOutputFile(sStepSpec);' K, B, q, I$ U- v
        stepCreator1->SetFileSaveFlag(false);8 p7 E3 v- B+ g+ h" V& V! U
        stepCreator1->SetLayerMask("1-256");/ k5 c/ U- c& C. Z, s
        std::stringstream sBodyList("");. w2 P! F( M4 d4 w- v
        std::vector<TaggedObject*>::iterator iter;
; d, p4 w# u  [0 ^* J6 s0 ~        bool added1;( l6 x9 M& I- n0 }7 d1 Z  m' M1 S
        for (iter = objectArray.begin(); iter != objectArray.end(); ++iter)
3 T2 ^% l# l- a1 i, \0 U        {& T+ A! T; I; a  }0 K
            Body* theBody = dynamic_cast<NXOpen::Body*>(*iter);2 s# k: g9 g6 ?
            if (theBody)' ?) _+ _3 ?1 v6 l% U; Z# g
            {$ Z) H& {! [' r* z1 X
                added1 = stepCreator1->ExportSelectionBlock()->SelectionComp()->Add(theBody);
8 c: _6 T1 [% P6 C3 ~- x                sBodyList << "Adding Body " << (theBody)->Tag() << std::endl;
9 y/ j3 q  }* {9 }0 x  U- y3 g' o- n            }
: v! Z- b! ]. D        }$ ^8 L3 ]( S3 U% U# d
        // Debug output! H; J$ y3 e  X0 A( n* c% P8 C
        print("UGII_BASE_DIR = " + sBaseDir);
. b% e2 c+ l* ^# Y; T% {# b        print("Settings File = " + sCfgFile);7 t0 h$ C+ P+ F! n0 n( `& N0 ]6 x9 [
        print("Input File = " + sPartSpec);7 a7 I$ ]8 A" K! Z8 ^
        print("Output File = " + sStepSpec);+ D# W& ]  ?0 K3 d/ O2 I
        print(sBodyList.str());
  m4 ]" W& X: N        NXOpen::NXObject *nXObject1 = stepCreator1->Commit();
( S( Z# }8 I2 P/ R        stepCreator1->Destroy();. i4 u& d1 W$ [, t! h
    }% N+ i$ n$ O6 q) E
   
; }4 \+ Q1 I% g3 V; S}( u9 B: k( h0 }3 W, U
% i7 I: k6 B( i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了