ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:24.87KB ,
资源ID:5781585      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5781585.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(3UG二次开发实用教程 第三章.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

3UG二次开发实用教程 第三章.docx

1、3UG二次开发实用教程 第三章第3章 编程基础3.1 UG/Open API函数3.1.1函数名称的约定UG/Open API 共有两类名称约定。一个是标准的UG/Open API的函数名称约定;另一个是以前版本原有的名称约定。1、标准名称约定格式:UF_说明: UF_,user funciton的简写,表示该函数为UG/Open API函数; ,应用或模块的名称缩写。例如modl和disp分别是Modeling模块和Display功能的名称缩写; ,表示其实现功能的语言描述,一般由下划线分开的动词和名词(或词组)组成。常用的动词有:ask(查询)、create(创建)、edit(编辑)、se

2、t(设置)、delete(删除)等。例如:UF_MODL_create_block1()为创建立方体的函数;UF_DISP_set_highlight()是高亮显示对象的函数;(2)非标准名称约定格式:uc 和uf说明:代表UG/Open API C程序,通常是四位数或三位数接一个字母。例如:uc1601是一个提示信息函数。3.1.2 函数参数的约定UG/Open API提供的函数遵守ANSI/ISO C的标准,并以下列格式在头文件中提供函数原型:(变量列表);返回数据类型通常是C数据类型或UG/Open API自定义数据类型。参数的输入输出方式有3种:I(Input)、O(Output)或O

3、F(Output Free),说明见表3-1。表3-1参数输入方式说明元 素描 述I表示参数为输入方式,参数在使用前必须赋值O表示参数为输出方式,使用前无须赋值OF表示参数为输出方式,且使用后需要释放内存。UG/Open API提供的常用释放内存函数有UF_free()、UF_free_string()和UF_STYLER_free_value()等,至于选择哪种释放函数需视具体情况而定。例如:函数UF_PART_open()名称:UF_PART_open使用环境: internal & external语法格式: int UF_PART_open(char *part_name,tag_t

4、*part,UF_PART_load_status_t *error_status);描述:加载一个UG部件文件到UG的界面环境中,并把它设为工作和当前显示部件,该函数的描述见表3-2。表3-2 函数UF_PART_open()参数描述参数输入输出类型描述part_name输入char *要打开的部件文件名part输出tag_t *打开部件的标识,当打开部件文件失败时为NULL_TAGerror_status 输出UF_PART_load_status_t *当加载部件失败时该结构中将包含错误代码和部件文件名称,使用结束后应使用函数UF_free_string_arry()和UF_free()

5、释放内存return 输出int 返回代号: 为0时表示正常;非0时表示错误代号3.2 UG/Open API的数据类型除了C语言标准的数据类型外,UG/Open API还提供了一些自定义的数据类型,如tag_t类型、结构类型(structure type)、枚举类型(enum type)、联合类型(union type)与指针类型(pointer type)等,它们统一用后缀“_t”表示,且这些数据类型的指针用反缀“_p_t”命名表示。数据类型约定如表3-3所示:表3-3 数据类型约定后缀描 述_t数据类型(data type)_p_t数据类型的指针(pointer to data type

6、)_s结构标识(structure tag)_u_t联合类型(union type)_u_p_t联合类型的指针(pointer to a union type)_f_t函数指针(pointer to a function)3.2.1 tag_t类型UG/Open API 使用最多的数据类型是tag_t ,在UG/Open API的uf_defs.h中定义如下:typedef unsigned int tag_t ,*tag_p_t;在UG环境中,tag_t 是UG对象的句柄,即UG对象模型的唯一标识。它是一种不重复的无符号整型数值,主要用于标识应用程序中的对象,如部件、草图、曲线、属性和表达式

7、等。UG应用程序只能访问句柄,而不能直接访问句柄所指示的实际对象。程序一般通过调用API函数获取句柄,并且在其他API函数中使用这个句柄,以引用它指示的对象。在此过程中,句柄的实际值对程序来说是无关紧要的。此外,tag_p_t是指向tag_t数据类型的指针。以部件对象为例,下面的代码首先获取工作部件的tag_t值,然后获取该句柄所引用部件对象的文件名。tag_t tWorkPart;tWorkPart = UF_ASSEM_ask_work_part();3.2.2 结构类型UG/Open API采用C语言的语法定义了一些常用的结构类型,将相应联系的不同类型数据封装在一起使用,这些结构类型用后

8、缀“_s”表示,例如:struct UF_STYLER_item_value_type_sint reason;const char* item_id;int subitem_index;int count;int item_attr;int indicator;UF_STYLER_value_t value;typedef struct UF_STYLER_item_value_type_s UF_STYLER_item_value_type_t, *UF_STYLER_item_value_type_p_t;结构体UF_STYLER_item_value_type_s封装了对话框控件的基本

9、属性,如reason、item_id和value等。UG/Open API使用关键词typedef将该结构类型定义为新类型UF_STYLER_item_value_type_t,用户可以使用它定义结构变量,然后引用结构体内的数据成员,例如:UF_STYLER_item_value_type_t data;UF_STYLER_ask_value(dialog_id, &data);UF_STYLER_free_value( &data );3.2.3 枚举类型枚举类型将变量的值一一列举出来,变量的值只限于列举出来的值的范围。UG/Open API采用C语言的语法定义了一些常用的枚举类型,使用后缀

10、“_e”表示。以枚举类型UF_ASSEM_load_status_e为例,下面给出其详细定义:enum UF_ASSEM_load_status_eUF_ASSEM_ok,UF_ASSEM_suppressed,UF_ASSEM_not_loaded,UF_ASSEM_instance_suppressed;typedef enum UF_ASSEM_load_status_e UF_ASSEM_load_status_t;枚举类型UF_ASSEM_load_status_e表示部件在装配体中的状态。UG/Open API使用typedef关键词将该枚举类型定义为新类型UF_ASSEM_loa

11、d_status_t,例如:char sPartPath = “E:Examplepart.prt”;tag_t tPart = NULL_TAG;UF_PART_load_status_t error_status;UF_PART_open(sPartPath, &tPart, &error_status);3.2.4 联合类型有时需要将不同数据类型的变量放在同一段内存单元中,这种使不同变量占用同一段内存的结构类型称为联合类型。联合类型与结构类型的定义形式相似,但含义不同。联合类型变量所占的内存长度等于其内部最长数据成员的长度,而结构类型变量所占的内存长度则是其各数据成员所占内存长度之和。U

12、G/Open API采用C语言的语法定义了一些常用的联合类型,使用后缀“_u”表示。以联合类型UF_STYLER_value_u为例,下面给出其详细定义:union UF_STYLER_value_uchar *string;char *strings;int integer;int *integers;double real;double *reals;UF_UI_selection_p_t selection;UF_STYLER_notification_p_t notify;UF_UI_attachment_t attach;UF_UI_option_toggle_t option_to

13、ggle;typedef union UF_STYLER_value_u UF_STYLER_value_t;联合体UF_STYLER_value_u封装了对话框对话框控件的属性值,如string、integer和real等。UG/Open API使用typedef关键词将该联合类型定义为新类型UF_STYLER_value_t,它是UF_STYLER_item_value_type_t中的数据成员value的类型,例如:UF_STYLER_item_value_type_t data;double rValue;sel_data.item_id = REAL_BUTTOM_DIAMETER;

14、UF_STYLER_ask_value ( dialog_id, &sel_data );rValue = data.value.real;3.3 UG对象类型及基本操作UG中的所有对象都是通过唯一的tag_t值进行标识,这些对象大致可以分为部件对象、UF对象、表达式、链表和属性。3.3.1 部件对象部件对象是UG最基本的操作对象之一,不仅包含了零件的几何信息,而且更包含了大量的非几何信息,非几何信息包括:创建部件的计算机类型;保存部件的UG版本;部件的历史信息(例如部件文件的保存记录等);状态、描述和用户区的可永久保存在部件文件中的信息。UG/Open API提供的访问和操作部件文件的函数包

15、括部件文件的创建、打开、关闭、保存和信息的查询等。表3-4 对部件对话操作的函数函数描述UF_OBJ_cycle_objs_in_part()在部件中查询对象UF_ATTR_ask_part_attrs()访问部件的属性UF_PART_close()UF_PART_reopen()关闭和再打开部件UF_PART_ask_part_name()获取部件的文件名UF_PART_ask_customer_area()UF_PART_ask_description()UF_PART_ask_status()查询其他信息,包括:查询用户定义的数据、部件文件的描述信息,部件文件的状态信息UF_PART_a

16、sk_part_history()查询部件文件的历史UF_PART_ask_compression_flags()UF_PART_set_compression_flags()查询及设置部件文件的压缩标记部件对象基本操作涉及的函数主要有UF_PART_new、UF_PART_open、UF_PART_close_all、UF_PART_save和UF_PART_close。(1) UF_PART_newextern int UF_PART_new (char * part_name,int units, tag_t * part ); 参数part_name是指向保存被创建文件路径和名称的字符

17、串指针,units是输入参数,表示被创建文件使用的单位制,1表示米制,0表示英制。part是输出参数,是指向新创建部件文件的tag_t。该函数的返回值是错误代码,可以利用函数UF_get_fail_message得到其所对应的错误信息。(2) UF_PART_openextern int UF_PART_open (char * part_name, tag_t * part,UF_PART_load_status_t * error_status );参数part_name是指向保存被创建文件路径和名称的字符串指针,是输入参数。error_status是输出参数,表示打开文件的操作是否产生错

18、误。(3) UF_PART_close_allextern int UF_PART_close_all ( )将当前会话中的所有部件文件关闭。对于被修改的部件文件,UF_PART_close_all并不会导致这些文件被存盘,也不会提示用户存盘。UG仅仅向用户确认是否将当前部件文件关闭。(4) UF_PART_saveextern int UF_PART_save ( )将当前会话中显示的部件文件存盘。由于UG本身并不对部件文件自动存盘,所以存盘需求都需要户进行维护。(5) UF_PART_closeextern int UF_PART_close (tag_t part,int scope,i

19、nt mode )其中参数part是输入参数,表示关闭操作的部件的标识。参数scope是输入参数,表示被关闭文件涉及的范围。scope=1表示关闭部件文件和其所有子装配;scope=0表示仅仅关闭部件文件本身。参数mode是输入参数,表示是否请求用户确认。当mode=0时,如果被关闭的部件文件被修改过,则询问用户是否关闭;mode=1表示即使文件被修改了,也要执行关闭操作;mode=2时表示如果部件文件被修改了,则放弃关闭操作。3.3.2 UF对象UF对象是那些具有标识的实体、包括几何对象和非几何对象。几何对象包括点、线、面、实体等;非几何对象有坐标系、矩阵、尺寸等。UG中所有具有标识的实体,

20、如点、线、面、基准等,都可以称为对象。模型中包含的对象包括几何实体对象、非几何对象。其中几何实体又可细分为实体、点、直线、圆弧等。非几何实体对象则有坐标系对象、尺寸对象、颜色、线性等。UF利用类型与子类型来区别部件文件中不同对象。每个UF对象都有一种类型,在头文件uf_object_types.h中详细定义了这些对象的类型(type)和子类型(subtype),子类型可以更加精确地描述UF对象,但是不是所有的对象都拥有子类型,例如:#define UF_group_type 15#define UF_dimension_type 26#define UF_dim_horizontal_subt

21、ype 1#define UF_dim_vertical_subtype 2#define UF_dim_parallel_subtype 3#define UF_dim_cylindrical_subtype 4#define UF_dim_perpendicular_subtype 5#define UF_dim_angular_minor_subtype 6#define UF_dim_angular_major_subtype 7#define UF_dim_arc_length_subtype 8#define UF_dim_radius_subtype 9#define UF_di

22、m_diameter_subtype 10#define UF_dim_hole_subtype 11#define UF_dim_conc_circle_subtype 12#define UF_dim_ordinate_horiz_subtype 13#define UF_dim_ordinate_vert_subtype 14#define UF_dim_assorted_parts_subtype 15#define UF_dim_folded_radius_subtype 16#define UF_dim_chain_dimensions_subtype 17#define UF_d

23、im_ordinate_origin_subtype 18#define UF_dim_perimeter_subtype 19#define UF_dim_chamfer_subtype 20其中,UF_group_type表示组类型,类型值为15,无子类型; UF_dimension_type表示尺寸类型,类型值为26,120表示它的子类型的值,分别表示为垂直尺寸、水平尺寸、平等尺寸等。UG/Open API提供的访问和操作UF对象的函数包括UF对象的查询、遍历、等。对象操作函数请参考头文件uf_obj.h中的定义。表3-5 UF对象基本操作函数函数描述UF_OBJ_set_name()U

24、F_OBJ_ask_name()UF_OBJ_delete_name()指定、查问及删除单个对象的名称UF_OBJ_cycle_objs_in_part()UF_OBJ_cycle_all()UF_OBJ_cycle_by_name()UF_LAYER_cycle_by_layer()查询遍历对象,可以在指定部件中遍历对象,在当前工作部件中遍历对象,通过对象名称和图层查询对象UF_MODL_delete_exp()UF_MODL_delete_feature()UF_OBJ_delete_object()UF_OBJ_delete_array_of_objects()对象删除UF_UI_sel

25、ect_single()UF_UI_select_by_class()UF_UI_select_feature()UF_UI_select_sketch()对话选择1、对象状态对象的状态可通过使用函数UF_0BJ_ask_status()来查询。对象共有下列几种状态:表3-6 UF对象状态标识状态标识描述UF_OBJ_DELETED被删除的状态UF_OBJ_TEMPORARY临时状态。例如临时坐标系由UF_CSYS_create_temp_csys函数创建,不会被保存UF_OBJ_CONDEMNED不正常状态。一般由于对象被删除,但它是其它对象的参考,只有所有的这些参考被删除后,该对象才从模型

26、中被删除,该状态的对象永远不被显示UF_OBJ_ALIVE激活状态2、对象访问在创建对象时,可以直接得到对象标识。但是,多数情况下需要访问已经在部件文件中存在的对象。一般可能通过以下两种方法来确定UF对象的标识:一是循环法。即可在获取目标体上面标识的循环过程中,插入下段程序。该段程序会高亮显示目标体上表面并弹出一个需用户确认的对话框,对话框中显示该对象的标识号。其中tem_tag为目标体上表面的标识。UF_DISP_set_highlight(tem_tag,1);Sprintf(mess, The object is %d!, i);uc1601(mess, 1);UF_DISP_set_h

27、ighlight(tem_tag,0);二是参数法。即可利用函数UF_MODL_ask_face_data获得目标体上表面的参数,包括表面的类型、表面的法向和表面的原点等信息。比如下面一段程序是为了获得圆柱体的圆柱表面。/通过圆柱特征标识,获得圆柱表面的链表UF_MODL_ask_feat_faces( cyl_eid, &face_list);UF_MODL_ask_list_count( face_list,&num);for ( i = 0; i num; i + ) UF_MODL_ask_list_item(face_list, i, &face); /获得每个圆柱表面的参数 UF_

28、MODL_ask_face_data(face, &type, point, face_dir, box, &radius, &rad_data, &sense); /将类型为的16(圆柱表面)表面取出赋给变量tem_tag并退出循环 if (type = 16 ) tem_tag = face; break; /删除链表,释放内存UF_MODL_delete_list(&face_list)3、设置可显示的UF对象信息的函数。UG/Open API提供了对可显示的UF对象的层、颜色、线型等属性进行设置和查询的接口。注意除了高亮状态外,其他信息都可以保存到part文件中。表3-7 设置可显示U

29、F对象函数函数描述UF_OBJ_ask_display_properties()用于查询可显示UF对象的显示属性UF_OBJ_set_layer()用于设置可显示UF对象的层UF_0BJ_set_color()用于设置可显示UF对象的颜色UF_0BJ_set_blank_status()用于设置可显示UF对象的blank状态UF_OBJ_set_line_width()用于设置可显示UF对象的线型UF_OBJ_set_font()用于设置可显示UF对象的字体UF_DISP_set_highlight()用于设置可显示UF对象的高亮(highlight)状态3.3.4 表达式3.3.4.1 表达

30、式的定义UG/Open API创建的表达式和UG的交互界面产生的表达式同样在“表达式编辑器”中可见。表达式提供UG中的参数化建模的机制,表达式能控制特征,特征也随表达式的变化而改变。个表达式可在多个特征中使用,这样它的变化将能改变多个特征。表达式的形式一般是: “name = value”。表达式名的首字符必须是字母,其他字符可以是数字、字母、下划线等。表达式名是大小写敏感的,一个部件文件中的表达式名应唯。表达式值可以是数字和条件等式,表达式名可以用于表达式值中。3.3.4.2表达式的使用UF函数允许用户创建、查询和编辑表达式和几何表达式,对表达式进行各种操作的函数包含在头文件uf_modl.h中,对几何表达式进行各种操作的函数包含在头文件uf_gexp.h中。如果表达式串中,仅仅提供表达式值,UG软件会自动给它个名字。如表达式串定义如下:“diameter2”UG会赋给它一个类似“p0”的名字。建议按下列形式赋值“radius = diameter2 ”可以用函数UF_MODL_create_exp()创建表达式;当需要得到创建的表达式的标签时,使用函数UF_MODL_create_exp_tag()。常用表达式操作函数如表3-8所示:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1