首页 UG二次开发之Open和NXOpen

UG二次开发之Open和NXOpen

举报
开通vip

UG二次开发之Open和NXOpenOpen C、Open C++和NXOpen C++混合开发 三者的关系我在以前的文章中讲过了。但是他们都不是孤立的,互相可以使用。 下面举了个不同部分用不同的代码, 函数形式的是Open C,也就是API了 类形式不带NXOpen的是Open C++,否则是NXOpen C++了。 Tag是所有之间的桥梁。 //NXOpen header files #include #include #include //#include #include #include #include ...

UG二次开发之Open和NXOpen
Open C、Open C++和NXOpen C++混合开发 三者的关系我在以前的文章中讲过了。但是他们都不是孤立的,互相可以使用。 下面举了个不同部分用不同的代码, 函数形式的是Open C,也就是API了 类形式不带NXOpen的是Open C++,否则是NXOpen C++了。 Tag是所有之间的桥梁。 //NXOpen header files #include #include #include //#include #include #include #include #include //#include //UFunc Headers #include #include #include #include // UGOpen headers #include #include #include #include #include #include int main(int argc, char* argv[]) ...{ int errorCode; /**//* Here, we can initialize session using : 1. Open C API environment 2. Open C++ API environment 3. NX Open C++ APIs. User has to initialize, UG Session using Open C++ as well as NX Open C++, session also. */ /**//* Using Open C API, we can initialize UGSession as follows */ /**//* errorCode = UF_initialize(); if ( 0 != errorCode ) { return errorCode; } */ NXOpen::Part *part1; /**//* Using Open C++ API, we can initialize UGSession as follows */ UgSession::initialize(); /**//* Using NX Open C++ API, we can initialize UGSession as follows */ NXOpen::Session *theSession = NXOpen::Session::GetSession(); /**//* Create a new part. To create new part one can use : 1. Open C API environment 2. Open C++ API environment 3. NX Open C++ APIs. */ char* partName = "InteropWithOpenCOpenCPPAndNXOpenCPP.prt"; /**//* Using Open C API, we can create new part as follows */ /**//* tag_t UF_partTag; UF_PART_new(partName,2,&UF_partTag); */ /**//* Using Open C++ API, we can create new part as follows */ UgPart *UGPart = UgPart::create(partName, Inches ); /**//* Using NX Open C++ API, we can create new part as follows */ /**//* NXOpen::NXString partName = "InteropWithOpenCOpenCPPAndNXOpenCPP.prt"; part1 = theSession->GetParts()->NewDisplay(partName, NXOpen::Part::UnitsInches); */ //-------------------------------------------------------------------------- // Interop between NX Open C++ APIs and Open C /**//* Create a line using NX Open C++ APIs*/ NXOpen::Point3d point3d1(-2.17019791346668, 1.13935390457001, 0); NXOpen::Point3d point3d2(-0.714356813182783, 1.13935390457001, 0); NXOpen::Line *line1; line1 = theSession->GetParts()->GetWork()->GetCurves()->CreateLine(point3d1, point3d2); /**//* Retrieve line coordinates using Open C API */ tag_t line_tag=line1->GetTag(); UF_CURVE_line_t line_coords; UF_CURVE_ask_line_data(line_tag, &line_coords); //-------------------------------------------------------------------------- // Interop between Open C++ and NX Open C++ APIs Point3 UGPt1(line_coords.start_point[0]+5,line_coords.start_point[1]+5, line_coords.start_point[2]+5); Point3 UGPt2(line_coords.end_point[0]+5,line_coords.end_point[1], line_coords.end_point[2]); UgLine* UGLine; UGLine = UgLine::create(UGPt1, UGPt2); UgCoordSys *UGCoordsys; UGCoordsys = UgSession::getWCS(); CoordSys Sys = UGCoordsys->getCoordSys(); // Creating Arc UgArc* OpenCPPArc = UgArc::create(5.0, 0.25, 3.14, Sys); tag_t arc_tag = OpenCPPArc->getTag(); NXOpen::Arc *nxArc = (NXOpen::Arc*)NXOpen::NXObjectManager::Get(arc_tag); double nxArc_radius = nxArc->GetRadius(); double nxArc_start_angle = nxArc->GetStartAngle(); double nxArc_end_angle = nxArc->GetEndAngle(); //------------------------------------------------------------------------------------ /**//* Save this work part. To save this work part one can use : 1. Open C API environment 2. Open C++ API environment 3. NX Open C++ APIs. */ /**//* Using Open C API, we can save this part as follows */ /**//* UF_PART_save(); */ /**//* Using Open C++ API, we can save this part as follows */ /**//* UGPart->save(); */ /**//* Using NX Open C++ API, we can save this part as follows */ /**//* To get the part from the Part tag */ part1 = (NXOpen::Part*)NXOpen::NXObjectManager::Get(UGPart->getTag()); /**//* To save work part using NXOpen automation APIs */ NXOpen::PartSaveStatus *partSaveStatus; part1->Save(NXOpen::Part::SaveComponentsTrue, NXOpen::Part::CloseAfterSaveTrue, &partSaveStatus); /**//* To close all parts using NXOpen automation APIs */ theSession->GetParts()->CloseAll(NXOpen::Part::CloseModifiedCloseModified, NULL); /**//* Terminate the session using Open C API */ errorCode = UF_terminate(); return 0; }
本文档为【UG二次开发之Open和NXOpen】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_750429
暂无简介~
格式:doc
大小:36KB
软件:Word
页数:4
分类:生产制造
上传时间:2010-07-25
浏览量:92