UG二次开发之ug open++类库

合集下载

UG的二次开发工具

UG的二次开发工具

5、UG/OPEN UIStyler模块
UlStyler是开发UG对话框的可视化编辑器,生成的对话框能与UG集成,让 用户更方便、更高效地与UG进行交互操作。利用这个工具可以避免复杂的图形用 户接口GUI的编程,直接进行对话框控件的选择和布局,从而创建能满足不同功 能需求的UG风格对话框。 当对话框创建完成后,会在存放的目录下自动生成3个文件.dlg文件, template文件和.h文件。其中:dlg文件是对话框资源文件,定义了对话框样式 及控件事件的响应函数名称,存放在用户创建的二次开发目录下面的 application文件夹内,供用户菜单调用;template文件是C语言源文件模板,它 包含了对话框所有回调函数的定义,提供了一个对话框应用的程序框架,该程序 框架通过调用UG/OPEN API函数,实现最初的对话框界面功能,在程序标明的位 置添加程序代码,编写回调函数就可以实现预先设定的功能;.h文件是对话框头 文件,它包含了对话框控件标识的定义以及控件事件响应函数原型的声明,供 VC++编写应用程序时使用。
UG/OPEN API函数采用标准的名称约定,其一般格式为:UF_<area>一 <name>,其中UF表示User Function;<area>表示函数的应用范围,通常是应 用范围名称的英文单词缩写。例如:MODL和ASSEM分别是Modeling建模模块和 Assembly装配模块的名称缩写,DISP则是DispIay功能的名称缩写:<name>表 示其实现功能的语言描述,一般由下划线分开的动词和名词组成。例: UF_MODL create—block0表示在modeling模块中创建立方体函数UF_DISP set highlight()是高亮显示对象的函数UF_PART_ask_part_name0是获取部件文件 名的函数,其他常用的动词还有edit(编辑)、delete(删除)。所有的API函数 及其相应的参数可以在UG的帮助文档里找到。

大型软件UG二次开发

大型软件UG二次开发

§2.3 UG对象类型及操作
1. 部件对象
(1)在部件中查询对象 UF_OBJ_cycle_objs_in_part()
(2)访问部件的属性: UF_ATTR_ask_part_attrs()
(3)关闭和再打开部件 UF_PART_close()和 UF_PART_reopen()
(4)获取部件的文件名 UF_PART_ask_part_name()
uf_fltr.h——关于区域和过滤器的函数说明。 uf_gdt.h——有关几何尺寸/公差的查询函数和数 据结构。
uf_gexp.h——有关几group.h——与群组有关的操作函数说明。 uf_help.h——实现帮助功能的相关函数及数据结构 声明。
uf_layer.h——与层有关的函数声明。 uf_layout.h——与布局有关的函数声明。 uf_lib.h——与用于查找对象的库的接口声明。 uf_mb.h——查询及设置Menuscript中的对象(如按 钮等)的属性等相关函数及数结构声明。
5. 变量声明
UG/OPEN API支持所有的 C语言数据类型。 对象的标识(实体标识)应声明tag_t类型。
6. 错误号
在没有特别说明时,每一个函数或过程都返 回一个int类型的错误号。当它不为0时,表 示出错,可以调用函数UF_get_fail_message 得到相应的错误信息。
§1.2 UG/OPEN API 的应用范围
1. 版本说明
Unigraphics 16版下连接的函数库是: libufn.lib及libinternal.lib。
Unigraphics 17、18及NX版下连接的函数库是: libufun.lib及libugopenint.lib。
2. 初始化及终止

UG-NX二次开发基础-OpenAPI

UG-NX二次开发基础-OpenAPI

22.1.1 概述
作为 UG NX 5.0 与外部应用程序之间的接口,UG/Open API 是一系列函数的集合。通过 UG/ Open API 的编程,用户几乎能够实现所有的 UG NX 5.0 功能。开发者可以通过用 C++语言编程来调 用这些函数,从而实现用户的需求。
(1)对 UG part 文件及相应模型进行操作,包括建立 UG NX 5.0 模型、查询模型对象、建立并 遍历装配体及创建工程图等。
22
CHAPTER
UG NX 5.0 二次开发基础
内容提要 ➢ UG/Open API 基础概念和语法知识 ➢ UG/Open API 常用对话框及其应用 ➢ 提示消息的发布与获取 Open/API(用户函数)是一个程序集合,使得程序员能够访问和操作 NX 对象模型。除此之外, Open/API 还提供了工具用来编辑和连接与 UG NX 5.0 风格一致的程序。UG/Open 二次开发模块是 UG NX 5.0 软件的二次开发工具集,可用于各种二次开发工作。利用该模块可对 UG NX 5.0 系统进 行用户化剪裁和开发,满足用户的开发需求。使用 UG NX 5.0 的二次开发时,用户需要具有一定的 C 语言基础。 UG/Open 包括以下几个部分。 (1)UG/Open API 开发工具:提供 UG NX 5.0 软件直接编程接口,支持 C、C++、Fortran 和 Java 等主要高级语言。 (2)UG/Open UIStyle 开发工具:是一个可视化编辑器,用于创建类似于 UG NX 5.0 的交互界面。 利用该工具,用户可为 UG/Open 应用程序开发独立于硬件平台的交互界面。 (3)UG/Open Menuscript 开发工具:对 UG NX 5.0 软件操作界面进行用户化开发,使得用户无 须编程即可对 UG NX 5.0 标准菜单进行添加、重组、剪裁或在 UG NX 5.0 中集成自己开发的软件功 能。 (4)UG/Open GRIP 开发工具:是一个类似于 APT 的 UG NX 5.0 内部开发语言,用户可利用该 工具生成 NC 自动化或自动建模等特殊应用。

UG_OPEN_API

UG_OPEN_API

U G/O p e n A P I基础知识●U G/O p e n A P I介绍●U F程序的基本概念●U F的对象模型与常用函数●编写U F程序的基础知识●U F工程的编译链接●U I S t y l e r●U F程序示例U G/O p e n A P I介绍U G/O p e n A P I的概念U G/O p e n A P I(U G开放应用程序接口),也称作U s e r F u n c t i o n(用户函数)。

它是U G/O p e n二次开发软件包的一个重要组成部分。

其核心包括了约2000个C 函数,分别用来实现大部分的U G操作。

通过调用这些C函数,用户自编的程序能查询并修改U G对象模型,处理使用者和U G界面的交互,控制U G的行为等。

另外,工作站版的U G/O p e n A P I工具中还包含了工作站平台开发所需的编译和链接工具。

在以下的段落中,U G/O p e n A P I均简写为U F。

U F的常用功能能实现用户和U G对象模型(U n i g r a p h i c s O b j e c t M o d e l)之间的交互能创建和编辑用户自定义对象(U D O)处理各种U G对象之间的联系,并为它们的显示和更新提供了完整的手段借助U G菜单脚本(U G/O p e n M e n u S c r i p t)和用户接口设计师(U I S t y l e r),U F能让第三方开发者定制U G的用户界面,把用户开发的程序集成入U G的菜单和对话框之中U F能让用户程序自行构造P a r t文件,查询U G对象的参数,创建装配图或平面图等微机版U F开发包的组成U F作为U G/O p e n K i t的一部分提供,安装在U G主目录的U G O p e n子目录下U F的头文件(U F_*.h)静态库文件(u g*.l i b)大量的U F示例程序(*.c)U F程序的基本概念外部U F和内部U FU F程序的源代码并不能被U G直接执行,和C程序一样必须通过编译形成动态链接库或可执行文件后才能发挥作用。

ug二次开粗最佳方案

ug二次开粗最佳方案

ug二次开粗最佳方案UG二次开发最佳方案UG软件是一款非常优秀的CAD软件,由于其强大的三维建模功能,使得其在机械设计领域中应用范围非常广泛。

但是在实际使用中,由于UG自身的限制或者是用户需求的不同,很多用户都会有二次开发的需求。

UG的二次开发需要对常规的API进行各种调用,这就要求我们有深厚的编程基础与技能,同时也需要不断摸索最佳的二次开发方案来提高效率。

本文将介绍UG二次开发的常用方案及其优缺点,以期帮助UG用户寻找最佳方案。

一、UG APIUG自带的API是非常强大的,其中封装了非常多的功能函数供我们调用。

开发者可以通过API来实现自己定制化的操作,比如实现自己的工具栏、快捷键、菜单等。

此外,UG API也可以用来扩展UG的功能,比如添加自己的工具、自动化一些重复性的操作等。

使用UG API的好处是可以充分利用UG软件自身的资源,不需要额外地去寻找其他开发工具。

但是UG API也存在一些缺点,比如我们需要深入了解UG的开发模型才能开发出高效的应用程序,而这需要花费较长时间去学习。

另外,UG API不能跨平台,只能在Windows下使用,这同样也会限制我们的二次开发范围。

二、UG NXOpenUG NXOpen是UG的一款API,它是针对NX软件的基于.NET 的程序接口。

相比于常规的UG API,NXOpen提供了更加强大、灵活的功能。

使用NXOpen可以直接访问底层UG的数据,利用NXOpen可以访问UG软件中的任意元素。

此外,还可以通过NXOpen实现各种深度定制功能,甚至可以实现对UG软件本身的修改。

仅仅对UG进行简单的修改,就可以无缝地进行网格生成、FEM分析等操作。

这在一些对时间精细度要求很高的程序中非常有效。

但是由于这种操作比较复杂,甚至会修改UG本身的数据,因此需要谨慎操作。

三、UG Open C APIUG Open C API是一个完全基于C语言的API,与NXOpen相比较,它更加底层。

ug二次开发介绍

ug二次开发介绍

ug二次开发介绍————————————————————————————————作者:————————————————————————————————日期:UG二次开发功能简介Unigraphics(UG)是美国UGS公司的集CAD/CAM/CAE于一体的软件集成系统,功能覆盖整个产品的开发过程:从概念设计、功能工程、功能分析到制造,在航空航天、汽车、机械、模具和家用电器等工业领域的应用非常广泛。

UG软件提供了功能强大的二次开发(应用开发)模块,利用该模块可对UG系统进行用户化裁减和开发。

UG/Open是一系列UG开发工具的总称,主要由UG/Open API、UG/Open GRIP、UG/Open MenuScript和UG/Open UIStyler四部分组成。

UG/Open API (又称User Function ),是一个允许程序访问并改变UG对象模型的程序集。

UG/Open API 封装了近2000个UG操作的函数,它可以对UG的图形终端、文件管理系统和数据库进行操作,几乎所有能在UG界面上的操作都可以用UG/Open API 函数实现。

UG/Open API程序按其连接方式分为两种,内部模式(Internal环境) 和外部模式(External 环境)。

采用内部模式开发的程序只能在UG 的界面环境(Session)下运行,其优点是可以连接的更快且程序更小并能与用户交互;采用外部模式开发的程序能在操作系统中独立执行,其缺点是无法实时显示图形与用户交互,值得注意的是部分函数只能在内部模式下执行。

UG/Open API 程序使用的是C 或C + + 编程语言。

基于Windows操作系统的UG二次开发可以在VC + + 6.0或环境下进行,VC提供的各类库函数和丰富的编程资源进一步提升了UG/Open API的功能,同时也为集成企业原有的C/C++语言程序提供了方便。

UG/Open GRIP ( Graphics Interactive Programming) 是一种专用的图形交互编程语言,与UG系统集成,可以实现UG环境下的大多数应用操作。

UG二次开发NXOpen-Python开发环境搭建

UG二次开发NXOpen-Python开发环境搭建

UG⼆次开发NXOpen-Python开发环境搭建 ⾃从NX10.0以来,NXOpen增加了对Python的⽀持,Python有多强⼤不⽤解释,本来UG⾃带操作记录编辑器(如下图)可以⽤来录制操作记录,也能编辑和运⾏python程序,但我想没⼈会⽤那个来进⾏⼆次开发 为了能更⽅便的利⽤Python对UG进⾏⼆次开发,最好是设置使⽤外部Python版本运⾏NX中的Python脚本,这样不仅可以使⽤强⼤的Python第三⽅库,⽽且结合IDE的使⽤,可以让写代码变得稍微轻松点,⾄少有代码提⽰。

根据NX⽂档,NX12.0使⽤的Python版本为3.6.1,所以得在电脑中安装python3.6.1。

设置如下: 打开G:\Program Files\Siemens\NX 12.0\UGII\ugii_env.dat,增加两⾏,其中,注意根据python3.6.1及NX的实际安装位置进⾏相应修改UGII_PYTHON_LIBRARY_DIR="D:\Program Files\Python36"UGII_PYTHONPATH="D:\Program Files\Python36;D:\Program Files\Python36\DLLs;D:\Program Files\Python36\Lib;D:\Program Files\Python36\Lib\site-packages;D:\Program Files\Python36\libs;G:\Program Files\Siemens\NX 12.0\NXBIN\pytho 为了验证设置是否有效,新建⼀个⽂本,后缀名改为.py,写⼊代码如下:import NXOpensession=NXOpen.Session.GetSession()lw=session.ListingWindowlw.Open()lw.WriteLine('Hello World') 打开NX12.0,Alt+F8,选择刚才的⽂件,运⾏,结果如下: 这就说明设置成功,下⾯利⽤python⾃带的IDLE来测试下代码提⽰,新建⼀个⽂本⽂档,⽂件名改为nxopen.pth,打开⽂件,输⼊: G:\Program Files\Siemens\NX 12.0\NXBIN\python(按NX实际安装路径更改) 然后将nxopen.pth放⼊D:\Program Files\Python36\Lib\site-packages⽂件夹中(按python实际安装路径更改),打开IDLE,⾸先import NXOpen,然后就可以正常提⽰了 当然,⼀般不使⽤IDLE进⾏开发,pydev是个不错的选择,关于如何在pydev中配置NXOpen-Python,在这⾥就不再赘述了,西门⼦官⽅有相关资料,⽹上也有很多,下图是UF函数的提⽰及⽂档 唯⼀让我纠结的是,利⽤pydev调试NXOpen-python程序始终没有弄好,按照官⽅⽂档怎么试都不⾏,郁闷 官⽅给出的Eclipse+pydev 配置说明如下,需要的⾃取: https:///files/blogs/686940/Debug_NXOpen_Python_with_NX12_and_Eclipse_PyDev.zip。

UG软件二次开发工具的使用-精选文档

UG软件二次开发工具的使用-精选文档

UG软件二次开发工具的使用UG软件是美国EDS公司开发的一套集CAD/CAM/CAE为一体的高端软件。

由于其强大的设计、分析、制造和产品数据管理的功能,国内外许多企业都将它作为首选软件。

但是UG软件与其它CAD软件一样是一个通用软件,专业针对性差,因而不能满足各种各样具体产品的设计需要,在实际的工程设计中难以达到理想的效果,几乎不能真正实现灵活高效的特点。

因而UG软件的二次开发就成为CAD技术推广应用过程中必须面对和解决的课题之一。

二次开发就是把商品化、通用化的CAD系统用户化,本地化的过程,二次开发后能大大提高设计人员的设计效率,缩短设计周期。

因此UG软件的二次开发人员必须掌握几种UG软件的开发工具及其使用方法,才能为企业开发出本地化的UG软件。

UG/Open是一系列UG开发工具的总称,是UG软件为用户或第三方开发人员提供的最主要的开发工具。

它主要由UG/OpenGR IP、UG/Open API、UG/Open MenuScrip t和 UG/ Open UISt yler 四个部分组成。

一、UG/OPEN GRIPUG/OPEN GRIP(Graphics Interactive Programming)是一种专用的图形交互编程语言。

这种语言与UG系统集成,能够实现强大的图形绘制、装配、工程图的生成和一定的文件管理功能,主要进行UG的功能调用。

GRIP程序一般是在UG平台下编制的,有独特的开发工具、编译链接过程、程序语法和文件格式,具体开发过程如下:(一)编写源程序:在UG Open GRIP环境界面中,选择Edit,用记事本创建或打开一个.grs文件,也就是GRIP源文件。

(二)编译源程序:选择Compile对源程序进行编译生成扩展名为.gri的编译文件,如果主程序中含有子程序,则两者要分别进行编译,链接时主程序自动对子程序进行链接。

(三)链接程序:选择Link将扩展名为.gri的文件链接生成可执行的GRIP文件,扩展名为.grx,这个文件就是UG可以识别的执行文件。

UG二次开发之Open和NXOpen

UG二次开发之Open和NXOpen

Open C、Open C++和NXOpen C++混合开发作者:白途思ID:begtostudy三者的关系我在以前的文章中讲过了。

但是他们都不是孤立的,互相可以使用。

下面举了个不同部分用不同的代码,函数形式的是Open C,也就是API了类形式不带NXOpen的是Open C++,否则是NXOpen C++了。

Tag是所有之间的桥梁。

//NXOpen header files#include <NXOpen/Session.hxx>#include <NXOpen/Part.hxx>#include <NXOpen/PartCollection.hxx>//#include <NXOpen/Point.hxx>#include <NXOpen/Line.hxx>#include <NXOpen/CurveCollection.hxx>#include <NXOpen/Arc.hxx>#include <NXOpen/NXObjectManager.hxx>//#include <NXOpen/NXString.hxx>//UFunc Headers#include <uf_curve.h>#include <uf.h>#include <uf_csys.h>#include <uf_part.h>// UGOpen headers#include <ug_session.hxx>#include <ug_part.hxx>#include <ug_line.hxx>#include <ug_arc.hxx>#include <ug_coord_sys.hxx>#include <coord_sys.hxx>int main(int argc, char* argv[])...{int errorCode;/**//* Here, we can initialize session using :1. Open C API environment2. Open C++ API environment3. 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 environment2. Open C++ API environment3. 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++ APIsPoint3 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 ArcUgArc* 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 environment2. Open C++ API environment3. 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->getT ag());/**//* 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二次开发NXOpen

UG二次开发NXOpen

UG 二次开发NXOpen
目录结构设置
1.新建一个文件夹,位置随意,为防止不必要的麻烦,该文件夹的路径和名称都得是纯英文,例如:
2.在上述文件夹下面再新建两个文件夹,名字分别为'application'和'startup','startup'文件夹主要用来放置自定义的菜单文件,以及需要在UG 启动时就执行的程序;'application'文件夹主要用来放置与菜单项相关联的一些程序
3.
打开G:\Program Files\Siemens\NX 12.0\UGII\menus\custom_dirs.dat,在文件中添加一行F:\NX ,这样
就完成了
4.下面来试验下,在startup 文件夹下新建一个文本文件,文件名改为test.men,用记事本打开,输入以下内容:
VERSION 120
EDIT UG_GATEWAY_MAIN_MENUBAR
MENU UG_TOOLBOX
BUTTON MY_TEST
LABEL TEST
ACTIONS test.py
END_OF_MENU
5. 然后在application 文件夹下新建一个文本文件,文件名改为test.py ,输入以下内容:
1 2 3 4 5 6 7 import NXOpen
def main():
NXOpen.UI.GetUI().NXMessageBox.Show(
'TEST',
rmation, 'TEST')
if __name__ == '__main__':
main() 6.文件夹结构如下:
7.打开UG,菜单-工具-TEST,点击。

ug_open二次开发教学

ug_open二次开发教学

UG/OPEN GRIP模块
UG/OPEN API模块
UG/MenuScript模块
UG/UIStyler模块
UG/OPEN GRIP
1、简介 UG/OPEN GRIP是用于UG二次开发的软件工具。 利用GRIP语言编写GRIP程序,可以完成和UG的各 种交互操作,如:创建几何体和制图实体、控制UG 系统参数、提取几何体的数据和属性等。
2、应用范围
同类零件编程、计算和分析、绘图、零件标准化、 数据访问等。 3、使用步骤
编写GRIP源程序 修改
编译程序
链接
执行
UG/OPEN GRIP
启动GRIP
GRIP开发环境
执行GRIP程序
UG/OPEN GRIP
GRIP源文件 执行结果
UG/OPEN API
1、可实现功能
对UG模型文件进行操作,包括创建UG模型、查询 模型对象、建立并遍历装配体、创建工程图等。
UG/OPEN API
利用UG/OPEN API 用户可以根据自己的需要 创建动态链接库文件(*.dll),通过下列两 种方式启动:
A、由自定义菜单或工具栏调 用
B、由File->Execute UG/Open-> User Function调用
UG/OPEN MenuScript
MenuScript模块主要用于制作菜单,用户按照其语法创建 *.men文件并放在指定的目录内,UG启动时可以自动加载。
在UG主界面创建交互式程序界面。 创建并管用户化定制CAD环境
开发在UG平台上的用户专用软件
开发UG与其它软件的接口
UG/OPEN API
提供了用C语言编制对UG进行功能调用的函数。 与各种C语言编辑环境有很好的兼容性,以头文 件(*.h文件)的方式存放在UGS180\ugopen目 录中。

谈谈UG二次开发的Open和NXOpen

谈谈UG二次开发的Open和NXOpen

NXOpen::Features::BlockFeatureBuilder* thePart->Features()->CreateBlockFeatureBuilder(block);
theBuilder
=
NXOpen:oint3d basePoint(100, 100, 100); theBuilder->SetOriginAndLengths(basePoint, "100", "200", "300"); // NXOpen.Body theBody = null; // theBuilder.SetBooleanOperationAndTarget(NXOpen.Features.Feature.BooleanType.Create, theBody); theBuilder->Commit(); //theBuilder->CommitFeature(); NXOpen::UI::GetUI()->NXMessageBox()->Show("", NXMessageBox:ialogType:ialogTypeInformation, "OK!"); // UI->GetUI()->NXMessageBox.Show("", rmation, "OK!"); } /* Handle errors */ catch ( const UgException &exception ) { processException( exception ); } 2、遍历特征的例子 #include <NXOpen/Session.hxx> #include <NXOpen/Part.hxx> #include <NXOpen/Features_BlockFeatureBuilder.hxx> #include <NXOpen/Features_Block.hxx> #include <NXOpen/PartCollection.hxx> #include <NXOpen/Features_FeatureCollection.hxx> #include <NXOpen/UI.hxx> #include <NXOpen/NXMessageBox.hxx> #include <NXOpen/ListingWindow.hxx> using namespace NXOpen; //下面是程序片段 NXOpen::Session *theSession = NXOpen::Session::GetSession(); try {

UG二次开发入门

UG二次开发入门

首先,简单介绍一下UG二次开发。

UG原来是由工作站上移植过来的,GRIP就是它原来的二次开发工具,(本人对GRIP并不熟悉,哪位朋友如果使用GRIP开发,可以介绍一下),目前WINDOWS下的开发工具为UG/OPEN和UG/OPEN++,故在此我们主要针对这两种开发方法介绍一下。

1、UG/OPEN 是一系列UG开发工具的总称。

它们随UG一起发布,以开放性架构面向不同的软件平台提供灵活的开发支持。

它使第三软件商和UG用户能在其提供的平台上开发出适合自己需要的CAD产品。

UG/Open 套件组成:API, Grip, Menus cript ,UIStyler。

API:UG/Open API也称User Function,通过它可以在C程序和C++程序中以库函数的形式调用UG内部的近2000个操作。

Grip语言:GRIP(Graphics Interactive Programming)是一种专用的图形交互编程语言,开发者可以用GRIP编程的方法自动实现在UG下进行的绝大部分操作。

GRIP命令很像英语单词,语法与BASIC 和FORTRAN相似,有某些情况下对于一些高级操作,用GRIP编程的方法比用UG交互的方法更有效,在UG交互环境下可以实现的功能用GRIP几乎全都可以实现。

UG提供了一个名叫UG Open GRIP的GRIP语言编辑器,用这个工具可以编辑、修改、编译、连接程序。

Menus cript:此项功能使用户或第三方软件商通过文本编辑器编辑UG菜单文件,以生成用户化的菜单进而集成他们的特殊应用。

UG/Open Menus cript支持UG主菜单和快速弹出式下拉菜单的修改,通过它可以改变UG菜单的布局、添加新的菜单项以执行用户二次开发程序、User T ools文件及操作系统命令等。

UG/Open Menus cript的使用需专门授权。

运用UG/OpenMenus cript可以完全改变UG软件的主界面,需谨慎使用以防出现混乱。

ug二次开发工具的选择

ug二次开发工具的选择

3.1.1 UG 二次开发工具的选择UG/Open 是一系列UG 开发工具的总称, 主要由UG/Open API, UG/Open GRIP, UG/Open MenuScript 和UG/Open UIStyler 四部分组成。

( 1) 选用UG/Open API 作为开发工具。

它是一个允许程序访问并改变UG 对象模型的程序集, 它封装了近2000 个UG 操作的函数, 可以对UG 的图形终端、文件管理系统和数据库进行操作, 几乎所有能在UG 界面上的操作都可以用UG/Open API 函数实现, 该程序使用C 或C++编程语言。

( 2) 选用MFC 开发UG 对话框界面。

作为当前广泛应用的MFC 应用向导( MFC APP2Wizard) 除提供了UG/Open UIStyler 所涉及的控件之外, 还提供了ListView、TreeView、进度条等更为丰富的控件,是一种可视化的编程工具,使用方便,还可以充分利用Windows 的消息机制,编写出完美的应用程序,大大方便了开发人员的编程工作。

( 3) 选用UG/Open MenuScript 创建用户化菜单。

支持UG 主菜单和快速弹出式菜单的设计和修改, 可以改变UG 菜单的布局, 添加新的菜单项以执行用户应用开发程序, 最后生成一个菜单脚本文件( *.men) , 供UG 系统调用以触发应用程序。

3.1.2 配置开发环境及工程路径( 1) 建立工程目录结构。

新建工程目录E:\ug_develop,并在该路径下新建文件夹Startup( 用于存放*.men 文件,即菜单脚本文件) 、Application( 用于存放具体的功能扩展程序文件) 。

在用户路径文件custom- dirs.dat 中输入上述工程路径。

UG 启动时根据用户注册的工程路径读取菜单脚本文件。

( 2) 以VC6.0 提供的MFC AppWizard( dll) 建立工程项目, 创建一个静态链接MFC 方式的DLL。

NXOpenUG二次开发架构

NXOpenUG二次开发架构

设置UG应用开发环境
选择菜单命令 Tools→Options ,弹出Options 对话框。选择 Directories 选项卡,分别在 Show directories for 下拉菜单的两Байду номын сангаас 选项Include files 和 Libray files 中添加UG UFopen 文件夹的路径。
? BEFORE UG_FILE_OPTIONS
? CASCADE_BUTTON
UG_UCDCS
? LABEL &UCDCS
? END_OF_BEFORE
? MENU UG_UCDCS
? BUTTON ? LABEL ? ACTIONS
UG_UCDCS_NEW &production design Application
使用MFC应用向导
。 的式方 接 链态静建创:三骤步
使用MFC应用向导
MFC
DLL
序程源始 初到得 :四骤步
使用MFC应用应用开发环境
---
可 置设 置设程工:五骤步
件文行执
设置UG应用开发环境
ugraf.exe --UG
。径路全的
编写消息映射代码
? 这一步的作用是通过编写VC程序,使菜单 脚本文件和工具栏脚本文件的内容映射在 UG中。在本例中在UG界面下的到如下菜 单。
创建UG风格的对话框
? 首先应用UIStyler设计UG风格的对话框 ? 编写文件代码 ? 编译和运行应用程序
创建用户菜单和工具图标
? 创建菜单脚本文件 ? 创建工具栏脚本文件 ? 注册工程路径
菜单脚本文件
? 在startup文件夹中创建菜单脚本文件Startup、FileNew.men,具体方 法是在记事本中输入如下代码,保存后改名为.men文件。

ug二次开发

ug二次开发

ug二次开发
UG(Unigraphics)是一款CAD/CAM/CAE集成软件,由Siemens PLM Software开发。

UG软件可以进行三维建模、装配设计、零件加工、工程分析等多种功能,在工业设计、机械制造等领域广泛应用。

UG软件提供了UG Open API,可以进行二次开发,根据
用户的需求定制功能,提高软件的使用效率和适用性。

UG
二次开发可以包括以下方面:
1. 自定义菜单和工具栏:根据用户的工作流程和习惯,添
加新的菜单和工具栏,提供更快捷的操作方式。

2. 定制界面和图形:根据特定的行业需求,定制软件的界
面和图形显示,使操作界面更加友好和直观。

3. 增加新的功能模块:根据用户的需求,开发新的功能模块,例如特定的计算、分析、模拟等功能。

4. 数据交互和集成:与其他软件进行数据交互和集成,使得不同软件之间能够无缝连接,提高工作效率和数据准确度。

5. 增加自动化功能:开发宏、脚本或插件,实现一些常规操作的自动化,减少人工操作的时间和误差。

UG二次开发需要具备一定的编程知识和技术,熟悉UG软件的功能和API接口。

开发者可以使用C++、.NET等编程语言进行开发。

此外,Siemens PLM Software还提供了相关的开发文档、示例代码和技术支持,帮助开发者进行二次开发。

UG二次开发实用教程

UG二次开发实用教程

UG二次开发实用教程UG(Unigraphics)二次开发是指在UG基础上进行功能扩展和定制开发,以满足特定需求。

UG二次开发可以帮助用户提高工作效率、简化操作流程并增强软件功能。

本文将介绍UG二次开发的基本原则、常用技术和实用案例。

一、UG二次开发的基本原则1.熟悉UG软件架构:UG软件由多个模块组成,包括界面模块、内核模块、数据库模块等。

在进行二次开发前,需要熟悉UG软件的架构和各个模块的功能,了解开发的具体目标和需求。

2.选择合适的开发语言和工具:UG二次开发可以使用多种开发语言和工具,如C++、VB、C#等。

选择合适的开发语言和工具有助于提高开发效率和开发质量。

3.合理规划开发流程:UG二次开发需要进行合理的开发流程规划,包括需求分析、设计、编码、测试和部署等阶段。

合理规划开发流程可以提高开发效率和软件质量。

二、常用的UG二次开发技术1.基于UGOpen进行二次开发:UGOpen是UG软件的二次开发接口,可以实现UG软件的功能扩展和定制开发。

UGOpen提供了丰富的API和类库,可以方便地进行功能扩展和定制开发。

2.使用C++进行开发:C++是一种高效、灵活的编程语言,适合进行UG二次开发。

C++可以通过UGOpen接口与UG软件进行交互,实现自定义功能的开发。

3.使用VB进行开发:VB是一种易学易用的编程语言,适合进行简单的界面和脚本开发。

VB可以通过UGOpen接口与UG软件进行交互,实现自定义界面和工具的开发。

4.使用C#进行开发:C#是一种面向对象的编程语言,具有强大的开发功能和良好的可移植性。

C#可以通过UGOpen接口与UG软件进行交互,实现自定义功能的开发。

三、UG二次开发的实用案例1.增加自定义功能:UG二次开发可以增加一些常用的自定义功能,例如自动化建模、批量处理、数据导入导出等。

通过二次开发,可以提高工作效率,简化操作流程。

2.定制界面和工具:UG二次开发可以定制界面和工具,使其更加符合用户需求。

NXOpenUG二次开发架构 14页

NXOpenUG二次开发架构 14页
菜单脚本文件
• 在文件夹Application中创建一个位图文件New.bmp作为工具图 标 , 位图标准大小为24x24像素 。在startup文件夹中创建工具栏 脚本文件FileNew.tbr 。创建方法与创建菜单脚本文件相同 。代 码如下。• TITLE 实用工具• VERSION 170• DOCK TOP• BUTTON UG_UCDCS_database• LABEL &database• BITMAP new.bmp• BUTTON UG_UCDCS_New• LABEL &production design• BITMAP new.bmp
使用MFC应用向导
使用MFC应用向导
设置UG应用开发环境
五: 工程设置---添 文件
设置UG应用开发环境选择菜单命令Tools → Options , 弹出Options对话框 。选择Directories选项卡 , 分别在Show directories for下拉菜单的两个 选项Include files 和 Libra y files 中添加UG 运行VC程序 , 打开UG , 在文件菜单下会显
示如下菜单栏。
编写消息映射代码• 这一步的作用是通过编写VC程序 , 使菜单 脚本文件和工具栏脚本文件的内容映射在 UG中 。在本例中在UG界面下的到如下菜单。
创建用户菜单和工具图标• 创建菜单脚本文件• 创建工具栏脚本文件• 注册工程路径
• 在startup文件夹中创建菜单脚本文件Startup 、FileNew.men , 具体方 法是在记事本中输入如下代码 , 保存后改名为.men文件。• VERSION 139• EDIT UG_GATEWAY_MAIN_MENUBAR• BEFORE UG_FILE_OPTIONS• CASCADE_BUTTON UG_UCDCS• LABEL &UCDCS• END_OF_BEFORE• • BUTTON UG_UCDCS_NEW• LABEL &production design• ACTIONS Application• BUTTON UG_UCDCS_database• LABEL &database• ACTIONS Application
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UG二次开发之ug/open++类库UG/ OPEN++类库概述UG/Open++有五种不同的类:应用程序类,对象类,模板类,辅助类,和数学类。

1,应用程序类:控制UG应用程序的运行。

包括:UgSession,UgInfoWindow,和UgException。

2,对象类:定义可以作用于UG零件文件中包含对象的属性和操作。

例如,UgArc,UgFace,和UgExpression等。

表示UG零件的UgPart类,也属此类。

3,模板类:提供平台无关的标准模板库(STL)类,主要用于数组和字符串。

还有一个遍历UG/Open++对象的模板类。

4,辅助类:定义用于其它类定义中的临时对象。

例如:ThruPoint和Evaluator类等。

5,数学类:包括通用数学对象。

与UG对象类结合使用,非常有帮助。

数学类包括点,向量,矩阵,坐标系等类。

通常情况下,每个类都定义在一个独立的头文件中,文件名是该类的名字。

例如UgArc类定义在ug_arc.hxx文件中。

有时一个头文件也包含诸如辅助类等的一些其它类定义。

在UG/Open++中,你可以任意调用一个类的公用方法,但不能调用其私有方法。

保护方法只能在导出类中调用。

●应用程序类对话期类(Session)UgSession类的一个主要作用是进行UG/Open的初始化。

这个初始化是在其它任何UG/Open++方法被调用之前必须进行的。

对话期的初始化和终止由两个静态方法完成,它们是UgSession::initialize ( ) 和UgSession::terminate ( ):UgSession::initalize();// 你的UG/Open++ 代码UgSession::terminate();另外一种方法是创建一个UgSession对象:UgSession mySession ( true );// 你的UG/Open++ 代码关于UgSession,有两个地方需要注意:1.UgSession析构方法将会自动结束UG/Open。

这在超出UgSession对象的作用范围之外时,将会自动发生。

2,当你用以下语法进行创建UgSession对象时,UG/Open的初始化将被阻止,并且析构方法也不能终止这个对话期:UgSession mySession;从功能上讲,上面提到的两种对话期初始化方法与传统的UF_initialize()方法是完全一样的,在程序的开始,可以使用任何一种方法,但不能同时使用两种不同方法。

这样在下面的程序中,UG/Open++和传统的UG/Open方法就可以被调用。

UgSession也可以用于控制当前UG对话期的状态和行为。

例如,一些UgSession 的方法可以改变当前工作零件,修改层状态,以及关闭所有的零件等。

●对象类:对象类主要定义可以作用于UG零件文件中包含对象的属性和操作。

例如,UgArc,UgFace,和UgExpression等。

表示UG零件的UgPart类,也属此类。

大多数的UG/Open++应用程序都涉及对UG对象的操作。

对象类分为两种:基类和叶类。

基类定义作用于一组相关对象的通用操作,而且它们没有CREATE()方法。

叶类定义的是作用于某一特定类型物体的操作,而且大多数都定义了CREATE()方法。

基类表示一组类似的UG对象,而叶类表示一种具体的UG对象。

类的体系关系提供了充分的UG功能性的层次划分,用基类定义这类对象的公用的操作。

另外,在某些时候它利用多重继承来定义没有关系的对象的通用接口。

所有UG对象最顶层的基类叫做UgObject。

它定义了一些所有UG对象都可以使用的通用方法。

例如UgObject::askOwningPart ( )返回一个UG对象所在的零件。

其它基类都来自UgObject类的派生,包括UgTypedObject和UgDisplayableObject (注意绝大多数在UG/Open++中的基类都是以关键字`Object'结束命名的)。

UgTypedObject提供为UG物体命名或删除物体的方法,而UgDisplayableObject 提供诸如更改颜色、图层等方法。

创建对象UG/Open++层次结构树的叶子,是真正代表具体UG对象的C++类,例如UgArc 表示弧线,UgExpression代表表达式。

这些类叫做可实例类,因为可以创建这些类的C++对象,而且每个创建的对象都对应一个UG零件文件包含的UG对象。

要创建一个UG对象,只需调用创建对象的静态方法CREATE(),如下所示:UgPart *pWorkPart = UgSession::getWorkPart ( );UgExpression *pExpr;pExpr = UgExpression::create ( "diameter", 4.25 , pWorkPart );double diaValue = pExpr->evaluate ( );UG对象都是用指针的方式被引用,而不是用对象名称,如上例中的pExpr。

事实上,C++的构造函数是一个保护方法,这样可以避免在不适当的地方错误调用该构造函数。

用指针引用减少了内存的使用,并且保证写出的C++代码与UG模型在任何时候都保持同步。

UgAssemblyNode类是一个没有CREATE()方法的叶类。

此类的对象创建是用UgPart::addPart ( ):UgPart *pWorkPart = UgSession::getWorkPart ( );UgAssemblyNode *pNode;pNode = pWorkPart->addPart ( "component.prt", "", "",CoordSys ( ), -1 );一些类覆盖了静态的CREATE()方法,而用其它方法创建UG物体。

下面介绍三种创建表达式的方法:UgPart *pWorkPart = UgSession::getWorkPart ( );UgExpression *pExpr1, *pExpr2, *pExpr3;UgString strName ( "diameter1" );pExpr1 = UgExpression::create ( "radius", 4.25, pWorkPart );pExpr2 = UgExpression::create ( "diameter=2*radius", pExpr1 );pExpr3 = UgExpression::create ( strName, "2*radius" );所有的create函数的最后一个参数都是一个选项参数,来指定零件上下文,也就是说新创建对象的宿主零件。

如果没有指定该参数,则属于当前工作零件。

这个参数既可以是一个指向零件对象的指针,也可以是一个指向属于该零件对象的其它对象的指针。

例如:UgPart *pOtherPart;// 初始化pOtherPart 来指向一个可用的UG零件对象UgExpression *pExprNew;pExprNew = UgExpression::create("length=3.0", pOtherPart);权限控制当一个指向UG物体的指针被定义后,就可以用它来调用该类及其父类定义的所以方法。

例如,如果pArc是一个指向UgArc的指针,那么就可以调用pArc的方法对该UG弧线对象进行查询或修改,代码如下所示:pArc->setRadius ( 2.5 );double len = pArc->computeArcLength ( );int layer = pArc->getLayer ( );上例中调用的三个方法都可以被UgArc对象调用。

但只有setRadius()方法在UgArc类中被定义,其它两个方法都是在其父类中定义的。

标志与指针转换UG/Open++允许开发代码中包含传统的UG/Open代码,并且进行相关的数据传递。

这就需要进行在UG/Open++的指针和UG/Open的标志之间进行转换。

UgObject::find ( ) 和UgObject::getTag()两个方法可以完成此类转换。

UgObject::find ( )返回一个指向UgObject对象的指针,因此还需要进行类型的强制转换(请参考动态类型转换一节)。

例如:int color;tag_t tag1, tag2;// Call the traditional UG/Open function to select a line.// Note: this returns the tag of the selected line as `tag1'UF_UI_select_single ( ..., &tag1, ... );// Use the `find' method to get the pointer of the Unigraphics// object corresponding to `tag1'UgObject *pObj = UgObject::find ( tag1 );if ( pObj ){UgLine *pLine = dynamic_cast <UgLine *> pObj;if ( pLine ){// Invoke a UG/Open++ method using that pointerpLine->setColor ( Red );// Now convert the pointer back to a tag (`tag2').// Note that `tag1' and `tag2' should be identical.tag2 = pLine->getTag ( );// Call a traditional UG/Open function to get the color// using `tag2' – it should be Red.UF_OBJ_ask_color ( tag2 , &color );}}从以上的例子可以看出,如果一个UG对象没有创建方法的话,UgObject::find ( )方法有可能返回0。

所以,一般来讲,对UgObject::find ( )返回的指针进行检查并进行强制类型转换很有必要。

相关文档
最新文档