UG二次开发.doc_第1页
UG二次开发.doc_第2页
UG二次开发.doc_第3页
UG二次开发.doc_第4页
UG二次开发.doc_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

Windows平台上UG的二次开发 南京欧奔软件技术有限公司摘要 通过在基于Windows NT平台的UGII(V16.0)中建立对话框、设置和读取对话框中各对象值、激活对话框和执行代码的编写,介绍了开发UGII内部应用程序的基本步骤,并指出了用UG/Open API编程时的注意点。 关键词 UGII;内部应用程序;二次开发;中图分类号: TP391.7 文献标识码:A UGII作为机械领域的高档三维CAD/CAM/CAE软件,因其所具备的工程实用能力和良好的售后服务、技术支持,在国内正拥有越来越多的用户。在为企业提供服务的过程中发现,企业在使用该软件一段时间后,都会提出二次开发的要求,希望通过进一步的开发使UGII能更好地适应本企业的要求,从而进一步提高设计效率,减少使用UGII过程中技术人员的重复操作。所以本文就如何在以Windows NT为操作系统的微机工作站上进行基于VC+6.0的UGII(V16.0)二次开发进行介绍。 UGII的二次开发程序有二种执行方式,可以是在UGII内部运行的程序和在UGII外部运行的程序,内部程序和外部程序开发方法基本相同,只是程序入口和某些API函数不一样,考虑到用户一般都希望所开发的程序能在UGII环境下运行,所以这里主要介绍UGII内部应用程序的开发方法1-2。对UGII内部应用程序的开发主要分为四个部分:环境变量的设置;对话框的建立与激活;对话框对象数据设置和读取; 执行代码的编写。 1 环境变量的设置 1.1 首先确保已购买了相应的UG二次开发许可证和执行许可证。 1. 1.2 设置UGII中的环境变量 设定UGII启动时所读取的用户文件目录有两种方法:可通过在UG_env.dat中指定UG_USER_DIR或UG_SITE_DIR或UG_VENDOR_DIR,如c:UGS160UGmy_development;可以在操作系统的环境变量中指定,如UG_VENDOR_DIR=:UGS160UGmy_development。在该目录下建立startup和application子目录以放置用户菜单、对话框和动态连接库; 1.3 设置VC+6.0环境 建立一个空的DLL文件 FilenewProjectsWin32 Dynamic-Link Library输入Project NameAn empty DLL ProjectOK; 设置编译和连接选项 ProjectSettingsC/C+Category:Code Generation;Use run-time library:Mutli threaded DLL; ProjectSettingsLinkObject/library modules增加UG的二个库文件:libufun.lib、libugopenint.lib; 设置Include路径和库文件路径 ToolsOptionsDirectoriesShow directories forInclude files:c:UGS160UGugopen; ToolsOptionsShow directories forLibrary files:c:UGS160ugopen; 2 对话框的建立与激活 二次开发中的一个重要部分就是建立对话框,并在对话框与程序之间进行参数的传递,由于UG/Open UIStyler所创建的对话框与UG系统本身的对话框风格一致,所以一般用它来创建对话框。 2.1 对话框的建立 启动UGApplication激活User interface Styler,建立对话框。 在保存对话框时,UGII自动生成三个文件: Variable.h:含有指向对话框每个对象的ID。 Variable _template.c:包含了用MenuScript或UG/Open API集成对话框到内部应用程序的框架; Variable dlg:是菜单脚本所规定的动作与API中激活UF_MB_add_styler_actions 的桥梁。 将对话框头文件和模板文件加入到project中,添加所需要的执行代码进行编译,并将所生成的DLL和 MENU文件存放到startup目录下,将*.dlg文件存放到application目录下。 2.2 对话框的激活 对于内部应用程序而言,对话框可通过三种方式被激活,其调用方式和入口函数如下: (1)由菜单调用: void ufsta (char param, int *retcode, int rlen) 函数体? (2)从其它Callback函数调用: int 函数名( int *response ) 函数体? (3)从UG的FileExecute UG/Open User Function调用该dll文件,激活对话框: void 函数名 (char *param, int *retcode, int rlen) 函数体 对第1种方式系统使用int UF_MB_add_styler_actions (UF_MB_styler_actions_p_t actions )显示对话框;对于第2、3种方式时,系统调用intUF_STYLER_create_dialog (char*dialog_file, UF_STYLER_callback_info_t * cbs, int number_of_cbs, void * client_data,int * response )建立对话框; 三种不同的调用方式所产生的结果也稍有不同。第1、2种方式,UGII启动时与对话框相关的DLL、menu文件就被同时载入,*.dlg文件则在使用时才被载入;第3种方式,DLL文件和*.dlg在系统调用DLL文件时被载入,所以对话框激活时的各对象初值会有所不同,这在编程时应加以注意。 如果用来建立该对话框的函数名是自已给定的(上述的第2、3种方式),则应在相应的头文件中加以申明。对于从菜单调用的应编写菜单文件,以men为后缀存放到startup目录下面。例: VERSION 120 EDIT UG_GATEWAY_MAIN_MENUBAR /编辑UGII主菜单条 AFTER UG_TOOLBOX /给定增加菜单的位置,可根据情况规定 CASCADE_BUTTON CUSTOM /给出下拉菜单 LABEL CUSTOM? /给出下拉菜单标签名 END_OF_AFTER MENU CUSTOM /给出菜单项标签 BUTTON C_PICTURE_BTN /在下拉菜单中增加菜单项 LABEL Variable Transfer /给出菜单项名称 ACTIONS Variable.dlg /规定选中菜单项时所执行的动作 END_OF_MENU 图1 UGII中插入的菜单 3 对话框对象的数据设置和读取 了解对话框中对象(Object)的数据结构可以清楚地实现对话框中对象与程序间数据的传递。在UG中所有对话框中的对象(Object)都具有相同的数据结构: typedef struct UF_STYLER_item_value_type_s int reason; char *item_id;/指出与API程序当前关联的对象名称 int subitem_index; int count;int item_attr; /指出与API程序当前关联的对象属性 int indicator; unionchar *string; char *strings; int integer; int *integers; double real;? double *reals;? UF_UI_selection_p_t *selection; value; UF_STYLER_item_value_type_t, *UF_STYLER_item_value_type_p_t; 其中item_id和 item_attr最为重要的,每次对对象的操作都必须首先指定它。下例介绍了如何设定图1对话框中对象Option: UF_STYLER_item_value_type_t data; /建立一个对象 data.item_id= DIALOG_OPTION_1? ; /指定该对象的ID(可以在头文件中查到) data.item_attr = UF_STYLER_SUBITEM_VALUES; /指定该对象的属性 data.count=number_of_exps; /指定加入的表达式数目 data.value.strings = point; /传递表达式字符串指针数组的地址给该对象 UF_STYLER_set_value(dialog_id,&data); /对该对象按上述要求进行设定。 同样,读取对象的值时只需按要求设定好ID和ATTR等各项后,使用UF_STYLER_ask_value(dialog_id,&data)可读取该对象的值,如果一次希望读取多个对象的值,则用 int UF_STYLER_ask_values (int dialog_id, int num_values, UF_STYLER_item_value_type_p_t values, int * count )。当然不同Object所要设定的项和读取结果不一样,具体可查阅UIObject Reference。 4 执行代码的编写 在实现与对话框的交互后,就涉及到程序对所获取数据的处理,这主要通过调用UG/Open API中的函数实现,取决于用户对API函数的熟练程度。UGII要求二次开发程序的每个函数执行部分都放在UF_initialize()和UF_terminate()之间,例如对用菜单来激活对话框的入口函数: void ufsta (char *param, int *retcode, int rlen)variable declarations; if(UF_initialize()!=0) / 初始化UG/Open API环境和分配一个UG/Open API执行许可 return; Function body UF_terminate();/释放UG/Open API执行许可 Return? ; 对话框和UG/Open API中需要用到大量的指针,所以在编写代码时对不用的资源应特别注意通过相应的函数及时释放,否则当对话框增多或操作步骤较多时,极易造成系统的不稳定。5 结 论 UGII软件本身提供了良好的二次开发功能,为用户进行适合特定要求的二次开发提供了丰富的工具。包括从编辑菜单、建立对话框到抽取或给定部件中对象、特征、装配信息的函数,只要充分运用UGII的现有功能,完全可以实现用户的各种特定要求。UG中约束的分类与应用 南京欧奔软件技术有限公司 摘要通过介绍UGII中约束的种类,指出设计过程中建立正确的约束关系是设计人员准确表达设计意图的前提。从便于理解和应用的角度将UGII中的约束分为零件层次的约束和部件层次的约束,描述了这二个层次约束的具体内容和作用,并通过实例加以说明。 关键词 UGII; 约束; 分类;应用 中图分类号: TP391.7 文献标识码:A 1 前 言 CAD系统要求设计人员对自身设计意图和思维过程的准确表达,从而达到提高设计效率的目的1-2。UGII作为机械行业高档三维CAD软件在我国正拥有越来越多的用户,利用UGII设计时所操作的对象一般是产品的功能要素,使得约束的运用直接体现了设计人员的设计意图3。因此,本文从便于使用的角度对UGII中的约束进行了分类,并通过实例加以说明,以期对正确建模有所帮助。2 约 束 在UGII系统中,约束可分为零件层次的约束和部件层次的约束。零件层次的约束关系描述了零件的设计约束,部件层次的约束规定了在产品部件级的设计约束。2.1 零件层次的约束 根据约束对象的不同,约束可以分为针对基本几何元素的约束和针对特征的约束。2.1.1基本几何元素的约束 这类约束以基本几何元素即点、线、圆为作用对象,它反映了几何元素之间形状和位置的制约关系,可分为几何约束和尺寸约束。几何约束指基本几何元素间的几何特性,如垂直、平行、相切等,其在图上一般是不可见的;尺寸约束指基本几何元素的大小(如线长、半径、角度等)和相互关系(如两点间距离),以尺寸标注方式加以显示。上述这两种约束主要用于精确控制UGII中Sketch的大小及其几何关系。2.1.2 特征的约束 针对特征的约束是基于特征的参数定义工作的,以特征的存在为前提,用来表达特征的形状、位置、工程语义和特征在零件模型中的含义和行为。特征、参数和约束构成了约束网的三个基本要素。鉴于三维约束的特点,可对UGII中特征的约束进行高层抽象,分为特征内约束、特征间约束。2.1.2.1 特征内约束 特征内约束给出该特征的属性和表现形式,包括几何形状的表示和相关的处理机制以及特征的高层语义信息,常称为定形约束。同一特征的约束在零件模型中是多种表示形式共存的,而这些表示形式之间具有相应的转换关系,它们之间的联系通过与它们相关的特征之间的指针来实现。2.1.2.2 特征间约束 特征间约束用来定义特征的相对位置、指向、参数间依存关系,包括特征的定位约束和依存约束。一个特征在零件中的位置总是相对于其主特征的(第一个特征除外),表示主子特征间相对位置关系的约束称为定位约束;对于一对主子特征,如果主特征的删除将使子特征失去存在的意义,则称该子特征对这个主特征存在依存约束。特征间的关联有可能出现某一特征同时与两个或两个以上的主特征发生约束关系。2.2 部件层次的约束 部件层次的约束是装配件内各组件间的约束,它反映组件间的约束关系,是建立产品装配模型的关键,包括装配约束、表达式约束以及WAVE技术中的约束。2.2.1 装配约束 装配约束从总体上体现了产品的功能,而且约束下层零件的结构设计。通过对UGII中实际装配体设计的考察,可以将其概括成3类基本的约束,并以其中的“贴合”最为常用。(1) 贴合贴合用于在两组件的表面间建立贴合约束。对于平面型表面,其配对结果是共面且法向相反;对于锥型表面,如果两个表面的锥半角相等,贴合结果是它们重合;对于环型表面,如果两个表面的内外直径相等,贴合结果是它们重合。(2) 对准对准用于在两组件的表面之间、边之间或点之间建立对准约束。面对准约束使两个表面相邻,且所选面的法向保持一致。对于平面型对象,面对准结果是共面并相邻,面的法向一致;对于轴对称对象,面对准结果是轴重合(不要求所选择表面的半径相等);边对准结果使两组件的两条边重合在同一直线上;点对准结果使两组件上的两个点重合。(3) 方向方向用于在两组件的表面或边之间建立方向约束。它根据已有的贴合或对准约束所给定的旋转轴,通过给出两组件的方向矢量和角度旋转组件,确定两组件间的方向关系。对于平面型对象,系统通过投影所选面的法向到垂直于旋转轴的面上作为该组件的方向矢量;对于轴对称对象,系统通过从旋转轴到所选取面的旋转轴画出一个方向矢量作为该组件的方向矢量;对于边对象,系统从旋转轴到所选择的边画出一个方向矢量。(4)关于欠约束和过约束通常欠约束不会出现问题,但当某个组件被修改或者替换后,有时会导致组件位置发生改变,因此应尽量使所有组件处于完全约束状态;有时为了确定组件间的装配关系,对于没有自由度的“被配对”组件仍需要添加约束。如图1a所示,在给出两对柱面对准约束后,“被配对”件已完全约束,但其装配关系仍未确定,存在图1b的两种装配可能性,这时就需要再增加装配约束以便唯一确定它。装配约束相对于“固定”位置的组件放置“被配对”件,并建立相互间位置约束。编辑和移动“固定”组件时,“被配对”组件将根据装配约束进行移动;可以通过编辑约束来改变“被配对”组件的位置;通过移动装配内的“固定”组件检查装配件的约束是否完全。图1 完全约束组件的不确定装配方式2.2.2 表达式约束 部件间表达式用于在不同组件的特征间建立尺寸约束,有重载表达式和引用表达式两种。重载表达式建立装配中组件之间的约束;引用表达式在组件用于引用装配文件中或其它组件中的表达式。这样,装配件或组件中参数值的改变影响其它组件模型的更新。【例】在装配assm中有A、B两组件。其中A为“固定”组件,建立A的孔与B的插销间装配约束,并使A的孔径由B的插销直径决定。(1)建立装配约束:建立图2a的三种约束后,B组合被完全约束;(2)建立表达式约束:重载表达式:A:hol_dia=B:pin_dia+tol ;在A中建立引用表达式:hol_dia=B:pin_dia ,这样B组件pin_dia或装配中tol的改变,将使A:hol_dia自动更新。图2 A、B组件间的装配约束2.2.3 WAVE技术 参数化造型使同一零件的特征间相关成为可能,WAVE技术则将这个概念延伸到在不同组件间,把设计更改贯穿到整个产品的设计过程中,适用于已积累了丰富经验的产品设计。通过将设计知识表达为产品的控制结构,用关键设计参数影响产品的控制结构,最终实现控制模型和装配的更改。 控制结构是一个含有基本几何体的装配,它构成了产品的轮廓。主要包括基准,草图、曲线,面、片体,用来控制各主要组件的位置和形状和组件间接触面。其上层几何体与下层几何体已建立了关联,并包含控制下层几何体的信息。当上层参数更改时,下层几何体的位置、大小等参数也因上层参数的更改而更新,从而实现自顶而下的控制;最后根据其最底层的种子组件完成实际组件的设计,并自下而上地完成产品的装配,从而实现自顶向下的设计。 ? 3 总 结 约束是CAD系统捕获设计人员设计意图的重要途径,将约束分为零件和部件层次的约束有助于对约束的正确理解和运用,使设计人员在更高层次上认识和运用UGII中的约束,也是设计人员充分发挥三维CAD系统设计优势的前提和保证。从设计的最初阶段就注意建立起符合设计意图的约束是以后模型能高效正确变更的重要保证,也为模型在CAM、CAE、CAPP方面的应用创造了条件。UG中标准件库的建立 南京欧奔软件技术有限公司 摘要介绍了UGII中建立标准件的一般原则和UGII (V16.0)中常用的建立标准件库的方法,对使用用户自定义特征、表达式、零件族和程序建立标准件库的方法进行了详细介绍,同时给出了这几种方法的适用场合和使用时的注意事项。 关键词标准件;用户自定义特征;表达式;零件族;程序开发 中图分类号:TP391.7 文献标识码:A 机械产品的开发过程中会用到大量的通用件、标准件、相似件、借用件,如何方便地建立这些常用零部件的图库,利用已有的资源,花费较少的时间完成产品设计一直是用户所关心的。CAD/CAM的高档三维软件UGII系统中的用户自定义特征、电子表格、零件族和程序等工具可以针对不同情况,实现这种方便。下面就具体的建库原则、方法及其适用范围进行介绍。1 标准件库的建立原则 (1)在具体运用各种方法建立标准件库时,一般都要设置相应的环境变量;(2)标准件应该是参数化的,并且特征数尽量少,以降低模型的复杂程度和能根据要求进行更改,减少更改时可能出现的问题;(3)标准件中可能在同系列其它标准件中被抑制的特征,不应用来建立和定位其它特征;(4)标准件的对称中心应与坐标系(工作坐标和绝对坐标)重合,从而使标准件易于装配,同时应为标准件建立实体引用集,使装配中的标准件只显示出实体部分; 2 标准件库的建立方法 2.1 用UDF建立标准件库 1. (1) 在UGIIug_env.dat中指定UGII_DEFAULTS_FILE=$UGII_BASE_DIRugiiug_metric.def; 或者在操作系统的环境变量中给出UGII_DEFAULTS_FILE的值,指定UGII使用ug_metric.def文件;(2)在ug_metric.def中给出UDF库定义文件的路径和文件名,如:Solids_UdfLibraryFile: c:userslibrary_dir.txt; UDF库定义文件是一个后缀为.txt的文本文件,其中的每一行定义了:Library name; library directory; (3)根据库定义文件中的信息建立相应的目录;(4)创建一个标准件:FIleNew标准件名;ApplicationModeling;(5)导出特征为UDF:FileExportUDF(注意选择根特征,并包括所有子特征);在每个库目录里也会产生一个相应的library_dir.txt文件,其每一行分别说明了:UDF name;UDF directory及part name;UDF directory? and CGM name; (6)UDF的调用:InsertForm? FeatureUDF;(7) UDF的修改:Edit Feature Parameters选择该UDF,也可以展开为一系列的特征进行修改;图1 导入GB1096-79普通平键时的对话框 使用UDF创建标准件库可方便地定义变量名称,设置缺省值等,但由于UDF是作为特征存在的,所以必须先建立一个part文件,才能加入UDF;对于较简单的标准件可以通过设定导出UDF时的Input? Parameters对各参数的取值进行控制。2.2 用表达式建立标准件库 1. (1)建立标准件:FileNew标准件名;ApplicationModeling; 2. (2)根据该系列标准件中所用到的各参数,在ToolsExpression中输入表达式; 3. (3)分析该系列标准件特点,对值需要改变的参数加上前缀,如“input_”; 4. (4)建立模型,保存该标准件; (5)标准件的调用:由于是作为一个零件保存的,所以可直接作为组件加入到装配中;(6)标准件的修改:将该标准件变为工作部件,进入ToolsExpression,利用过滤器进行过滤,只使input_*的表达式显示出来,进行修改并另名保存便生成一个新的标准件。图2 用表达式建立的GB/T2150-91 M12连接螺母 使用UDF和表达式建立标准件库都需要查找手册修改相应参数的值。但如果将上述的两种方法结合起来,则可以使简单标准件不需要查手册。其方法是用UDF建立标准件,并使用表达式和适当的判断语句控制相关参数的值。如上面的M12螺母,在UDF中只使用具有标志性的参数如螺纹孔孔径,其它参数值通过使用if.else.,根据建立该标准件时标志性参数的值加以设定。但如使用了Suppress by Expression对某些特征进行了抑制,则在导入后该特征不会根据表达式值进行更新,必须使模型抑制再不抑制才能得到正确的显示结果,这一点需要注意。2.3 用零件族建立标准件库 (1)设置零件族成员的存放和查找目录: FileOptionSave Options/ Load Options。(2)选择模板 模板应能表达零件族成员的所有可能情况,因此,应该对该零件族中特征最多最复杂的零件进行分析,参考同系列的其它零件补充所缺特征和相关的表达式,使模板最终能够通过改变表达式的值和抑制特征来表达该零件族的全部成员。(3)模板的三维造型 首先通过ToolsExpression输入模板所用到的全部表达式,并赋以适当值,表达式中应充分利用该系列零件参数表中的各参数名,以便于以后对该零件族的修改;模板中特征的定位尺寸应作适当变换以全部相对于用作定位基准的特征;模板中各特征的放置面和穿透面应使用所有成员中都存在且固定的面或基准面,避免因放置面和穿透面所在的特征抑制而导致的不正确的抑制。 (4)零件族建立 导入表达式到Excel建立族表,对成员中不存在的特征,即族的参数表中为空的,可以通过将用表达式抑制选项所产生的参数值置0以抑制该特征,并将与该特征相关的参数(如定位尺寸等)值置为0进行处理,检验并保存符合要求的族表到模板中。(5)零件族成员的修改 零件族成员可以加入到装配中,但对零件族成员的修改只能在模板中进行,另外一种办法是对成员进行另名保存,这样该成员就成为一个独立的零件,而不再是零件族成员了,可以象操作零件一样对它进行操作。a 与前盖结合面 b 与后盖结合面 图3 用零件族建立的组合机床主轴箱体(T0711-11)系列零件的模板 使用零件族建立标准件时,标准件的相关参数放在数据库中,所以可以用来建立较复杂和规格非常多的标准件。缺点是所要求的建模技巧高,建模之前要仔细分析同系列标准件的特点。2.4 用程序写标准件库 通过分析同系列标准件的特点,使用UG/Open写标准件库是一般商用标准件库的建方法,这种方法建立的标准件库常通过UG/Menu、UG/User Tools或FileExecute UG/Open来执行。其优点是利于控制模型的生成和建立专用CAD系统,利于对库加密,占用磁盘空间小,但需要熟悉程序语言,还需要购买相应的开发模块和运行许可证,对人员素质要求也最高,特别是刚开始写程序时,需要花费相当多的精力。 3 结束语 标准件库的建立可以明显减轻用户设计过程中的重复劳动,并为技术人员进行准确快速的设计提供保障。用户可以根据实际需要综合运用这几种方法建立自己的标准件库,但同时也对用户对UGII中的建模方法和对全参数化设计的理解提出了更高的要求。所以,应在充分熟悉UGII的基础上,才能建立符合要求的标准件库。UG二次开发中特征识别和设定 南京欧奔软件技术有限公司摘要 对UGII中特征进行了分类,将用于描述几何形状信息的形状特征作为最重要的特征和其它特征信息的载体,介绍了基于UGII的专用CAD系统开发过程中形状特征信息的识别和其它非形状特征信息的添加方法。 关键词 UGII;特征识别;特征设定 中图分类号:TP399 文献标识码:A UGII作为机械领域基于特征的高档三维CAD软件,因其所具备的工程实用能力和良好的售后服务、技术支持,在国内正拥有越来越多的用户。在为企业提供服务的过程中发现,企业在使用该软件一段时间后,都会提出二次开发的要求,希望通过建立基于UGII的专用CAD系统,进一步提高设计效率。为了建立专用CAD系统,首先必须实现对用UGII所设计零件的相关信息的提取和存贮,所以本文在对UGII中特征进行分析的基础上,结合自身的开发经验,介绍了对UGII零件中形状特征的识别和非形状特征的设定方法。 1UGII中的形状特征 形状特征通常是指某一领域,具有特定意义的可表达的实体或抽象体。UGII作为基于特征的三维CAD软件,能够提供产品定义的高层描述,使产品设计在更高层次上进行,设计人员的操作对象是产品的功能要素即形状特征(如孔、键槽等),设计完成后的零件数据库中不仅包含几何与拓扑信息,还可以包含产品总体信息、结构信息和尺寸公差信息等,UGII中的形状特征如图1所示。图1 UGII中形状特征 二次开发过程中,形状特征描述了一定工程意义,是产品信息模型中最主要的特征,可以作为其它特征信息(如:精度特征、材料特征、技术特征、管理特征等)的载体。下面着重介绍对UGII所设计零件中形状特征的识别方法和其它特征信息的添加方法。2形状特征的识别 在UGII中,零件模型中的特征是有序的,它们一一对应于涉及零件形体改变的每一步特征操作,系统根据操作的先后给出特征间的父子关系,并对零件中的所有特征给以唯一编号,此编号被称为特征码(FID)。在特征内,它的每一个显示构成面都有唯一的标识自身的编码(SID);每一条边也有一个唯一的编码(EID),因而用一个二元组(FID,SID)或三元组(FID,SID,EID)就唯一确定零件中的每一个面和边。零件的几何模型是通过边和面显示的,这样对几何模型中的任一对象都可以用这种方法加以描述。如图2所示模型:在长方体上建立了一个简单孔,并对孔进行倒角,图2a示意各构成面的SID,其中箭头所指边Edge (ID:171)的依存关系可以描述为图2b。a 构成面的SID号 b Edge(ID:171)的依存关系 图2 模型中面的ID号和对象Edge(ID:171)依存关系示意 基于以上分析,作如下假定:零件的几何模型是由形状特征来定义和构造的,几何模型中所有的对象都属于一个或几个特征。因而,特征识别可叙述为:人机交互或利用规则选择操作对象确定该对象所属形状特征读取与该形状特征相关的其它特征信息和父子形状特征存入数据库供应用系统使用。二次开发过程中常用如下的函数进行形状特征识别:int UF_MODL_ask_edge_feats (tag_t edge_obj_id, uf_list_p_t * feature_list ); /通过输入边的ID号,读出指向与该边相关的特征列表的指针; int UF_MODL_ask_face_feats (tag_t face_obj_id, uf_list_p_t * feature_list ); /通过输入面的ID号,读出指向该面所属的特征列表的指针, int UF_MODL_ask_face_edges (tag_t face, uf_list_p_t * edge_list ); /通过输入面的ID号,读出指向与该面相关的边的列表的指针; int UF_MODL_ask_edge_faces (tag_t edge, uf_list_p_t * face_list ); /通过输入边的ID号,读出指向与该边相关的面的列表的指针; 二次开发中,对于需要人机交互所选择的对象ID号可通过如下函数建立对话框进行获取: int UF_UI_select_with_class_dialog (char * message, /给定提示行信息;char * title, /给定对话框的标题;int scope, /给定选择的范围;UF_UI_sel_init_fn_t sel_init_proc, /对该选择操作的初始化;void * user_data, /给定初始化时所需要的初值;int * response, /返回对该对话框的响应方式;int * count, /返回所选择的对象的个数;tag_p_t * object );/返回指向所选择的对象的ID列表的指针;使用后要用UF_free()释放; 由于在二次开发中需要用到大量的指针,开发人员应特别注意及时释放内存空间,否则在使用时将随着操作步骤的增加,导致系统不稳定。3非形状特征信息的设定 精度特征、技术特征等常是针对零件的具体面而言的,所以应将其加入到形状特征的面上;而材料特征、管理特征是针对该零件的整体而言的,应将其加入到零件中。这些非形状特征信息可通过赋属性的方法保存到零件中。在给定属性时,如果传递的TAG是对象的则给对象属性,如果是部件的TAG,则给该部件赋属性。 UGII中对部件或对象属性的操作函数都在uf_attr.h中。 int? UF_ATTR_ask_part_attribute (tag_t * attribute ); / 获得指向当前工作部件部件属性的指针; int UF_ATTR_ask_part_attrs ( const tag_t part_tag, int * n_attributes,?UF_ATTR_part_attr_p_t * attributes ); /读入某已装入部件的所有部件属性; UF_ATTR_assign (tag_t object, char * title, UF_ATTR_value_t value ); /给定对象的属性; int UF_ATTR_find_attribute (tag_t object, int type, char * title, int * title_type ); /查找给定的属性; int UF_ATTR_read_value (tag_t object, char * title, int type, UF_ATTR_value_p_t value ); /查找给定属性的值;按以上方法将非形状特征信息根据需要作为属性附加到部件或形状特征的面和边上能够满足实际开发时的需要,便于建立非形状特征与具体对象间关系,解决了具体特征信息的保存,从而实现二次开发过程中的对所需特征信息的调用。 4结 论 根据对UGII中特征的分类,将形状特征作为所有特征中最重要的特征,其它特征信息作为属性的方式添加到零件或零件模型的面和边中,符合正常的开发习惯,便于对UGII中特征的描述和对零件相关特征信息的提取和运用,以及以后知识库中知识的录入及推理的建立,因而是一种切实可行的方法。UG二次开发中定位约束孔的建立南京欧奔软件技术有限公司#include #include #include #include #include /*定义全局变量,用于转递相对定位的目标边*/tag_t target_edge;/*注册孔定位的用户函数*/int rpo_routine_hole(tag_t obj_id)int irc;uf_list_p_t edge_list;tag_t obj_id_target1,obj_id_tool1;char *constraint_value=0.0;char *constraint_array=PARA_DIST_PARMS;int target_qualifier=UF_MODL_ARC_CENTER;int tool_qualifier=UF_MODL_ARC_CENTER;UF_MODL_ask_feat_edges(obj_id, &edge_list );UF_MODL_ask_list_item(edge_list, 0, &obj_id_tool0);UF_MODL_delete_list(&edge_list);obj_id_target0 = target_edge;irc=UF_MODL_create_rpo_constraints(obj_id,NULL_TAG,NULL_TAG,obj_id_target,target_qualifier,obj_id_tool,tool_qualifier,constraint_value,constraint_array,1);return irc;static void create_hole(void)UF_FEATURE_SIGN sign = UF_NULLSIGN;double origin 3 = 0, 0, 0;char * height = 10;char * diam = 50;double direction 3 = 0, 0, 1;tag_t cyl_obj_id;uf_list_p_t face_list, edge_list;tag_t placement_face, thru_face;#if CREATE_

温馨提示

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

评论

0/150

提交评论