青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 1993|回复: 1

[转载] UG二次开发实用入门教程_程序的基础知识_02

[复制链接]
发表于 2014-3-10 08:49 | 显示全部楼层 |阅读模式

8 O" P3 _+ Z. l3 \0 t原帖地址:http://www.ugufun.com/?p=100
* T3 t. e- `- b: @, z
, Z( g( ]4 O7 G0 e4 [
表达式的定义

ug/Open API创建的表达式和UG的交互界面产生的表达式同样在“表达式编辑器”中可见。

表达式提供UG中的参数化建模的机制,表达式能控制特征,特征也随表达式的变化而改变。—个表达式可在多个特征中使用,这样它的变化将能改变多个特征。

表达式的形式一般是: “name = value”。

表达式名的首字符必须是字母,其他字符可以是数字、字母、下划线等。表达式名是大小写敏感的,一个部件文件中的表达式名应唯—。表达式值可以是数字和条件等式,表达式名可以用于表达式值中。

表达式的使用

UF函数允许用户创建、查询和编辑表达式和几何表达式,对表达式进行各种操作的函数包含在头文件uf_modl.h中,对几何表达式进行各种操作的函数包含在头文件uf_gexp.h中。

如果表达式串中,仅仅提供表达式值,UG软件会自动给它—个名字。如表达式串定义如下:

“diameter/2”

UG会赋给它一个类似“p0”的名字。建议按下列形式赋值

“radius = diameter/2 ”

可以用函数UF_MODL_create_exp()创建表达式;当需要得到创建的表达式的标签时,使用函数UF_MODL_create_exp_tag()。常用表达式操作函数如表3-8所示:

表3-8常用表达式操作函数

函数

描述

UF_MODL_create_exp()创建表达式,没有返回
UF_MODL_create_exp_tag()创建表达式,返回新建表达式的标识
UF_MODL_import_exp()从文件输入表达式,即可引用其它部件的表达式文件,操作完成后必须用函数UF_MODL_update()更新数据库
UF_MODL_dissect_exp_string()分解名字和值返回名字、值和表达式的标识
UF_MODL_eval_exp()输入表达式的名,返回表达式的值
UF_MODL_edit_exp()用新的值替换表达式中原有的值。使用后应用函数UF_MODL_update()来更新模型
UF_MODL_rename_exp()给已有表达式赋新的名称
UF_MODL_ask_exp()返回表达式名和表达式值
UF_MODL_ask_exps_of_feature()返回制约某特征的所有表达式的标识
UF_MODL_ask_exps_of_part()返回某部件文件的所有表达式的标识
UF_MODL_ask_exp_tag_string()输入表达式标识,返回该表达式串。
UF_MODL_ask_exp_tag_value()通过表达式标识获得表达式值
6 }- H# R  j2 G' r. J. Y6 Q$ W) j

下面举例说明函数UF_MODL_edit_exp()的使用方法,代码实现的功能是将表达式p1的值改为20。注意:函数UF_MODL_edit_exp()的输入参数必须为整个表达式,并且编辑表达式后,必须更新模型才能及时反映其变化。

* y1 |! F; D1 P: A, {

char sExp[] = “p1=20”;

UF_MODL_edit_exp(sExp);

UF_MODL_update();

链表对象

为了提高编程的灵活性,UG/Open API提供了对象链表。它使用来存放对象或特征的标识,链表的每个节点保存一个对象或特征的标识。与链表有关的操用函数如表3-9所示,它们包含在头文件uf_modl.h中。

表3-9 链表操作函数

函数

描述

UF_MODL_create_list()

创建一个链表,并返回链表的头指针

UF_MODL_put_list_item()

插入元素到链表中。该函数只将对象加入到链表的尾部,不校验链表中是否有重复对象

UF_MODL_ask_list_count()

获取链表中元素的个数。该函数计算从链表的头开始到第一个出现NULL_TAG节点之间的节点个数。因此,如果链表中包含NULL_TAG,那么得不到链表的真实长度。

UF_MODL_ask_list_item()

查询链表中的对象标识。该函数通过标识在链表中的位置返回对象标识

UF_MODL_delete_list_item()

将指定的对象从链表中删除

UF_MODL_delete_list()

删除链表,并释放内存

( U7 Q; s  s. \0 v& M

下面举例说明链表的使用方法,代码实现的功能是利用曲线数组创建曲线链表,需要注意的是链表使用完后,需要利用UF_MODL_delete_list()删除不需要的链表。

uf_list_p_t curves_list = NULL;

int i = 0, irc =0;

UF_MODL_create_list(&curves_list);

for(i=0; i<n_curves; i++)

UF_MODL_put_list_item(curves_list, curves);

UF_MODL_delete_list(&curves_list);


8 }: M# K! Q4 {$ T1 O1 T

List两种应用场合。

属性对象

UG环境下的属性是用户附加到部件或对象上的字符串、整形数值、实型数值的字段,用于对部件或对象进行说明或做标记。UG/Open API在头文件uf_attr.h中提供了与部件或对象属性的接口。与属性对象有关的操用函数如表3-10所示。

部件属性对象是UF_part_attribute_type类型,它是关于整个部件的信息对象,例如模型的材料等属性。在每个UG部件中都有—个部件属性对象,在单个的部件属性对象上可以附加多个属性项。

UG提供了7种属性类型:UF_ATTR_any、UF_ATTR_string、UF_ATTR_integer、UF_ATTR_real、UF_ATTR_null、UF_ATTR_time、UF_ATTR_reference。UF_ATTR_any表示所有属性类型。

表3-10 链表操作函数

函数

描述

UF_ATTR_ask_part_attribute()

获取工作部件的部件属性对象标识

UF_ATTR_ask_part_attrs()

用于从加载到UG中的抽取属性对象的属性

UF_ATTR_ask_part_attrs_in_file()

用于从磁盘文件中抽取部件的属性对象的属性,而不用把该部件加载到UG中

UF_ATTR_assign()

给指定的部件属性或部件分派一个属性

UF_ATTR_count_attributes()

计算属于某一个对象的指定类型的属性数

UF_ATTR_cycle()

遍历对象某一类型的所有属性项,返回下一个属性标题及属性值

UF_ATTR_delete()

从对象上删除指定类型的属性

UF_ATTR_delete_all()

从对象上删除指定类型的所有属性

UF_ATTR_find_attribute()

查找某一属性标题的特定属性类型

UF_ATTR_read_value()

读取给定类型和标题的属性的值

2 y% H. Y/ B' @5 r
- j7 N" q% J. _* @& A

任何确定存在的UG对象都具有唯一的标识,这里对象是指UG的part、object、Feature、Expression等。

发表于 2014-3-10 10:07 | 显示全部楼层
我是UG爱好者,看了LZ的帖子,我只想说一句楼上的贴很好!UG论坛好强大!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2024-11-16 20:42 , Processed in 0.064316 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表