登录【网站注册】点击左边“微信账号登陆”图标,微信扫描即自动注册并登陆
搜索
查看: 2312|回复: 1

[网盘资源] UG二次开发实用入门教程_程序的基础知识_02

[复制链接]
发表于 2014-3-11 15:03:59 | 显示全部楼层 |阅读模式

UG二次开发实用入门教程_程序的基础知识_02
2014年03月10日 ⁄ UG API(UFUN) ⁄ 共 2780字         ⁄ 暂无评论 ⁄ 被围观 13 阅读+
表达式的定义
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()        通过表达式标识获得表达式值


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

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()

删除链表,并释放内存



下面举例说明链表的使用方法,代码实现的功能是利用曲线数组创建曲线链表,需要注意的是链表使用完后,需要利用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[i]);



UF_MODL_delete_list(&curves_list);



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()       
读取给定类型和标题的属性的值

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

优胜专注教学 技术实力最强 www.ysug.com
发表于 2016-11-10 11:56:44 | 显示全部楼层
感谢  学习一下
优胜专注教学 技术实力最强 www.ysug.com
回复 支持 反对

使用道具 举报

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

本版积分规则


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