第9章属性操作_第1页
第9章属性操作_第2页
第9章属性操作_第3页
第9章属性操作_第4页
第9章属性操作_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第九章属性操作9.1属性的基本概念9.1.1屈性在产胡设计中,一般采用三维儿何模熨表达零件儿何结构,用二维匸程图表达尺寸和 匸艺信息,那么在装配图明细农屮的非儿何信息乂该如何农达?这些都需要一种能够表达 零件菲几何信息的我体。属性即作为这种非几何信息的我体,将各种零件的非儿何信息附 属零件模熨,使得零件信息较为完幣,在构造EBOM时能够方便获得。属性的表现形式是附加在部件或对象匕的各种文本数据,它是一种特殊的文本对象, 可包含用户所需要的各种信息.例如反映装配图中零件名称、规格、材料、质量、设计者 等内容,即为冬件的属性倍息,这些信息町通过PDM提供给产品全生命周期涉及的其它 部门使用。一个

2、零件H旳属性,实际上包含了一组属性项,可以表示成二维表。属性项是由属性 标题、属性值组成的,属性标题是属性各项的属性名,属性值是每个冬件対应属性名的值, JV右不同的类型,如衷9-1所示,第1行是属性标题,共有六个鴉性名,“序兮”、"名 称”、,第1个零件対应的各项属性值是“1”、“螺母”、,第2个零件对应的齐项 属性值是“2”、“销钉”、o在NX3中属性分为部件属性和对象属性。部件属性指冬部件的文件属性,属性值只能 是字符串型.零部件文件中的特征、实体、点、线、面等都可以被叫做对彖,为它们定义 的属性为对象属性。屈性值序号名称规格材料重呈(Kg)说明1螺母M645号钢0 1GB57

3、83-2销钉5X45铜0.03HB表9-1明细表实例9.1.2常用的加性操作及函数对于属性来说,常用的操作包括: 创建厲性:设定厲性标题和属性值 设定属性类型:每个属性的值必须指定是哪种类型,例如序号只能是整型,名称 是字符串型。 属性信息查询:对属性进行遍历,查询属世的属性标题和属性值 属性编辑:对属性进行修改.这个操作的实现和属性创建使用同一个函数。 属性删除:删除属性标题和属性值在UG/OPEN API中,UF.ATTR部分提供了 UG/OPEN与部件或对象属性的接I !通 过这些两数对属性进行操作,表9-2给出了部分函数及苴功能.表9-2属性操作的函数及功能分类函数功能査询UF ATT

4、R ask pan attnbute得到丁作部件的部件属性对彖标识创建、修改UF ATTR assign为指定的部件或对彖赋屈性标懸和屈性值査找UF ATTR cycle遍历部件或对彖指定屈性类空的所冇屈性UF ATTR fiiid attiibute査找部件或对叙是否存在指定属性类型和属性名的倉性读取UF ATTR ask part attrs读収部件的所有部件屈性UF ATTR ask part attrs in file从一个耒打开的部件文件中读収所冇的部件屈性UF ATTR count attnbutes计算部件或対彖某种屈性类型的屈性个数UF ATTR read value读収部件或

5、对象指定屈性类空和属件名的屈件值删除UF ATTR deleteUF ATTR delete all删除部件或対彖指定屈性类住的所仃屈性农9-2只是简单列出了属性操作函数的功能,9.3节将会对常川函数进行更详尽的介绍。9.1.3属性类型根据属性值的需要,UG的履性共定义了七种屈性类型,与整数17对应,如农93所示。在遇到输入或输出屈性类熨的地方,属性值和整数是相同的。表9-3属性类型对照属性类型对应整数类型UF ATTR integer1將型UF.ATTR.real2浮点型UF ATTR time3日期、时间型UF ATTR null4空类型UF ATTR strmg5字符串型UF ATTR

6、anv6任何类型UF ATTR reference7引用类型在函数中如果使用类粮UF_ATTR_any,表示对所冇的类空执行所指定的操作。9.2属性操作的典型数据结构在UF_ATTR的函数使用中会遇到三种典熨的数据结构,为了清楚理解如何输入或输 出数据,我们石耍了解其数据成员,结构及调用。本节主耍介绍这三种数据结构。9.2.1 UF_ATTR_value_s这是联介类的数据结构,用來定义属性的各种类型屈性值。union UF_ATTR_value_umtmteger;严用J:存取整型的属性值。*/doublereal;厂用存収浮点型的属性值。*/mttime2;严用存取期/时间型的属性值,tm

7、ie0存储UG计算的日期,timel存储UG计算的时间。/chai *strmg; /*用丁存取字符串型的屈性值,字符出的长度不能超过UF_ATTR_MAX_STRING_LEN,UF_ATTR_MAX_STRING_LEN= 132。/cliai *reference; /*用存取引用类型的属性值。*/;9.2.2 UF_ATTR_value_u函数 UF_ATTR_assign ()、UF_ATTR_cycle ()和 UF_ATTR_read_value ()使用了这个结构.该结构用来定义属性值类。 stmct UF_ATTR_value_s/*用F存取属性的七种类型。*/*用F存储属性

8、值。/mttype;UF ATTR value u t value;923 UF_ATTR_part_attr_sUF_ATTR_ask_pait_attis ()和 UF_ATTR_ask_pan_attis_ui_file ()使用 了这个结构。 该结构用于返回部件的屈性标题和属性值。struct UF_ATTR_part_atu_schaititleUF_ATTR_NIAX_TITLE_LEN+1 ;/* 用 J;存储属性标题,UF_ATTR_MAX_TITLE_LEN = 50 o /UF_ATTR_value_t value;/用 J:存储属性值。*/chai sUing_value

9、UF_ATTR_MAX_STRING_LEN+l; /*Jlj J /Z储部件字符串屈 性值的缓冲器。/;9.3属性操作在9.1屮对属性操作的功能做了简耍介绍,木节主要介绍属性操作常用的两数和使用 方法。由属性是附属零件的,所以属性的操作人多数针对某个指定的零件。指定一个零 件就是输入该零件的标讲,即tag因为它唯一地标识了该零件或者对彖。注意:在UF.ATTR类的两数中,如果部件标讲和对象标识作为输入参数,则在调用 该函数之前,首先需要将部件加载到UG中,才能得到部件标识,可用函数 UF_PART_open_qmet (),加戏冬件的同时得到该部件的标识。如果盂耍衍到对彖标讲,可 以用两数U

10、F_OBJ_cycle_objs_m_pait ()<>在所介绍的函数中,需要输入部件或对象标识的, 输入部件标识执行部件属性功能,输入对彖标识执行对象属性功能。例如:卜面的因数执行打开文件,并通过文件标识获得対象属性。UF_PART_open_quiet(chai*)(LPCTSTR)panNaine, &paitTag, &eiror_status); UF_OBJ_cvcle_obj s_in_part( partTag. UF_feature_tvpe, &objl );93.1部件屈性对象标识的査询功能:针对一个给定的部件输出它的旭性标识。实现这个

11、功能只仃一个函数 UF_ATTR_ask_paii_annbute (),即得到工作部件属性标Ul(pan attribute tag)« 但是这个函 数不常用,I対为在UF_ATTR中需耍用到属性标讲的换数,也可用部件标识(pail tag)实 现此功能。(1) UF_ATTR_ask_pait_atUibute ()语法格式如下:extern int UF_ATTR_ask_part_attnbute (tag_t* attribute );参数描述见表93所示。表 9-3 UF.ATTR.ask_part.attr I bute ()的参数描述类型参数输入/输岀描述tag fa

12、ttribute输出部件帕性对彖标识使用该函数时,首先川 UF_PART_sct_display_pait ()或 UF_ASSEM_set_woik_pan () 把一部件置为工作部件。使用顺序如下代码所示:UF_PART_open_quiet(char*)(LPCTSTR)partNaine, &paitTag, &error_status);UF_PART_sct_display_part(paitTag);(成为匸作部件还是証示部件?) UF_ATTR_ask-paiVattiibuteO;9.3.2属性的创建实现创建和修改使用同一个曲数UF_ATTR_assign (

13、)。対部件或対彖创建修改,都耍使氏成为工作部件。町使用UF_PART_set_displav_pan ()。(1) UF_ATTR_assign ()功能:输入指定部件或对象的标识,属性标题和属性值。如果属性已心在,则写入输 入的属性值,相当丁修改功能,否则先创建属性并写入属性值。语法格式如下:extern int UF_ATTR_assign (rag_tobject,cliar*title,UF_ATTR_ialue_t value );参数说明如表9-4所示。表9-4 UF_ATTR_assign確参数描述类型参数输入输出描述object输入部件或对線标识chai*title输入击创建或

14、修改尿忡的加竹标题UF ATTR value tvalue输入需创建或修改屈性的屈性值注意:在对部件或对彖的属性进行创建、修改或删除,必须对其进行保存操作,可以 使用附数UF.PART.save ()。例如:UF ATTR value t value 1;value 1.type = UF_ATTR_integer;value eger = 1;UF_ATTR_assign(obj 1. "NUM”, value 1);UF_PART_save0;9.33属性的査找(1) UF_ATTR_count_attnbutes ()功能:指定部件或对象、属性类熨,计算其

15、属牲项的个数。 语法格式如卜:extein int UF_ATTR_couiit_attiibutes (tag_t object, mt type, mt* count);参数描述如表95所示。表 9-5 UF_ATTR_count_attr i bute 的参数描述类型参数输入输出描述tag tobject输入部件或对彖标识inttype输入需要计算的屈性类型int*count输出屈性项个数例如:mt count;UF_ATTR_count_attnbutes(obj 1 < UF_ATTR_any. <Srcount);(2) UF_ATTR_find_attiibute (

16、)功能:指定部件或对彖、指定属性标题和屈性类空,査询符介条件的属性,如果不存在返回0值,否则返回指定类型对应的整型值。语法格式如卜:extern mt UFATTfindattnbute (tag_tobject.iiittype,chai*title.in广title.type);参数描述如表96所示。表 9-6 UF ATTR find attribute 的参数描述类型参数输人输出描述tagLtobject输入部件或对彖标识inttype输入农找的屈性类型char*title输入査找的标题int*d【le_type输出找到属牲则返何屈性类 型.否则返回0例如:mt type;chai t

17、itle 1 UF_ATTR_MAX_STRING_LEN + 1 - "NAME*;UF_ATTR_find_attiibute(panTag, UF_ATTR_sumg, title L &type); if (type)cout « nFound!M « type « endl;elsecout « "Not Found!" vv endl;9.3.4属性的读取功能:输入一个指定的部件的标识,读取它所对W的属性。实现这个功能的两数有: UF_ATTR_ask_pait_attis (), UF_ATTR_ask

18、_part_attrs_in_file (), UF_ATTR_cycle ()和 UF_ATTR_iead_value ()。前两个怖数只能读取部件属性,后两个即可读取部件属杵也可读取对象属性。(1) UF_ATTR_ask_part_attrs ()功能:输入部件标识,得到指定部件的屈性的个数和所仃属性值。语法格式如下:extern int UF_ATTR_ask_part_attrs ( const tag_t mt*part.tag, n_attnbutes.UF_ATTR_pan_atti_p_ 广 attiibutes );参数描述如表97所示。表 9-7 UF_ATTR_ask_

19、part_attrs 的参数描述类型参数输入输岀描述const tag tpart tag输入部件标识int*n atuibutes输出该部件屈性项的个数UF_ATTR_pait_attr_p_t attributes输岀type成饭保属性项标题. value保存屈性值部件属性只仃字符串类型,所以用点操作符茯1R sumgvalue成员就可以得到属性值, 也可用 了符:1;扌&针 value.value.stiing)UF_ATTR_ask_pait_attrs_m_file 同样町以这样用。注意:在执行该函数时会自动分配内存.使用完后,要求用UF.free ()释放内存.F 一个隨数

20、同样如此。例如:nitUF_ATTR_part_aru_p_tnum; attr;此函数只能输入部件标识,读収文件的属性UF_ATTR_ask_pan_attrs(paitTag, &num, &attr);for (int 1 = 0; i < num; +i)/属性值也可以用attri.string_value得到cout« attri.title «« attii.valuc.value.stimg «endl;UF_fiee(attr);(2) UF_ATTR_ask_part_attrs_in_file ()功能:输入部件

21、的全路径名,得到部件属性的个数及属性值。这个函数不用将部件拔 入到UG中就可以读取部件的所有屈性值。苴语法格式如下:extern int UF_ATTR_ask_part_attrs_m_file ( const char*pan_name,int*n_attributes.UF_ATTR_part_attr_p_t* attributes );参数描述如表98所示。表 9-8 UF_ATTR_ask_part.attrs_in.file 的参数描述类型$臥输入输岀描述const char*part naine输入部件全路径名int*n attiibutes输出该部件屈性项的个数UF_ATTR

22、_pan_attr_p_t*attributes输出type成员保存屈性项标起. value保”屈性值(3) UF_ATTR_cycle ()功能:输入一个指定部件标识或者对象标识,同时输入一种属性类型,遍历这种类型 的所有属性,获得属性值。语法格式如卜:extern int UF_ATTR_cycle (tag_tobject,int*mdx.lilttype.chai*title.UF_ATTR_valujp_tvalue);参数描述如衣99所示。表9-9 UF_ATTR_cycle的参数描述类型参数输入输岀描述tag tobject输入部件或对象标识int*indx输入/输出输入时的状态

23、:0=开始遍历输出是的状态20=遍历完成:1=下一个屈性项被返冋mttype输入指定遍历部件的屈性类型charstitle输出JK性标题UF_ATTR_value_p_tvalue输入/输出输入时是遍历的凰性值的类型: 输出时是指定类型的屈性值注意:如來"typT是UF_ATTR_stnng或UF_ATTR_iefwng 则必须主动地给返回的 字符串分配内存。如果”type”是UF_ATTR_any,返冋类熨是上面两种,则返冋的字符审会 彼自动地动态分配内存,所以必须调用函数UF.free ()来释放内存。例如:int uidex 0;char titleUF_ATTR_MAX_TI

24、TLE_LEN + 1 ;UF_ATTR_value_t value 1;value 1 .value.stimg new chaiUF_ATTR_MAX_STRING_LEN + 1; UF_ATTR_cycle(objl &index, UF_ATTR_any, title, &value 1);while (index)cout«title «« value!.value.strmg «endl;UF_ATTR_cycle(obj 1, &index, UF_ATTR_any, title, &value 1);de

25、lete valuel.value.stimg;(4) UF_ATTR_read_value ()功能:通过输入指定的部件标识、属性类型和标题,得到它的属性值语法格式如卜:extern int UF_ATTR_read_value (tag_tobject.char*title.mttype.UF ATTR value p tvalue);参数描述如9-10所示。表9-10 UF_ATTReacLvalue的参数描述类型参数输入输出描述tag tobject输入部件或对象标识char*title输入要査询的屈性标题inttype输入要貢询的屈性类盘UF_ATTR_value_p_tvalue输

26、入/输出输入时是査询的类型: 输出时是相应的屈牲值注意:与函数UF_ATTR_cycle 样,分配和释放内存。*9.3.3加性的删除删除属性使用函数 UF.ATTR.delete ()和 UF.ATTR.dekte.all ()。 (1) UF_ATTR_delete ()功能:指定部件或对象、属性类粮和属性标题,删除这个属性。 语法格式如卜:extern int UF ATTR delete (tag t object,int type,char* title);参数描述如表9J1所示。表9-11 UF_ATTR.de lete的参数描述类型输入输岀描述tag tobject输入部件或对彖标

27、识inttype输入需删除屈性的屈性类型cliar*title输入需删除屈性的属性标腔例如:chai title 1 UF_ATTR_MAX_TITLE_LEN + 1 ”WEIGHT”;UF_ATTR_delete(obj 1, UF_ATTR_reak title 1); UF_PART_save();(2) UF_ATTR_delete_aU ()功能:指定部件或对象及输入类型.删除它所对应的所勺属性。语法格式如卜:extern int UF_ATTR_delete_all (tag_t object.mt type);参数描述如衣9-12所示。表 9-12 UF_ATTR.de let

28、e.a II 的参数描述类型参数输入输岀描述g&Jobject输入部件或对彖标i只inttype输入需删除的屈性类住9.4程序实例本节结介前面讲解的函数,举一个实例说明这些函数的应用。该实例的内容是:(1)在E盘卜建立一个名为a.pn的文件,并通过造空创建一个block.如图9-1所示。 在UG中对部件定义属性,属性标题提供者,属性値小壬,如图9-2所示。选择block特征, 定义特征的属性见表9J3,如图9-3所示。t Re> D MH入匚 崎m IM© 也 aao MWO) Wiyfl® 书)Qd -*«kfcHd u 7 i x c y .r

29、r < o > rr -鼻。?匸 UO *上,处BQP + Jre/jc. 国勿 /hi 图9-1创建blocki . :、:Mn<?W 0: r 3 7 U _ 二; :、.;、 r r0Mwll«« s: 二:0 : 2“ : d 一/dedu“Ar2(->0c<A!5aHsHcr / " y Vo C 00 0, *ltelalul0lgll<ldcI表9-13特征属性届性标题序号名称规格材料重呈说明属性值1块20*20*20铜0.1GB1002类型整数字符串字符串字符串实数字符申10值311供*小王4ZA 押却文冲O 5

30、T4»n(YiKtt吸J 换帧图9-2部件屈性9 MOOC0.10300C 块GB1CO2|吸 feffl 取榜#图9-3対彖屈性本例是一个可执行外部程序(.exe)o首先在VC+上创建一个丁程。 对属性对象进行查询; 查找block特征对象上所有属性的个数; 查找标题为“提供者”的部件属性; 分别用两个函数读取部件属性; 读取特征对象类型为字符串的所有属性 读取特征对象属性标题为“名称”的属性值(2)通过程序创建与删除: 为block特征对象创建属性标题为“NUM",类型为整数,厲性值为1的厲性; 删除block特征对象属性标題为“重量”的属性修改什么属性; 删除所有bl

31、ock特征对象的整數型属性。实例代码如卜所示: #include <iostieam> include <uf.li> include <uf_pan.h> include#include <ufLiH.h> include <uf_obj.li>using namespace std;mt niarnQmtliltCSumgtag_ttag_ttag_tUF_PARTJoad_status_tnRetCode = 0;rcode;panName - "e:a.pn" 此处为创建block的全路径名 partTag

32、 = NULL_TAG;attrTag = NULL.TAG;objl = NULL.TAG;enoi_stanis;/ uutialize UG and prmt and error on failure rcode = UF_uutialize();if (rcode)/ TODO: change erioi code to suit voui needscerr « _T(fTatal Error: UG initialization foiled") « endl; nRetCode = 1;else/ TODO: code your applicatio

33、irs behavior here 把部件载入内存UF_PART_open-quiet(chai *)(LPCTSTR) paitName,& partTag,& error.status);得到对彖标识UF_OBJ_cyck_objs_in_part( panTag. UF_featuie_tvpe, &objl );使用这个函数把部件做为工作部件 UF_PART_set_display_pan(partTag);/*UF_ATTR_ask_part_attribute(&attFTag);cout« attiTag « endl;*/”*

34、”*”*”*卄*“* 属件 的査找卄* ”*”*”*”/ /*(1) int count;UF_ATTR_counCattnbutes(obj 1, UF_ATTR_any、&count);cout« count« endl; */(2) int type;chai title 1 UF_ATTR_MAX_STRE<G_LEN + 1- ”提供者”; UF_ATTR_fiiid_attiibute(partTag, UF_ATTR_strmg. title L &type); if (type)cout « "Found!"

35、; vv type « endl;elsecout « "Not Found ?n « endl; */*(!)num;13UF_ATTR_part_am_p_t attr;此函数只能输入部件标Ub W取部件的属性UF_ATTR_ask_pait_attis(paitTag, &duiil &attr);for (int 1 = 0; i < num;卄i)cout « attri.title « H=M « attri.value.value.string «endl; 属性值也可 以用 atti i .stiing_value 得到/*(2)UF_free(attr); /mtnum;UF_ATTR_part_attr_p_t attr; UF_ATTR_ask_pait_attrs_m_file(paiiNaine,&atu);for (mt i - 0; i < num; +i)cout« attri.title « H-f « attri.strmg_value « endl;UF_free(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论