UG_Open API对UG二次开发技术研究
大型软件UG二次开发

§2.3 UG对象类型及操作
1. 部件对象
(1)在部件中查询对象 UF_OBJ_cycle_objs_in_part()
(2)访问部件的属性: UF_ATTR_ask_part_attrs()
(3)关闭和再打开部件 UF_PART_close()和 UF_PART_reopen()
(4)获取部件的文件名 UF_PART_ask_part_name()
uf_fltr.h——关于区域和过滤器的函数说明。 uf_gdt.h——有关几何尺寸/公差的查询函数和数 据结构。
uf_gexp.h——有关几group.h——与群组有关的操作函数说明。 uf_help.h——实现帮助功能的相关函数及数据结构 声明。
uf_layer.h——与层有关的函数声明。 uf_layout.h——与布局有关的函数声明。 uf_lib.h——与用于查找对象的库的接口声明。 uf_mb.h——查询及设置Menuscript中的对象(如按 钮等)的属性等相关函数及数结构声明。
5. 变量声明
UG/OPEN API支持所有的 C语言数据类型。 对象的标识(实体标识)应声明tag_t类型。
6. 错误号
在没有特别说明时,每一个函数或过程都返 回一个int类型的错误号。当它不为0时,表 示出错,可以调用函数UF_get_fail_message 得到相应的错误信息。
§1.2 UG/OPEN API 的应用范围
1. 版本说明
Unigraphics 16版下连接的函数库是: libufn.lib及libinternal.lib。
Unigraphics 17、18及NX版下连接的函数库是: libufun.lib及libugopenint.lib。
2. 初始化及终止
UG-NX二次开发基础-OpenAPI

22.1.1 概述
作为 UG NX 5.0 与外部应用程序之间的接口,UG/Open API 是一系列函数的集合。通过 UG/ Open API 的编程,用户几乎能够实现所有的 UG NX 5.0 功能。开发者可以通过用 C++语言编程来调 用这些函数,从而实现用户的需求。
(1)对 UG part 文件及相应模型进行操作,包括建立 UG NX 5.0 模型、查询模型对象、建立并 遍历装配体及创建工程图等。
22
CHAPTER
UG NX 5.0 二次开发基础
内容提要 ➢ UG/Open API 基础概念和语法知识 ➢ UG/Open API 常用对话框及其应用 ➢ 提示消息的发布与获取 Open/API(用户函数)是一个程序集合,使得程序员能够访问和操作 NX 对象模型。除此之外, Open/API 还提供了工具用来编辑和连接与 UG NX 5.0 风格一致的程序。UG/Open 二次开发模块是 UG NX 5.0 软件的二次开发工具集,可用于各种二次开发工作。利用该模块可对 UG NX 5.0 系统进 行用户化剪裁和开发,满足用户的开发需求。使用 UG NX 5.0 的二次开发时,用户需要具有一定的 C 语言基础。 UG/Open 包括以下几个部分。 (1)UG/Open API 开发工具:提供 UG NX 5.0 软件直接编程接口,支持 C、C++、Fortran 和 Java 等主要高级语言。 (2)UG/Open UIStyle 开发工具:是一个可视化编辑器,用于创建类似于 UG NX 5.0 的交互界面。 利用该工具,用户可为 UG/Open 应用程序开发独立于硬件平台的交互界面。 (3)UG/Open Menuscript 开发工具:对 UG NX 5.0 软件操作界面进行用户化开发,使得用户无 须编程即可对 UG NX 5.0 标准菜单进行添加、重组、剪裁或在 UG NX 5.0 中集成自己开发的软件功 能。 (4)UG/Open GRIP 开发工具:是一个类似于 APT 的 UG NX 5.0 内部开发语言,用户可利用该 工具生成 NC 自动化或自动建模等特殊应用。
UG二次开发技术的研究与应用

UG二次开发技术的研究与应用摘要UG是一款集三维CAD/CAM辅助设计、制造、分析于一体的功能强大的软件,在功能上完全能够满足机械产品的设计要求,能够为用户提供全面的产品开发解决方案,但是用户若要快捷高效的设计出针对自己特征的产品,则需要在此基础上进行二次开发。
本文主要介绍了UG的特点及其二次开发技术,并对所使用的工具作了介绍。
关键词UG;二次开发;解决方案;开发工具1 UG的特点UG作为三维造型设计系统,功能强大。
它以特征建模、参数化设计、虚拟现实及多数据接口等优点改变了传统的设计观念,减少了设计人员的工作量,使设计直观化、高效化、精确化,极大地提高了工作效率。
主要优点如下:1.1 可靠而强大的解决问题能力提供了一整套完整的动态界面,通过全面的CAD、CAE解决方案,UG能够处理极为复杂的产品开发问题。
1.2 灵活性通过UG的灵活设计能力,用户可以用智能零件技术自动完成重复设计,将约束驱动建模技术与直接建模技术相结合,当需要修改零件时,可以使用UG同步建模工具來修改由其他CAD软件创建的几何模型。
1.3 统一协调UG可以动态地查看装配体的所有运动,可以缩短产品的开发周期。
在从概念设计到制造的整个开发生命周期中,可实施并行工程,提供了界面良好的二次开发工具,用户可以借助UG应用程序,通过高级语言接口来快速传播信息和流程变更。
1.4 高效率UG为多种重用举措提供方便,具有统一的数据库,采用复合建模技术,从而提高了制造团队的生产效率。
在其设计、分析和制造流程中,UG 提供了能够生成完整的、车间认可的工程图,缩短了工程设计人员分析和加工周期的时间[1]。
2 UG二次开发对一般的设计人员来说,每次建立模型都需要从打开软件,开始草图绘制,到最后模型建立,中间烦琐的尺寸标注,特征建立,消耗了很多时间,如果模型复杂,那么建立模型所需要花费的时间使很长的,如果后期进行模型修改,很多尺寸、特征都需要更改,其花费的时间不亚于建立模型所耗费的时间。
ug二次开粗最佳方案

ug二次开粗最佳方案UG二次开发最佳方案UG软件是一款非常优秀的CAD软件,由于其强大的三维建模功能,使得其在机械设计领域中应用范围非常广泛。
但是在实际使用中,由于UG自身的限制或者是用户需求的不同,很多用户都会有二次开发的需求。
UG的二次开发需要对常规的API进行各种调用,这就要求我们有深厚的编程基础与技能,同时也需要不断摸索最佳的二次开发方案来提高效率。
本文将介绍UG二次开发的常用方案及其优缺点,以期帮助UG用户寻找最佳方案。
一、UG APIUG自带的API是非常强大的,其中封装了非常多的功能函数供我们调用。
开发者可以通过API来实现自己定制化的操作,比如实现自己的工具栏、快捷键、菜单等。
此外,UG API也可以用来扩展UG的功能,比如添加自己的工具、自动化一些重复性的操作等。
使用UG API的好处是可以充分利用UG软件自身的资源,不需要额外地去寻找其他开发工具。
但是UG API也存在一些缺点,比如我们需要深入了解UG的开发模型才能开发出高效的应用程序,而这需要花费较长时间去学习。
另外,UG API不能跨平台,只能在Windows下使用,这同样也会限制我们的二次开发范围。
二、UG NXOpenUG NXOpen是UG的一款API,它是针对NX软件的基于.NET 的程序接口。
相比于常规的UG API,NXOpen提供了更加强大、灵活的功能。
使用NXOpen可以直接访问底层UG的数据,利用NXOpen可以访问UG软件中的任意元素。
此外,还可以通过NXOpen实现各种深度定制功能,甚至可以实现对UG软件本身的修改。
仅仅对UG进行简单的修改,就可以无缝地进行网格生成、FEM分析等操作。
这在一些对时间精细度要求很高的程序中非常有效。
但是由于这种操作比较复杂,甚至会修改UG本身的数据,因此需要谨慎操作。
三、UG Open C APIUG Open C API是一个完全基于C语言的API,与NXOpen相比较,它更加底层。
[API]UG二次开发资料1
![[API]UG二次开发资料1](https://img.taocdn.com/s3/m/702bfc4a9a6648d7c1c708a1284ac850ac02047b.png)
日期:2007年 8 月
1
© UGS Corp. 2007. All rights reserved.
主要内容
¾UG/Open 开发工具 ¾UG/Open 构架 ¾二次开发应用范围 ¾头文件及说明
2
二次开发工具
¾ GRIP ¾ NX OPEN ¾ KF ¾ JA ¾ MenuScript ¾ UIStyler
Journaling
X Record in VB and C++ X Playback in VB
Common API
X .NET X C++ X UF Wrappers
NX User Interface Journaling
KF
.NET
C++
Java
API
API
API
API
Licensing
Common API
uf_std.h
提供UG与有关标准(如CGM)的接口函数声明
uf_styler.h 有关UIStyler的操作函数声明
uf_trns.h
提供对坐标、矩阵、位置及对象的转换功能(移 动、选择、镜像、缩放)的函数声明
uf_udobj.h 关于用户定义对象的函数及结构声明
uf_udop.h
关于用户定义操作的函数及结构声明
2、资源 UG Help
7
MenuScript
1、简介 主要用于制作菜单和工具栏,用户按照其语法创建 *.men文件或*.tbr文件并放在指定的目录内,UG启 动时可以自动加载。
2、资源 UG Help
8
UIStyler
1、简介 主要用于对话框的制作。在UG菜单下点击 Application-> User Interface Styler…,进入编辑界 面,UG提供了标签、输入框、按钮、图片等多种控 件,利用这些控件用户可以方便的制作出windows 风格的对话框。
UG软件二次开发工具的使用-精选文档

UG软件二次开发工具的使用UG软件是美国EDS公司开发的一套集CAD/CAM/CAE为一体的高端软件。
由于其强大的设计、分析、制造和产品数据管理的功能,国内外许多企业都将它作为首选软件。
但是UG软件与其它CAD软件一样是一个通用软件,专业针对性差,因而不能满足各种各样具体产品的设计需要,在实际的工程设计中难以达到理想的效果,几乎不能真正实现灵活高效的特点。
因而UG软件的二次开发就成为CAD技术推广应用过程中必须面对和解决的课题之一。
二次开发就是把商品化、通用化的CAD系统用户化,本地化的过程,二次开发后能大大提高设计人员的设计效率,缩短设计周期。
因此UG软件的二次开发人员必须掌握几种UG软件的开发工具及其使用方法,才能为企业开发出本地化的UG软件。
UG/Open是一系列UG开发工具的总称,是UG软件为用户或第三方开发人员提供的最主要的开发工具。
它主要由UG/OpenGR IP、UG/Open API、UG/Open MenuScrip t和 UG/ Open UISt yler 四个部分组成。
一、UG/OPEN GRIPUG/OPEN GRIP(Graphics Interactive Programming)是一种专用的图形交互编程语言。
这种语言与UG系统集成,能够实现强大的图形绘制、装配、工程图的生成和一定的文件管理功能,主要进行UG的功能调用。
GRIP程序一般是在UG平台下编制的,有独特的开发工具、编译链接过程、程序语法和文件格式,具体开发过程如下:(一)编写源程序:在UG Open GRIP环境界面中,选择Edit,用记事本创建或打开一个.grs文件,也就是GRIP源文件。
(二)编译源程序:选择Compile对源程序进行编译生成扩展名为.gri的编译文件,如果主程序中含有子程序,则两者要分别进行编译,链接时主程序自动对子程序进行链接。
(三)链接程序:选择Link将扩展名为.gri的文件链接生成可执行的GRIP文件,扩展名为.grx,这个文件就是UG可以识别的执行文件。
UG二次开发的自动装配技术

UG 二次开发的自动装配技术技术,自动,开发利用UG/OPEN API 开发具体产品的应用系统时,常常遇到如何建立零件间装配约束关系的问题。
如何实现零件间自动装配,是开发应用系统的难点之一。
1 .装配约束关系的简化 一在实际应用中,装配约束的配合类型有贴合、对准、角度、平行、正交、对中等多种类型,用于装配约束的对象类型有面、边、基准面、基准轴、点、线、曲线、 坐标系等多种形式。
为了便于数据描述,可将组件间的装配关系做了适当的简化,如图 1、2所示,该例中,将零件间的装配约束关系简化为两组件间三个基准面的贴合或对准的装配 约束类系。
其中,图 2中X,Y,Z 为对应部件中的基准面名。
%_ d 融 GSGS9-10_2- >G5GS9-4_1S* Mate - Planar->Planar 気 - Cylindrical->Planar■-融 Center_2_2 - Planar>Cylindric^lH* Center_2_2 - Plari3T'>Cylindrical图1 简化前的装配约束关系简化后的装配约束关系简化组件装配约束关系后,将主动组件的部件名、组件名与对象名,从动组件的部件名、组件名与对象名,以及装配约束类型等信息保存在ODB (数据库中。
在系统加载部件时,可根据数据库中的装配信息,实现组件的自动装配。
2 .自动装配的实现 您 Mating 匚onditions2d2£1務 Mating 匚onditions2.1 主动组件的加载使用 UF_ASSEM_add_part_to_assembly 函数即可将部件加载到装配体。
下 段程序用于加载部件的,其中, parent_tag 为父部件的部件标识 ,part_name 为加载部件的 部件名 ,inst_name 为加载部件的组件名 ,inst_tag 返回加载部件的实例标识。
6 U7 e/ y" t8 T/ p' \+ @ void UG_OPEN_add_part_to_assem(tag_t parent_tag,char *part_name,?char *inst_name,tag_t *inst_tag)double origin[3] = {0 , 0, 0};double csys_matrix[6] = {1,0,0,0, 1,0}; int layer = -1;UF_PART_load_status_t load_status; ; z0 j F$ ~' y: g& eUF_ASSEM_add_part_to_assembly(parent_tag, part_name, NULL,inst_name, origin, csys_matrix, layer, inst_tag, &load_status);if ( load_status.file_names != NULL ) ( O$ S5 x1 A- f8UF_free_string_array( load_status.n_parts, load_status.file_names );: a' C8 y: Y ]& u- |/ ['if ( load_status.statuses != NULL )UF_free(load_status.statuses ); 2. 2 主动、从动组件事例标识的获取 3 G+ e5 d# R" k6 w. z! m主动组件的事例标识可以通过 UF_ASSEM_ask_part_occ_of_inst 函数直接 获取。
UG二次开发接口技术研究

UG二次开发接口技术研究【摘要】随着社会的发展,计算机软件的竞争也越来越激烈,UG软件是大型CAD/CAM/CAE集成软件之一,功能强大,加强其二次开发接口技术研究对于其今后的发展具有重要作用。
【关键词】UG;二次开发;接口技术前言文章对UG应用研究现状进行了详细的介绍,同时通过分析,并结合自身实践经验和相关理论知识,UG二次开发接口技术进行了分析和探讨。
二、UG应用研究现状UG软件自1990年进人中国市场,经过十余年的发展,目前国内用户已近千家。
国内许多大型企业、公司均采用UG作为其产品设计生产的支撑软件。
国内外关于UG应用包括两种类型,一是直接利用UG软件进行产品的建模、分析、制造,二是在UG平台上进行二次开发。
具体应用有以下几类。
1.开发用户自定义模块进行快速建模UG现有的建模功能完全能够实现复杂零件的建模要求,快速建模的目的是提高建模速度以缩短产品的整个研制周期。
快速建模通常是针对某一复杂零件。
这类零件的特点是设计参数多,各参数满足一定的函数关系,从设计参数向结构参数转化需要复杂的数学运算。
通常的设计方法是:首先根据设计参数计算出结构参数,然后用UG软件建模。
这种方法的缺点是:模型生成速度慢且不易修改设计。
一旦调整某一设计参数,则牵一动全身,模型所有结构参数均可能改变;建模就得从头开始。
2.建立用户参数图库UG软件没有标准零件库,更没有具体行业的专用零件库,而具体行业的产品设计总是经常会用到标准件、相似件。
若每次设计对每一零件均从头开始建模,则要做许多重复性的工作。
建立用户参数图库即是把常用的标准件、结构相似件建成特征库,使用时只需输人确定参数,直接调用,提高建模速度。
3.建模与分析的用户集成UG软件本身带有建模和分析模块,若要对模型进行分析,通常先在建模模块中建立模型,然后切换到分析模块中进行分析,如果模型需要不断改变,则设计过程要在建模与分析模块之间反复切换。
并且分析过程是固定的标准过程,用户无法提取计算过程数据进行优化控制,用户的特殊要求没有途径实现。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
=
结束语
本文结合两个实例!
阐 述 利 用 9L 8 GM&1 NO= 函 数 实 现 了 对 9L 对 象 的 操 作 ! 有效地进行了对 9L 的 二 次 开 发 % 研 究 了 9L 8
,-.
创建用户化系
<L 8 GM&1 C&1#PQ/)M>
统菜单和操作界面
和 <L 8 GM&1 <=P>R%&/ 为
收稿日期 " !""#$"%$!& 作 者 简 介 " 王 磊 ! !"#$% "# 男 # 硕 士 研 究 生 # 云 南 宣 威 人 $ 主要研究方向 % &’( ) &(** ) &(+ $
D6M!+M R^ 画圆开始 ^9MS c > > 消息框 " 如图 M .JN.AN7@FN42KQ4F R^ ^S c > > 清除提示行消息
版社 d‘33,]
,-/ 建立 "0’1 23(4567( 8"2"9: 与 ;2< 的接口 "
编写程序代码
U5VWX
UWX NA&/)Q?1 JaP ObC P"%#>)"1d 91)2/?MY)Q* HZW]3 l&%M] UjX 董 正 卫 ! 等 ] 9L 8 GM&1 NO= 编 程 基 础 UCX] 北 京 g 清 华 大 学 出 版 社 d ‘33‘]
P&>>)12 !b)1cg 在 b)$/?/R A"!#%&* 栏 里 写 入 %)$#.#1]%)$ d %)$#2"M&1)1>]%)$ )
点 击 O/"f&Q> !P&>>)12 !a&$#2g 在
Jh&Q#?$%& ."/ !&$#2 *&**)"1 输入 9L 的可执行文件 #2/?.] &h&) 点 击 I""%* !GM>)"1* !a)/&Q>"/)&*g 在 # PY"_ !)/&Q>"/)&* ."/’$ 栏里选择 =1Q%#!& .)%&-在 #a)/&Q>"/)&*g$ 里添加 9LGOJH
?4@/ *’A 函 数 实 现 " 是 .8 应 用 二 次 开 发 的 重 要 工 具 &
本文主要阐述 .8 > ?4@/ *’A 对 .8 的应用开发研究 ./0 函数实现 ’( 的操作<M ,=
"
相比较 .8 > ?4@/ 8BA’" .8 > ?4@/ *’A 函数具有可 读性强 ’ 编 译 性 好 ’ 简 明 易 学 的 特 点 " 常 被 广 泛 使 用 " 其函数名称约定一般为 *.JNO32@3PNO/3Q@P RS +& .J 表
ENOO ( OaC 等 9L 环境下的集成平台 ! 可以通过本文介
绍的复杂系统开发方法来进行开发 % 参考文献 #
U5X
王明强 ]9L 二次开发中建库接口技术研究 UkX] 现 代 制 造 工 程 !
‘33jd5] U‘X 黄翔 ! 李迎光 ]9L 应用开发教程与实例精解 UCX] 北京 g 清华大学出
第 17 卷第 : 期 !""# 年 7 月
机电产品开发与创新
;@‘@HK4Q@/F i A//K‘3F0K/ KT C3650/@2G i VH@6F2063H ’2K[D6F7
3456178946: ;,+68!""#
’( ) *+,- ./0 对 ’( 二次开发技术研究
王 磊 ! 李浙昆 ! 谭 毅 ! 刘志雄
路径 *agiOBGLBNC :=bJPi9LPiHZW]3i9LGOJH+U‘X% 经过上 经上述方法完成的紧固件标准件库系统开发 ! 此系 统可在 9L 环 境 里 进 行 紧 固 件 LD 查 询 ( 参 数 输 入 ( 零 件 创 建 % 在 9L 环 境 里 由 菜 单 打 开 用 户 交 互 操 作 界 面 ! 通过对界面的操作 ! 选择所需的 LD 号 ! 或者输入参数 做特殊更改 ! 即可完成零件的 # 自动 $ 生成 % 图 ‘ 为点 击 # 创建 $ 按钮自动生成的螺栓 Cj‘Z,3% 述配置完成 9L( 9:9H 与 C:E 之间的通信% 程序示例 *略+%
常简写为 *.J.L+# 是一个允许程序访问并且修改 .8 对 象 模 型 的 程 序 集 & .8 > ?4@/ *’A 封 装 了 ,### 个 左 右 的
.8 操作函数 " 可以方便的对 .8 的图形终端 ’ 文件管理
系 统 和 数 据 进 行 操 作 " 绝 大 多 数 .8 操 作 都 可 用 .8 >
!"#
万方数据
!制造业信息化!
!"#$%& !’(!)#* + ,."/ 0%"12 ) + 3- ) 4 53- )667 8 8 设定 53 个圆 9:;<=;*&>;*>?>#* 0@ 画圆结束 @7 - 8 8 在结束操作时 ! 状
态行显示操作消息 "
ZO 为 运 行 平 台 ! 创 建 一 个 91)2/?MY)Q* HZ ^)T?/! [5 工
"#$%! &’( )*+,-*,+(. /0 )1)*(2 3+/$+42
C&1#PQ/)M 可 以 编 辑 9L
菜单脚本语言! 完成用
提供了一种新的方法% 以外部程序和数据库为支撑的
户菜单编辑加载到 9L 环境使用) 9L 8 GM&1 9=P>R%&/ 是快速 建立 9L 风格对话框 *用户界面 + 的常用工具 ! 通常用此 方法制作用户界面 ! 能方便地与 9L 数据模型进行交互操 作 % 但由于其自身控件功能的局限 ! 不能满足复杂系统的 开发 ! 本文用新的方法 ! 即 C:E NMMS)T?/! 建立用户界 面% 菜单编辑和界面制作的详细工作请查阅相关资料%
用的软件之一 & 该软件不仅具有强大的实体建模 9 曲面造 型 " 虚拟装配和生成工程图等设计功能和设计过程中的 有限元分析 ’ 机构运动分析 ’ 仿真模拟等功能 " 而且还 提供了良好的应用开发工具 " 能通过高级语言接口 " 使
.8 的操作 & 在 U:WW 开发平台上 " 采用 ./012345067 LX Y0Z32[ UM 建立 .J.L 与 CJ: 的连接 " 在 \644 文件生成
程 ! 选择 ^)1W‘ aR1?A)Q b)1c b)$/?/Rd <:<H 生 成 相 应 的 入 口 函 数 % 在 eE66\]3 做 如 下 配 置 ’ 点 击 O/"f&Q> !
<:;>&/A)1?>& 07 B&>#/1 0<:;CD;EDFEGHI=H9J7 K 当程序编译调试后 ! 运行程序即可完成对 <L 的操 作 " 点击 <L 主菜单画圆指令 ! 弹出消息提示框 ! 同时 在 <L 界 面 左 下 角 的 提 示 行 里 会 显 示 # 单 击 确 定 后 画 圆 $! 点 击 消 息 框 的 # 确 定 $ 按 钮 开 始 画 圆 % 画 圆 结 束 时 ! 状态行显示 & 画圆结束 $% 由此 ! 继续添加功能函数 即可完成复杂的 <L 操作 ! 进而开发复杂的用户化系统 %
以 <1)2/?MY)Q* HZW 和 [E66\]3 为开发平台 ! ^)1!"_*
&’( >*,.1 /0 >(-/?.4+1 @(A(</32(?* /0 BC ;1 *’( BC D E3(? FGH
!"#$ %&’ ! %( )*&+,-. ! /01 2’ ! %(3 )*’+4’5.6 !"#$%&’( )* +,$-#./$#& #.0 1&,$’2/$#& 3.4/.,,2/.45 6%.7/.4 8./9,2:/’( )* ;$/,.$, #.0 <,$-.)&)4(! 6%.7/.4 =%..#. >?@@AB5 C-/.#D F;)*+4-*I <-, E#E,2 0/:$%::,: ’-, )FG,$’ )E,2#’/). )* 8H %:/.4 ’-, *%.$’/).: )* 8H I JE,. KLMN O#:,0 ). ’-, 0,9,&)E7,.’ ,.9/2).7,.’ )* P/:%#& CQQ5 /’ $#. 7#R, ’-, 8H :,$).0#2( 0,9,&)E7,.’ ,**,$’/9,&(N <-/: E#E,2 #.#&(:,: ’-, $)..,$’/). )* /.’,2#$’/). F,’S,,. 8H I JE,. KLM #.0 T/.0)S: 0/#&)4 F)U F#:,0 ). ’-, ,.9/2).7,.’ )* 8H #.0 E2)9/0,: # .,S 7,’-)0 )* 8H :,$).0#2( 0,9,&)E7,.’ )* $%:’)7 :(:’,7N J(1 K/+.)I 8H I JE,. KLM ) ;,$).0#2( 0,9,&)E7,.’ ) 8H