UG NX5.0的工程图尺寸标识工具的开发

2013-05-18  by:广州有限元分析、培训中心-1CAE.COM  来源:仿真在线

周兆国 来源:e-works
关键字:尺寸标识工具 重要尺寸 参考尺寸 基本尺寸 UG NX5.0
本文首先阐述了工程图样尺寸标识的分类,进而为达到快速而方便的进行尺寸标识,结合UGNX5.0强大的工程图模块和完善的二次开发模块,同时运用VC++6.0为编程工具,开发出与UG软件完全融为一体的尺寸标识工具。

0 前言
    
     工程图样是现代工业生产的重要技术文件,是设计师表达设计思想,技术交流,组织生产和加工的重要文件。而在工程设计过程中,工程图中工程信息标注的工作量要占到设计工作的一半以上,因此,操作简便、完全符合国标的标注方式可以提高设计效率,受到工程师的高度重视。
    
     工程信息除包括文本或技术要求、尺寸公差、表面粗糙度、形位公差、基准符号等以外,还有经常在工程图样中出现的尺寸标识,这里的尺寸标识是指以下几类尺寸:
    
     1、重要尺寸(Important Dimension):通常用长腰形框图框标识的尺寸,此类尺寸为必检尺寸;
    
     2、参考尺寸(Referenced Dimension):用括号标识的尺寸,主要应用于以下几方面的:
    
     1)、尺寸链封闭时,在其中一个上加括号(提示此尺寸);
    
     2)、在某些不主要场合,尺寸依生产工艺条件而定时,加注参考标记;
    
     3)、局部试图为了反映某个尺寸的重要位置,可重复标注但必须加注参考标记(尺寸可带公差)。
    
     3、基本尺寸(Basic Dimension):是指设计中给定的尺寸,通常用矩形框来标识。基本尺寸是根据使用要求,通过计算、试验或按类比法确定的,现在的尺寸一般都标准化了,以减少定制刀具、量具的规格。
    
     目前市面上应用的各种工程软件(象UG NX、proe、Catia、AutoCAD等)中大多对文本或技术要求、尺寸公差、表面粗糙度、形位公差、基准符号等工程信息都作了相应的处理,而且功能都非常成熟和完善,而尺寸标识功能则被忽略或其功能操作较为不便,因此,快速方便的尺寸标识工具在工程图样设计中就起到具足轻重的作用。
    
     1 基于UG的工程图尺寸标识工具简介
    
     UG(Unigraphics)软件起源于美国麦道(MD)公司,六十年代起成为商业软件。1991年并入EDS 公司,成为世界一流的集成化机械CAD/CAE/CAM 软件,通用汽车公司是UGⅡ的最大用户(拥有2400 套UGⅡ系统)。UG 于1990 年初进入中国市场,广泛用于国内的航空航天、汽车、通用机械及模具等各个领域。
    
     UG 是一个功能强大的CAD/CAM 软件,针对于整个产品开发的全过程,从产品的概念设计直到产品建模、分析和制造过程。作为一个业界最完整的一流产品,Unigraphics 提供了全系列的工具,包括针对计算机辅助工业设计(CAID)艺术级工具,并与功能强大的CAD/CAM/CAE 解决方案紧密集成。UG 具有独特的知识驱动自动化(KDA)的功能,使产品和过程的知识能够集成在一个系统里,Unigraphics 大大提高了许多世界知名公司的生产力。
    
     基于UG的工程图尺寸标识工具是在UG强大的工程图模块和完善的二次开发模块基础上结合VC++6.0为编程工具开发出来尺寸标识工具集,是UG相关功能的一种整合和显化,主要应用于工程图中重要尺寸、参考尺寸和基本尺寸的标识和标识去除,从而使尺寸的标识更快速方便。
    
     2 尺寸标识工具的设计与实现
    
     2.1 开发与运行环境选型和设置

    
     本文选择了UG NX5.0为CAD软件平台和Visual C++ 6.0 为系统开发的编程工具,UG系统提供了具有开方式架构体系的二次开发环境UG/Open,支持对UG 资源的调用,包括UG/Open MenuScript(用户菜单)、UG/Open UIStyler(用户对话框)、UG/Open API(与UG 系统资源的直接交互接口),结合UG二次开发环境UG/Open的结构框架进行如下设置:
    
     2.1.1 工程目录结构设置
    
     建立D:\ Ug_stds\DIM_ID工程文件夹,在其下建立以下四个文件夹目录(图1):
    
     1)、startup 目录存放UG启动时需要加载的动态连接库文件(*.dll)、菜单脚本文件(*.men)和工具栏脚本文件(*.tbr);
     2)、application 目录存放尺寸标识工具的功能扩展程序文件,如UIStyler对话框文件(*.dlg),工具图标文件(*.bmp);
     3)、code 目录存放尺寸标识工具的程序源代码(该目录在新建工程时创建);
     4)、doc 目录存放尺寸标识工具的使用说明。

UG NX5.0的工程图尺寸标识工具的开发autocad design图片1


     2.1.2 设置系统环境变量
    
     在控制面板中点击系统→高级→环境变量,增加环境变量UGII_USER_DIR,使其指向
    
     D:\ Ug_stds\DIM_ID。

2.2 编写尺寸标识工具的菜单
    
     应用UG/OPEN MenuScript所提供了一套用于定义Unigraphics菜单的脚本语言,运用记事本工具按照MenuScript脚本语言语法可定义DIM.men文件,将该文件保存在D:\ Ug_stds\DIM_ID\startup文件夹中,DIM.men具体内容如下:
    
     VERSION 120
    
     EDIT UG_GATEWAY_MAIN_MENUBAR
     BEFORE UG_HELP
     CASCADE_BUTTON  DIM_ID
     LABEL 尺寸标识
     END_OF_BEFORE
    
     MENU DIM_ID
     BUTTON IMP_DIM
     LABEL 重要尺寸
     ACTIONS IMP_DIM
     END_OF_MENU
    
     MENU DIM_ID
     BUTTON REF_DIM
     LABEL 参考尺寸
     ACTIONS REF_DIM
     END_OF_MENU
    
     MENU DIM_ID
     BUTTON BASIC_DIM
     LABEL 基本尺寸
     ACTIONS BASIC_DIM
     END_OF_MENU
    
     运行UG NX后在主界面上生成的尺寸标识工具菜单如图2所示:

UG NX5.0的工程图尺寸标识工具的开发autocad design图片2


     
     2.3 建立尺寸标识工具的工具条
    
     编写工具条(Toolbar)为方便快速的使用尺寸标识工具,实现方法是制作或编写工具图标文件(BMP文件)与工具条文件,工具条是以.tbr为扩展名的文本文件。
    
     首先在application文件夹中创建工具图标文件,分别命名为basic_dim.bmp 、imp_dim.bmp和ref_dim.bmp,每个图标的标准大小为24X24(像素X像素),然后在startup文件夹中创建工具条脚本文件DIM.tbr,并输入如下代码:
    
     TITLE   尺寸标识
    
     VERSION 170
     DOCK TOP
    
     BUTTON IMP_DIM
     LABEL  重要尺寸
     BITMAP imp_dim.bmp
    
     BUTTON REF_DIM
     LABEL  参考尺寸
     BITMAP ref_dim.bmp
    
     BUTTON BASIC_DIM
     LABEL  基本尺寸
     BITMAP basic_dim.bmp
    
     运行UG NX后在主界面上生成的尺寸标识工具的工具条如图3所示:
      
     

UG NX5.0的工程图尺寸标识工具的开发autocad design图片3


     
     2.4 创建尺寸标识工具的交互接口界面
    
    
     UG/OPEN UIStyler提供了快速生成Unigraphics对话框的功能,产生的对话框可以在MenuScript文件中被调用。
    
     1)、在Unigraphics Gateway状态下,选择Start→All Applicatoins→User Interface styler…,进入UIStyler;
     2)、利用UIStyler提供的控件分别创建重要尺寸,参考尺寸和基本尺寸的对话框,设置成添加和去除尺寸标识按钮,图4所示为重要尺寸的对话框:
     

UG NX5.0的工程图尺寸标识工具的开发autocad design图片4


     
     3)、将三类尺寸标识的对话框文件(*.dlg文件)保存至applicatoin文件夹中,UIStyler针对每一个*.dlg文件自动创建对应的*.h文件和*.c文件,自动保存至applicatoin文件夹中。
    
     运行UG NX后在主界面上点击重要尺寸标识按钮时出现的对话框,如图5所示:
     

UG NX5.0的工程图尺寸标识工具的开发autocad design图片5

2.5 创建尺寸标识工具的动态链接库文件
    
     动态链接库(DLL)文件适用于对UG/OPEN API的内部模式,程序只能在Unigraphics的界面环境中运行。重要尺寸标识功能所对应的动态链接库文件(Imp_Code.dll)的创建过程如下:
    
     2.5.1 在Visual C++中使用MFC应用向导新建工程项目Imp_Code.dsw,如图6所示;
     

UG NX5.0的工程图尺寸标识工具的开发autocad design图片6


     
     2.5.2 设置UG应用开发环境
    
     1)、工程设置
    
     选择菜单命令Project→Setting,弹出Project Setting对话框,选择Link选项卡,在Output file name文本框中输入D:\Ug_stds\DIM_ID\startup\Imp_Code.dll,并在Object/library modules文本框中输入UG库文件kernel32.lib、user32.lib、gdi32.lib、winspool.lib、comdlg32.lib advapi32.lib、shell32.lib、ole32.lib、oleaut32.lib、uuid.lib、odbc32.lib、odbccp32.lib、libufun.lib、libugopenint.lib,如图7所示:

UG NX5.0的工程图尺寸标识工具的开发autocad技术图片7


     
     2)、配置路径选项
    
     选择菜单命令Tools→Option,弹出Options对话框。选择Directories选项卡,设置如图8所示:

UG NX5.0的工程图尺寸标识工具的开发autocad技术图片8


     
     2.5.3 编写消息映射代码
    
     1)、建立用户文件
    
     在VC中选择菜单命令Project→Add To Project→New,添加新文件Main.h和Main.cpp
    
     到工程中,并将这两个文件作为重要尺寸标识工具的工程主文件。添加新文件APP.h和APP.cpp到工程中,并将这两个文件作为重要尺寸标识工具的工程应用文件,如图9所示:

UG NX5.0的工程图尺寸标识工具的开发autocad技术图片9

2)、编写文件代码
    
     在新建的工程文件中添加以下代码(由于篇幅有限,这里只例举了重要尺寸标识工具的主要代码imp.cpp):
    
     #include "stdafx.h"
     #include "Main.h"
    
     /*-------------------------------------------------------------------------*/
     /*---------------------- UIStyler Callback Functions ----------------------*/
     /*-------------------------------------------------------------------------*/
    
     /* -------------------------------------------------------------------------
      * Callback Name: IMP_DIM_IMP_DIM_choose
      * This is a callback function associated with an action taken from a
      * UIStyler object.
      *
      * Input: dialog_id   -   The dialog id indicate which dialog this callback
      *                        is associated with.  The dialog id is a dynamic,
      *                        unique id and should not be stored.  It is
      *                        strictly for the use in the NX Open API:
      *                               UF_STYLER_ask_value(s)
      *                               UF_STYLER_set_value  
      *        client_data -   Client data is user defined data associated
      *                        with your dialog.  Client data may be bound
      *                        to your dialog with UF_MB_add_styler_actions
      *                        or UF_STYLER_create_dialog.                
      *        callback_data - This structure pointer contains information
      *                        specific to the UIStyler Object type that 
      *                        invoked this callback and the callback type.
      * -----------------------------------------------------------------------*/
     static int init_proc(UF_UI_selection_p_t select,void* user_data)
     {
         int num_triples = 1;
         UF_UI_mask_t mask_triples[]={UF_dimension_type, UF_all_subtype, 0};
      
      if(UF_UI_set_sel_mask(select,UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
                 num_triples, mask_triples)==0)
             return (UF_UI_SEL_SUCCESS);
         else
             return (UF_UI_SEL_FAILURE);
     }
    
     int IMP_DIM_IMP_DIM_choose ( int dialog_id,
                  void * client_data,
                  UF_STYLER_item_value_type_p_t callback_data)
     {
          /* Make sure User Function is available. */
       int         response;
          tag_t                         dim_tag,view_tag;
          double                        cursor[3];
          UF_DRF_inspection_type_t      dim_inspection_type;
    
          if ( UF_initialize() != 0)
               return ( UF_UI_CB_CONTINUE_DIALOG );
      
       /* ---- Enter your callback code here ----- */
       UF_UI_select_with_single_dialog("选择一个尺寸","选择工程图尺寸",
                        UF_UI_SEL_SCOPE_WORK_PART, init_proc, NULL,
                        &response, &dim_tag, cursor, &view_tag);
      
       if (response == UF_UI_OBJECT_SELECTED ||
                 response == UF_UI_OBJECT_SELECTED_BY_NAME)
       {
        UF_DISP_set_highlight(dim_tag,0);
        UF_DRF_ask_dim_inspection_type(dim_tag,&dim_inspection_type);
        if(dim_inspection_type==UF_DRF_NO_INSPECTION)
    
        {
         dim_inspection_type=UF_DRF_WITH_INSPECTION;
         UF_DRF_set_dim_inspection_type(dim_tag,dim_inspection_type);
    
              }
       else
       {
                  uc1601("此尺寸已标识,请去除标识!",1);
       }
       }
        
      
    
          UF_terminate ();
    
         /* Callback acknowledged, do not terminate dialog */
         return (UF_UI_CB_CONTINUE_DIALOG);
        
         /* or Callback acknowledged, terminate dialog.    */
         /* return ( UF_UI_CB_EXIT_DIALOG );               */
    
     }
    
    
     /* -------------------------------------------------------------------------
      * Callback Name: IMP_DIM_IMP_DIM_remove
      * This is a callback function associated with an action taken from a
      * UIStyler object.
      *
      * Input: dialog_id   -   The dialog id indicate which dialog this callback
      *                        is associated with.  The dialog id is a dynamic,
      *                        unique id and should not be stored.  It is
      *                        strictly for the use in the NX Open API:
      *                               UF_STYLER_ask_value(s)
      *                               UF_STYLER_set_value  
      *        client_data -   Client data is user defined data associated
      *                        with your dialog.  Client data may be bound
      *                        to your dialog with UF_MB_add_styler_actions
      *                        or UF_STYLER_create_dialog.                
      *        callback_data - This structure pointer contains information
      *                        specific to the UIStyler Object type that 
      *                        invoked this callback and the callback type.
      * -----------------------------------------------------------------------*/
     int IMP_DIM_IMP_DIM_remove ( int dialog_id,
                  void * client_data,
                  UF_STYLER_item_value_type_p_t callback_data)
     {
          /* Make sure User Function is available. */ 
           int         response;
          tag_t                         dim_tag,view_tag;
          double                        cursor[3];
          UF_DRF_inspection_type_t      dim_inspection_type;
    
          if ( UF_initialize() != 0)
               return ( UF_UI_CB_CONTINUE_DIALOG );
      
       /* ---- Enter your callback code here ----- */
       UF_UI_select_with_single_dialog("选择一个尺寸","选择工程图尺寸",
                        UF_UI_SEL_SCOPE_WORK_PART, init_proc, NULL,
                        &response, &dim_tag, cursor, &view_tag);
      
       if (response == UF_UI_OBJECT_SELECTED ||
                 response == UF_UI_OBJECT_SELECTED_BY_NAME)
       {
        UF_DISP_set_highlight(dim_tag,0);
      
        UF_DRF_ask_dim_inspection_type(dim_tag,&dim_inspection_type);
       if(dim_inspection_type==UF_DRF_WITH_INSPECTION)
    
        {
         dim_inspection_type=UF_DRF_NO_INSPECTION;
         UF_DRF_set_dim_inspection_type(dim_tag,dim_inspection_type);
    
              }
       else
       {
        uc1601("此尺寸非重要尺寸!",1);
       }
       }
    
          UF_terminate ();
    
         /* Callback acknowledged, do not terminate dialog */
         return (UF_UI_CB_CONTINUE_DIALOG);
        
         /* or Callback acknowledged, terminate dialog.    */
         /* return ( UF_UI_CB_EXIT_DIALOG );               */
    
     }
    
     2.5.4 编译和运行程序
    
     选择菜单命令Build→Rebuild All,编译程序后打开UG工程图模块,点击尺寸标识工具条上的重要尺寸,显示图10对话框,选取重要尺寸按钮,并选取一尺寸进行标识,或选取去除重要尺寸按钮进行去除,如图11所示。

UG NX5.0的工程图尺寸标识工具的开发autocad技术图片10

UG NX5.0的工程图尺寸标识工具的开发autocad技术图片11


     
     有关参考尺寸和基本尺寸的标识工具开发过程同上,这里不再累述,图12所示为三类标识的具体应用:

UG NX5.0的工程图尺寸标识工具的开发autocad技术图片12


     3结论
    
     通过工作应用实践证明,本尺寸标识工具简洁而方便,大大提高了工程图绘制的效率,并提升了工程师在工程图设计中进行尺寸标识的意识。
    
     [参考文献]
    
     [1]黄翔、李迎光,UG应用开发教程与实例精解,北京:清华大学出版社,2005.4.
     [2]侯永涛、丁向阳,UG/Open二次开发与实例精解,北京:化学工业出版社,2007.4.
     [3]谭浩强,C程序设计,北京:清华大学出版社,1999.12.
     [4]郑莉,董渊,C++语言程序设计,北京:清华大学出版社,2001.7.


开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:UG NX5.0的工程图尺寸标识工具的开发 AutoCAD培训 AutoCAD培训课程 AutoCAD图纸设计 AutoCAD在线视频 AutoCAD技术学习教程 AutoCAD软件教程 AutoCAD资料下载 Fluent、CFX流体分析 HFSS电磁分析 Ansys培训 Abaqus培训 Autoform培训 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com