|
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等。
|
|