列文章目录

UG/NX二次开发Siemens官方NXOPEN实例解析—2.1 AssemblyViewer(树列表)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.2 Selection(选择过滤器)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.3 Selection_UIStyler(边倒角)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.4 File2Points(读取文本)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.5 QuickExtrude(拉伸)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.6 CreateNote(注释)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.7 DiameterSymbol(标注符号) 
UG/NX二次开发Siemens官方NXOPEN实例解析—2.8 DrawingCycle(图纸打印)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.9 InteropCallCFromDotNet(VB调用VC++ DLL实践)
UG/NX二次开发Siemens官方NXOPEN实例解析—2.10 InteropNXOpenWithUFWrap(NXOPEN与Ufun混合使用)

前言

随着工业智能化的不断发展,UG二次开发的需求越来越多,也吸引了大批的二开从业人员,本人作为一名资深IT从业者(10年+)也毅然加入二次开发大军。

然而,和流行IT行业(互联网、金融、医疗等)相比,工业智能化的门槛显得更高一点,专业的工业软件,相对封闭的开发理念和更小的开发圈子,让刚进入二开的从业者有点举步维艰。边学边整理,希望通过这系列文章的整理能给二开的生态增添一叶绿。


一、知识点提取

本案例实现了“打印”图纸的功能,主要知识点如下:

1、获取图纸信息

2、打印图纸,添加打印note

3、清除打印note

二、案例需求分析

1、效果图

2、需求分解

1、获取图纸信息

2、打印图纸,添加打印note

3、清除打印note

三、程序分析

1、源码所在目录

UGOPEN\SampleNXOpenApplications\C++\DrawingCycle

2、主要功能分析

1、 获取图纸信息

Drawings::DrawingSheetCollection *drawingsheets = workPart->DrawingSheets();

2、 添加打印note,遍历图纸并打印

for(it=drawingsheets->begin();it!=drawingsheets->end();it++)
{mysheet = *it;mysheet->Open();// ----------------------------------------------//   Menu: Edit->View->Update Views...// ----------------------------------------------theSession->Parts()->Work()->DraftingViews()->UpdateViews(Drawings::DraftingViewCollection::ViewUpdateOptionAll,mysheet);Annotations::LetteringPreferences *letteringPreferences1;letteringPreferences1 = workPart->Annotations()->Preferences()->GetLetteringPreferences();//Setting Lettering PreferencesAnnotations::Lettering Annotations_Lettering1;Annotations_Lettering1.Size = 0.35;Annotations_Lettering1.CharacterSpaceFactor = 1;Annotations_Lettering1.AspectRatio = 1.0;Annotations_Lettering1.LineSpaceFactor = 1.0;Annotations_Lettering1.Cfw.Color = 2;Annotations_Lettering1.Cfw.Font = 1;Annotations_Lettering1.Cfw.Width = Annotations::LineWidthThin;letteringPreferences1->SetGeneralText(Annotations_Lettering1);workPart->Annotations()->Preferences()->SetLetteringPreferences(letteringPreferences1);// ----------------------------------------------//   Menu: Insert->Annotation...// ----------------------------------------------Annotations::UserSymbolPreferences *userSymbolPreferences1 = theSession->Parts()->Work()->Annotations()->NewUserSymbolPreferences(UserSymbolPreferences::SizeTypeScaleAspectRatio,1,1);UF_system_info_t info;UF_ask_system_info(&info);char dateStr[256];strcpy(dateStr , info.date_buf);NXOpen::NXString currDate = dateStr;        string date = currDate.GetText();size_t pos1 = date.find_first_of(" ");date = date.substr(0,pos1);currDate = date;std::vector<NXString> stringArray1(1);stringArray1[0]=currDate.GetText();std::vector<NXString> stringArray2(2);        stringArray2[0]="Printed On";stringArray2[1]=currDate.GetText();NXOpen::Point3d point3d1(30.643873924,1.999761255 ,0);NXOpen::Annotations::Note *note1 = theSession->Parts()->Work()->Annotations()->CreateNote(stringArray2,point3d1,AxisOrientationHorizontal,letteringPreferences1,userSymbolPreferences1);delete userSymbolPreferences1;delete letteringPreferences1;// ----------------------------------------------//   Printing Drafting views// ----------------------------------------------std::vector<NXOpen::Drawings::DraftingView *> dfviews = mysheet->GetDraftingViews();NXOpen::NXString sheet_name = "Printing Sheet: " + mysheet->Name();std::vector<NXOpen::NXString >sheet_names(1);UI *theUI = UI::GetUI();         for(int i=0;i!=dfviews.size();i++){if(i==0){sheet_names[0] = "Sheet contains following views: \n" + dfviews[i]->Name();}else{sheet_names[0] =  sheet_names[0] +"\n"+ dfviews[i]->Name();}}//Displaying the Drawing sheet view namestheUI->NXMessageBox()->Show(sheet_name.GetText(), NXOpen::NXMessageBox::DialogTypeInformation,sheet_names[0].GetText());// ----------------------------------------------//   Menu: Edit->Delete...// ----------------------------------------------theSession->UpdateManager()->ClearErrorList();Session::UndoMarkId markId1;markId1 = theSession->SetUndoMark(Session::MarkVisibilityVisible, "Delete");int err1;err1 = theSession->UpdateManager()->AddToDeleteList(note1);int err2;err2= theSession->UpdateManager()->DoUpdate(markId1);
}

1、设置标注字体,SetLetteringPreferences()

2、创建标注,CreateNote()

3、打印图纸,这里只用到了theUI->NXMessageBox()->Show(),汗颜~

3、清除打印标注

theSession->UpdateManager()->AddToDeleteList(note1)

4、本实例有一个获取系统信息的ufun,可以关注一下

该内部方法用来收集的Open C的系统信息,如计算机名称,操作系统信息等

UF_system_info_t info;
UF_ask_system_info(&info);

UG/NX二次开发Siemens官方NXOPEN实例解析—2.8 DrawingCycle(图纸打印)相关推荐

  1. UG/NX二次开发Siemens官方NXOPEN实例解析—2.7 DiameterSymbol(标注符号)

    列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-2.1 AssemblyViewer(树列表) UG/NX二次开发Siemens官方NXOPEN实例解析-2.2 Selectio ...

  2. UG/NX二次开发Siemens官方NXOPEN实例解析—2.6 CreateNote(注释)

    列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-2.1 AssemblyViewer(树列表) UG/NX二次开发Siemens官方NXOPEN实例解析-2.2 Selectio ...

  3. UG/NX二次开发Siemens官方NXOPEN实例解析—2.5 QuickExtrude(拉伸)

    列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-2.1 AssemblyViewer(树列表) UG/NX二次开发Siemens官方NXOPEN实例解析-2.2 Selectio ...

  4. UG/NX二次开发Siemens官方NXOPEN实例解析—1.6 BlockStyler/SelectionExample

    列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-1.1 BlockStyler/ColoredBlock UG/NX二次开发Siemens官方NXOPEN实例解析-1.2 Blo ...

  5. UG/NX二次开发Siemens官方NXOPEN实例解析—1.8 BlockStyler/UDB_CreateCylinder

    列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-1.1 BlockStyler/ColoredBlock UG/NX二次开发Siemens官方NXOPEN实例解析-1.2 Blo ...

  6. UG/NX二次开发Siemens官方NXOPEN实例解析—1.2 BlockStyler/EditExpression

    列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-1.1 BlockStyler/ColoredBlock UG/NX二次开发Siemens官方NXOPEN实例解析-1.2 Blo ...

  7. UG/NX二次开发Siemens官方NXOPEN实例解析—1.3 BlockStyler/ExtrudewithPreview

    列文章目录 UG/NX二次开发Siemens官方NXOPEN实例解析-1.1 BlockStyler/ColoredBlock UG/NX二次开发Siemens官方NXOPEN实例解析-1.2 Blo ...

  8. UG/NX 二次开发(C#)自动出2D零件图(标准件配置Bata版)

    一.前言 昨天分享了自动出2D零件图的思路(UG/NX 二次开发(C#)自动出2D零件图思路),今天整理了Q群里各位大佬的意见,结合当前实际项目情况,做了一个可配置的半自动出图版本,暂且称之为标准件配 ...

  9. UG NX二次开发(C#)-装配-添加组件AddComponent

    在UG NX的使用过程中,装配是很重要的一环,本文是为了实现组件的批量装配,采用UG NX二次开发,采用的主要函数为AddComponent. AddComponent()的帮助说明如下: 其是属于N ...

最新文章

  1. VC++实现恢复SSDT
  2. oracle忘记密码
  3. 表单php跳转页面跳转,form表单页面跳转方式提交练习
  4. javascript基本函数
  5. 安装mysql没有提示设置密码_18.04安装mysql没有提示输入密码
  6. typecho 邮件mail插件 LoveKKCommentModify 美化版
  7. php做异地登录验证,PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
  8. Ubuntu源硬盘挂载到本地计算机更新源
  9. SQL Server 死锁的监视
  10. apple id 如何注册来啦?(亲测流程)
  11. SYSLINUX 中文简介(怎样使用)
  12. [LeetCode] 969. 煎饼排序
  13. 什么是RESTful风格的API
  14. bat脚本:Windows批处理
  15. 输入售价后点击计算税费,自动显示在税费输入框!
  16. 怎么才能做好一个软件销售
  17. ,什么叫他妈的惊喜?
  18. <<电子工程师必备 元器件应用宝典 8>>目录
  19. 测试一个显示器有拖影的软件,让“瑕疵”原形毕露,教你检测游戏显示器!
  20. open image v5 标注类别对应

热门文章

  1. easybuy项目规划
  2. 360驱动大师v2.0官方版
  3. 智能媒体、大数据与知识发现国际会议(IMBDKM 2023)诚邀学者关注、参与
  4. 计算机怎么游戏教学,谈计算机教学中的游戏教学法原稿(范文1)
  5. linux课程实验报告,Linux操作系统课程实验报告
  6. 设计模式系列----备忘录模式
  7. ssd用HD软件测试准确吗,用HDTune测试固态硬盘?只有菜鸟才会这样做!
  8. Flutter 2.2 现已发布!
  9. CCF201412-1门禁系统(C语言)
  10. DIV+CSS布局实战---海南旅游网