UG OPEN-API与 MFC类连接问题
- 格式:doc
- 大小:222.00 KB
- 文档页数:4
任务书设计题目:差速器的参数化设计1.设计的主要任务及目标(1)分析影响差速器结构参数的设计指标,完成差速器的设计步骤确定;(2)利用高级语言完成差速器参数化设计。
2.设计的基本要求和内容(1)完成对差速器的参数化设计设计并撰写设计说明书一份;(2)完成参数化设计软件一份;(3)完成差速器部件的三维建模和装配。
3.主要参考文献《机械设计》高等教育出版社《C++程序设计》清华大学出版社《汽车设计》机械工业出版社4.进度安排差速器的参数化设计摘要:直齿圆锥齿轮广泛的应用于汽车差速器上,由于其形状很复杂, 设计过程中需要计算的参数很多。
一般是先计算其相关参数, 然后在CAD软件中手工造型。
其设计过程复杂繁琐,重复性劳动太多,并且对于同一类型但尺寸不同的圆锥齿轮不能实现模型的自动更新。
如果对CAD软件进行二次开发, 编制专用的圆锥齿轮参数化设计系统则可以解决这个问题。
本设计选择采用UGNX软件,利用UG二次开发工具UG OPEN API和VC++联合开发了汽车差速器圆锥齿轮的参数化实体造型系统, 该系统能够根据输入的参数精确而快速地生成齿轮实体模型,大大提高了设计质量和设计效率。
关键词:差速器,直齿圆锥齿轮,UG,二次开发,参数化Parametric design of differentialAbstract:Straight bevel gears are widely used in differential,because its shape is very complicated,a lot of the design process.Is generally the first to related parameters,and then manually in the CAD softwaremodeling.The design process is complex,repetitive work too much,and t update the same type but sizes of bevel gear can not achieve model.If the two secondary development of CAD software,making the bevel gear parametri design system can solve this problem.This design uses UGNX software,parameterized solid modeling system using the UG two development tool UG OPENAPI and VC++ joint development of automobile differential bevel gear,the system canaccording to the input parameters accurately and quickly generate gear solid model,greatly improve the design quality and design efficiency.Keywords: Differential,Straight bevel gear,UG,Re-develop,Parametric目录1 前言 (1)1.1课题研究背景 (1)1.2课题研究的目的以及研究内容 (1)1.3本课题研究的主要工作 (2)2 差速器参数化系统 (3)2.1系统开发软件简介 (3)2.1.1 UG软件简介 (3)2.1.2 VC++简介 (3)2.2 UG二次开发技术简介 (3)2.2.1 UG/OPEN API (4)2.2.2 UG OPEN UIStyler (4)3 差速器的设计 (6)3.1汽车差速器的功用及其分类 (6)3.2设计差速器的选型 (8)3.3设计初始数据的来源与依据 (8)3.4差速器结构分析简图 (8)3.4.1差速器结构方案图 (8)3.4.2差速器的结构分析 (9)3.4.3差速器的工作原理 (10)3.5差速器非标准零件的设计 (12)3.6锥齿轮最终设计方案 (15)3.7 差速器壳体的建模 (19)4 差速器的三维参数化建模 (20)4.1直齿锥齿轮的手工建模 (20)4.1.1直齿锥齿轮的建模思路 (20)4.1.2齿轮常用的齿形曲线—渐开线 (21)4.1.3渐开线的形成及其特性 (21)4.1.4绘制思路 (23)4.2绘制过程 (24)4.2.1建立渐开线齿廓曲线 (24)4.3差速器的整体模型 (27)4.4直齿锥齿轮的参数化建模 (28)4.4.1创建人机交互界面——对话框 (28)4.4.2 编写菜单文件 (29)4.5 创建应用程序框架 (30)结论 (34)参考文献 (35)致谢 (36)附录 (37)1 前言1.1课题研究背景差速器作为传动系统的主要部件之一,主要安装在驱动桥内,其各构件的强度和力矩的分配,对车辆的转向性能、通过性和可靠性有决定性的影响。
第1章二次开发应用初步UG/NX是当今世界上最先进和高度集成的、面向制造行业的CAD/CAE/CAM软件系统,可用于产品的整个开发过程,包括产品概念设计、建模、分析和加工。
UG/NX以其强大的设计和加工功能而著称,可以支持目前市场上销售的不同厂家的所有工作站及微机平台,广泛应用于通用机械、模具、汽车及航空航天领域,被很多世界著名公司选定为企业计算机辅助设计、分析、制造的标准。
从20世纪60年代起UG就一直代表着工程制造业CAD/CAM软件产品的最高水平。
20世纪90年代,UG进入中国市场,受到广大CAD/CAM用户的欢迎。
UG在中国的用户已超过1000多家,装机量达到350 多套。
这是因为UG是一个集成化、全面、一体的软件,它包括设计、加工、分析和最流行的产品数据管理(PDM),给企业提供了一个全面的解决方案。
1.1 CAD软件的二次开发随着CAD应用领域的不断扩大和应用水平的不断提高,用户需求与CAD系统规模之间的矛盾日益增加,没有一个CAD系统能够完全满足用户的各种需求。
作为商品化的CAD软件产品,是否拥有一个开放的体系结构,是衡量该软件的优劣性、适用性和生命力的重要标志,而是否拥有一个开发简便、运行高效的二次开发平台又是开放式体系结构的核心和关键。
目前,主流的CAD软件都具有用户定制功能并提供二次开发工具。
通过CAD软件的二次开发工具可以把商品化、通用化的CAD系统用户化、本地化、即以CAD系统为基础平台,在软件开发商所提供的开发环境与编程接口基础之上,根据自身的技术需要研制开发符合相关标准和适合企业实际应用的用户化、专业化、知识化、集成化软件,以进一步提高产品研发的效率。
在通用CAD基础上融入专业知识构建专用CAD系统是当前深化CAD应用的潮流。
把用户的设计思想转化为特定的新功能需要以下基本要素,这些基本要素构成了CAD软件二次开发平台的基本结构:(1)通用CAD软件——管理层。
通用CAD软件是整个开发的基础,是二次开发应用程序的宿主。
基于VC++的UG二次开发技术胡道钟(东风汽车模具厂)摘要本文叙述了如何在以Windows NT 4.0为操作系统的微机工作站上进行基于VC++6 0的UG(V14.0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。
关键词 VC++UG UG/Open API 二次开发编程1 概述UG是一个功能强大的通用3D机械CAD/CAM软件系统,用户若要以它为平台进行二次开发,实现大型的机械设计系统(如模具智能化专家系统CAD软件),就必须利用UG的开发模块,借助C/C++,在以UNIX为操作系统的工作站上或以Windows为操作系统的微机工作站上编写C程序,进而生成可执行文件。
本文的目的就在于叙述如何在以Windows NT 4 0为操作系统的微机工作站上进行基于VC++6 0的UG(V14 0)二次开发,并对UG的开发模块和UG/Open API的编程方法作了介绍。
1.1 UG/Open它通过一个开放的平台包含一系列的基于UG的应用软件的柔性集成。
其目的是为了计算机集成应用,支持第三方和UG的应用,使基于不同的计算机平台从不同的场所(不同的网络)实现数据共享,甚至通过Internet访问它的内容。
它在注重于集成化和本地化的软件应用的同时,还致力建立一个能供各方利用的开放体系机构。
UG/Open提供了一种使顾客能够完成下列工作的应用软件和工具:(1)通过UG/Open API 或UG/Open GRIP 提供了与UG对象模型(UG Object Model)的接口;(2)生成和管理用户自定义对象(User Defined Objects或Custom Objects),包括管理它们与U对象的相关性,提供一种刷新和显示用户自定义对象的方法;(3)提供反映第三方应用软件的UG图形界面本地化方法;(4)利用相关产品如 IMAN ITK和Parasolid;(5)利用和集成新的UG/Open技术并使之成为应用可能。
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程序一样必须通过编译形成动态链接库或可执行文件后才能发挥作用。
VC++联合UG二次开发在工业产品设计中的研究UG是一款广泛应用于机械设计行业的CAD软件,能够完成对复杂工业产品的建模设计,并具有强大的二次开发功能。
本文着重探究了VC++联合UG二次开发进行工业产品建模设计的技术问题,在对UG二次开发概念、常用工具等进行详细阐述的基础上,以工业产品波纹管为例,分析了UG二次开发环境中应用VC++进行产品设计的步骤。
标签:UG;VC++;二次开发;工业产品设计1 引言UG(Unigraphics NX)是由SPS公司推出的一款工业CAD/CAM产品设计软件,它针对用户的三维及多维产品设计需求,提供了交互化、虚拟化的设计体验。
在工业产品的设计中,UG体现出了强大的设计功能,其主要功能包含工业设计、产品仿真、NC加工、模具设计等,在不同的设计功能中,UG都为用户提供了人性化、便捷化的设计思维,尤其是UG提供的二次开发功能,能够帮助客户全面地改善设计过程的效率,降低设计成本,缩短产品进入市场的时间,将产品制造的过程集成到一个实现数字化管理和协同的框架中。
可以说UG的应用使现代制造业产品设计、加工的方式实现了全面革新。
2 UG二次开发概述2.1 UG二次开发的界定二次开发是UG内含的功能之一,主要依赖于UG/Open工具集完成,亦是UG为用户提供的最为有效的开发工具之一。
二次开发功能依托于开放性架构,在具体的开发过程中,能够利用多种环境语言和工具完成工作,其中,在二次开发的程序编译环节,主要采用VC++语言完成。
此外,C语言、Java语言也可用于UG的二次开发,通过上述高级计算机语言,UG能够在二次开发环节中建立起完美的人机交互界面,不仅为用户提供高效的开发体验,还能够为技术人员提供便捷的开发辅助操作,可以说,UG二次开发的功能十分强大。
2.2 UG二次开发的工具UG二次开发工具包含很多,其主要的有:UG/Open MenuScript、UG/Open API和UG/Open GRIP等,上述工具在UG二次开发中各有应用领域且功能各异:(1)UG/Open MenuScript。
⼩⽩学UG⼆次开发_UGOpenUIStlyer对话框设计⼩⽩学UG⼆次开发 UGOpen UIStlyer 对话框设计本例参考《UG/Open API、MFC和COM 开发实例精解》黄勇,本例基本参照书中内容操作,没有做太⼤修改,能正常运⾏。
第⼀步,准备⼯作在UGII_USER_DIR⽬录⾥新建startup,application两个⽂件夹。
书中是这么说的,但是我只⽤到了application,startup我没有⽤到。
怎么设置环境变量我就不说了。
第⼆步,设计UI.UG 开始-》所有应⽤模块-》NX 6 之前版本UI样式编辑器选之前的版本主要为了降低开发难度。
进⼊UIStyler 对话框设计环境,新建⽂件。
⾥⾯有很多控件,⾃⼰试着点点看,探索下。
⾥⾯有对象浏览器,对话框和资源编辑器,对话框的标题和提⽰如下图所⽰,前缀名⽐较重要,直接关系到后续程序⽣成后的⼀些参数名称,我们这边设置为DIALOG_ACCESS。
设置如图所⽰的整数、实数、字符串和按钮控件,导航按键中按钮样式选项⾥选择的不同项会影响到后续的回调函数。
这⾥选择关闭。
整数,实数,字符串修改下标签和标识符。
这个会在对象浏览器⾥反应出来。
⽬前我还不会修改类型,就放着没管,如果有知道的,请帮忙解释下类型。
另外,我对回调函数的名称⽣成机制也不是很清楚,只是知道Back_cb应该是关闭对话框时触发的回调函数,action_3_act_cb 是按钮空间触发的回调函数,名字和书上不太⼀样,但是能正常实现功能。
完成后,另存为对话框到application,语⾔选C,对话框名称为access_dialog,在⽬录下会⽣成access_dialog.dlg,access_dialog.h,access_dialog_template.c 三个⽂件,进⼊⽂件夹,将最后⼀个⽂件改成access_dialog.cpp并保存。
按之前帖⼦的⽅法建⽴⼀个DDL⼯程,注意⽬录放在UGII_USER_DIR下,名称也为Dialog_Access.将access_dailog.h和access_dialog.cpp复制到⼯程中,添加到头⽂件和源⽂件中。
UG二次开发中截面惯性矩计算方法的研究张宏伟;贺尔铭;赵志彬【摘要】To solve the problem of calculating moment of inertia involved in complex bending parts die surface, the algorithm of cross-section moment of inertia is put forward, based on the definition of moment of inertia. Firstly find moment of inertia and product of inertia passing centroid, then determine principal moment of inertia by using rotation axis formula. And with the development platform of the VC ++ , the second development of UG is realized by UG/Open API and MFC functions.%针对复杂截面弯曲件成型中涉及的截面惯性矩计算问题.从惯性矩的定义出发,提出了一种求截面惯性矩的算法,即先求出过截面形心某一定轴的惯性矩和惯性积,然后利用转轴公式求得形心主惯性矩,再借助VC++开发平台,利用UG/Open API和微软基础类(Microsoft Foundation Classes,MFC)函数实现UG(Unigraphics NX)的二次开发.【期刊名称】《科学技术与工程》【年(卷),期】2011(011)034【总页数】4页(P8567-8570)【关键词】UG二次开发;VC++;MFC;惯性矩【作者】张宏伟;贺尔铭;赵志彬【作者单位】西北工业大学,西安710072;西北工业大学,西安710072;西北工业大学,西安710072【正文语种】中文【中图分类】TB237截面惯性矩是产品模具横截面的主要特性之一,也是拉弯、修模过程中需要用到的截面主要几何性质之一。
UG/OPEN API简明教程User Functions培训简明教程第一章绪论1 User Function是什么定义:在UG中用C语言开发应用程序的一个工具 2 User Function的两种形式External λ菜单λ(执行程序)Internal (动态连接库)3 User Function的组成与相互关系User Function可以分为以下几个部分:C语言库函数(1) 创建与查询几何实体(2) 分析几何实体(3) 创建与编辑特征(4) 创建与编辑表达式(5)λ应用程序(回调函数)λ对话框数据管理这几部分的关系可以作如下的描述:User Functions的菜单和对话框是程序与用户交互的工具,从菜单可以起动应用程序,对话框等,在对话框激活控件时,将调用相应的回调函数,回调函数和控件的关系在UIStyler 中定义。
应用程序和回调函数用基本的C语言和User Functions的库函数编码。
4 User Functions的执行User User Functions◊Execute UG/OPEN◊Functions的执行包括四种形式:(1) File 选取该菜单将出现一个文件打开对话框,选取相应用应用程序即可。
(2) Menu ACTION (3) UIStyler 回调函数(2)和(3)将在后面的章节中作详细描述(4) 将应用程序COPY到UGII_USER_DIR\startup子目录下,应用程序将在UG启动时自动运行。
5 User Functions的开发步骤有关软件工程方面的内容,不是我们要介绍的内容,要讲的是User Functions有关的开发步骤。
在下面讲述的内容是以NT下的Visual C++ 5.0和UG15.0为支持环境。
具体的开发步骤如。
(1) 建立C源程序Win32◊project◊New ◊(2) 在Visual C++中建立一个project (a).Create new project Filesetting◊Dynamic-Link Library 此时还要输入project的名称。
【文件名称】MFC分析及解决方法【项目代号】经验总结【拟制】康宗学【时间】2011-04-02【评审】【时间】目录1. Visual C++/MFC 简介 (3)2.CDC双缓冲方法浅析 (4)3.各类型变量之间的转换 (7)4.VS2005之后的C++中char 转wchar_t 及wchar_t转char的方法 (9)1. Visual C++/MFC 简介学习MFC,首先要对Windows API有一定的了解,否则无法深入学习MFC。
至少要知道Windows对程序员来说意味着什么,它能完成什么工作,它的一些常用数据结构等。
另一点是不要过分依赖于Wizards。
Wizards能做许多工作,但同时掩饰了太多的细节。
应当看看AppWizard和ClassWizard为你所做的工作。
在mainfrm.cpp 中运行调试器来观察一下MFC运行的流程。
除非你理解了生成的代码的含义,否则无法了解程序是如何运行。
还有很重要的一点就是要学会抽象的把握问题,不求甚解。
许多人一开始学习Visual C++就试图了解整个MFC类库,实际上那几乎是不可能的。
一般的学习方法是,先大体上对MFC有个了解,知道它的概念、组成、基本约定等。
从最简单的类入手,由浅入深,循序渐进、日积月累的学习。
一开始使用MFC提供的类时,只需要知道它的一些常用的方法、外部接口,不必要去了解它的细节和内部实现,把它当做一个模块或者说黑盒子来用,这就是一种抽象的学习方法。
在学到一定程度时,再可以深入研究,采用继承的方法对原有的类的行为进行修改和扩充,派生出自己所需的类。
学习MFC,最重要的一点是理解和使用MFC类库,而不是记忆。
下面简单介绍一下MFC的主要构成。
总的来说,MFC可分为两个主要部分:(1)基础类(2)宏和全程函数。
MFC基础类MFC中的类按功能来分可划分为以下几类:基类;应用程序框架类 *应用程序类 *命令相关类文档/视类 *线程类可视对象类窗口类视类对话框类 *属性表控制类菜单类 *设备描述表绘画对象类通用类文件诊断异常收集模板收集其他支持类OLE2类OLE基类OLE可视编辑包装程序类OLE 可视编辑服务器程序类OLE数据传输类OLE对话框类其他OLE类数据库类有* 的为一开始在项目工作区的class中能够就看得见的宏和全局函数若某个函数或变量不是某个类的一个成员,那么它是一个全程函数或变量。
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可以识别的执行文件。
一、准备工作。
1、对于UG自动加载的DLL文件和菜单文件,在将菜单与DLL文件放进文件夹“startup”,目录注册到custom_dirs.dat(如目录注册为“E:\ug\OPEN\ug_open\”,则startup文件夹满足:“E:\ug\OPEN\ug_open\startup。
”)
2、对于.prt文件的自动目录位置,注册到UGII_STANDARD_PATH=...ugii_env.dat中。
3、VC6.0中加载UGOPEN与UGOPENPP。
【tools】->【Options】如图:
二、VC6.0中新建DLL。
1、新建时“MFC AppWizard [dll]”,其它选项默认。
2、Projiect->Settings中link选项卡在category下拉中选择General。
之后加入lib 文件。
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libufun.lib
libugopenint.lib libopenpp.lib libvmathpp.lib
3、Project Setting->C/C++中,category下拉中选择Code Generation,把Use run-time library的选项改为“Multithreaded DLL”。
如图:
4、头文件注意:
#include <uf.h>
#include <uf_exit.h>
#include <uf_ui.h>
#include <uf_mb.h>
#include <uf_part.h>
#include <uf_fam.h>
#include <uf_modl.h>
#include <uf_mtx.h>
#include <uf_assem.h>
#include <ug_session.hxx>
#include <ug_exception.hxx>
#include <ug_info_window.hxx>
三、代码。
CProject_UIApp theApp; //后面加代码
static UF_MB_cb_status_t DB_USER_manage_fun(UF_MB_widget_t widget
,UF_MB_data_t client_data
,UF_MB_activated_button_p_t call_button)
{ int err;
UF_initialize();
AFX_MANAGE_STATE(AfxGetStaticModuleState()); //调用MFC类库的对话框前必须加
///////////////************************************************/////////// //////////////
CUIDialog abc;
DoModal();
///////////////**********************************里面加点击UG菜单后运行的代码。
return UF_MB_CB_CONTINUE;
}
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{
// Initialize the API environment
static UF_MB_action_t actionTable[]=
{
{"DB_USER_MANAGE",DB_USER_manage_fun,NULL},
//将菜单DB_USER_MANAGE和要运行的函数DB_USER_manage_fun关联
{NULL,NULL,NULL}
};
int errorCode = UF_initialize();
if ( 0 == errorCode )
{
////////////////////////////////////////////////////////////////
UF_MB_add_actions(actionTable); //将菜单和要运行的函数关联
//////////////////////里面可以加初始化的代码///////////////////
errorCode=UF_terminate();
}
PrintErrorMessage(errorCode ); //错误信息
}
static void PrintErrorMessage( int errorCode )//错误信息{
if ( 0 != errorCode )
{
/* Retrieve the associated error message */
char message[133];
UF_get_fail_message( errorCode, message );
/* Print out the message */
UF_UI_set_status( message );
fprintf( stderr, "%s\n", message );
}
}
//注意头文中要注册
static void PrintErrorMessage( int errorCode );。