UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)

2013-05-18  by:廣州有限元分析、培訓(xùn)中心-1CAE.COM  來(lái)源:仿真在線

周兆國(guó) 來(lái)源:e-works
關(guān)鍵字:尺寸標(biāo)識(shí)工具 重要尺寸 參考尺寸 基本尺寸 UG NX5.0
本文首先闡述了工程圖樣尺寸標(biāo)識(shí)的分類,進(jìn)而為達(dá)到快速而方便的進(jìn)行尺寸標(biāo)識(shí),結(jié)合UGNX5.0強(qiáng)大的工程圖模塊和完善的二次開發(fā)模塊,同時(shí)運(yùn)用VC++6.0為編程工具,開發(fā)出與UG軟件完全融為一體的尺寸標(biāo)識(shí)工具。

0 前言
    
     工程圖樣是現(xiàn)代工業(yè)生產(chǎn)的重要技術(shù)文件,是設(shè)計(jì)師表達(dá)設(shè)計(jì)思想,技術(shù)交流,組織生產(chǎn)和加工的重要文件。而在工程設(shè)計(jì)過程中,工程圖中工程信息標(biāo)注的工作量要占到設(shè)計(jì)工作的一半以上,因此,操作簡(jiǎn)便、完全符合國(guó)標(biāo)的標(biāo)注方式可以提高設(shè)計(jì)效率,受到工程師的高度重視。
    
     工程信息除包括文本或技術(shù)要求、尺寸公差、表面粗糙度、形位公差、基準(zhǔn)符號(hào)等以外,還有經(jīng)常在工程圖樣中出現(xiàn)的尺寸標(biāo)識(shí),這里的尺寸標(biāo)識(shí)是指以下幾類尺寸:
    
     1、重要尺寸(Important Dimension):通常用長(zhǎng)腰形框圖框標(biāo)識(shí)的尺寸,此類尺寸為必檢尺寸;
    
     2、參考尺寸(Referenced Dimension):用括號(hào)標(biāo)識(shí)的尺寸,主要應(yīng)用于以下幾方面的:
    
     1)、尺寸鏈封閉時(shí),在其中一個(gè)上加括號(hào)(提示此尺寸);
    
     2)、在某些不主要場(chǎng)合,尺寸依生產(chǎn)工藝條件而定時(shí),加注參考標(biāo)記;
    
     3)、局部試圖為了反映某個(gè)尺寸的重要位置,可重復(fù)標(biāo)注但必須加注參考標(biāo)記(尺寸可帶公差)。
    
     3、基本尺寸(Basic Dimension):是指設(shè)計(jì)中給定的尺寸,通常用矩形框來(lái)標(biāo)識(shí)。基本尺寸是根據(jù)使用要求,通過計(jì)算、試驗(yàn)或按類比法確定的,現(xiàn)在的尺寸一般都標(biāo)準(zhǔn)化了,以減少定制刀具、量具的規(guī)格。
    
     目前市面上應(yīng)用的各種工程軟件(象UG NX、proe、Catia、AutoCAD等)中大多對(duì)文本或技術(shù)要求、尺寸公差、表面粗糙度、形位公差、基準(zhǔn)符號(hào)等工程信息都作了相應(yīng)的處理,而且功能都非常成熟和完善,而尺寸標(biāo)識(shí)功能則被忽略或其功能操作較為不便,因此,快速方便的尺寸標(biāo)識(shí)工具在工程圖樣設(shè)計(jì)中就起到具足輕重的作用。
    
     1 基于UG的工程圖尺寸標(biāo)識(shí)工具簡(jiǎn)介
    
     UG(Unigraphics)軟件起源于美國(guó)麥道(MD)公司,六十年代起成為商業(yè)軟件。1991年并入EDS 公司,成為世界一流的集成化機(jī)械CAD/CAE/CAM 軟件,通用汽車公司是UGⅡ的最大用戶(擁有2400 套UGⅡ系統(tǒng))。UG 于1990 年初進(jìn)入中國(guó)市場(chǎng),廣泛用于國(guó)內(nèi)的航空航天、汽車、通用機(jī)械及模具等各個(gè)領(lǐng)域。
    
     UG 是一個(gè)功能強(qiáng)大的CAD/CAM 軟件,針對(duì)于整個(gè)產(chǎn)品開發(fā)的全過程,從產(chǎn)品的概念設(shè)計(jì)直到產(chǎn)品建模、分析和制造過程。作為一個(gè)業(yè)界最完整的一流產(chǎn)品,Unigraphics 提供了全系列的工具,包括針對(duì)計(jì)算機(jī)輔助工業(yè)設(shè)計(jì)(CAID)藝術(shù)級(jí)工具,并與功能強(qiáng)大的CAD/CAM/CAE 解決方案緊密集成。UG 具有獨(dú)特的知識(shí)驅(qū)動(dòng)自動(dòng)化(KDA)的功能,使產(chǎn)品和過程的知識(shí)能夠集成在一個(gè)系統(tǒng)里,Unigraphics 大大提高了許多世界知名公司的生產(chǎn)力。
    
     基于UG的工程圖尺寸標(biāo)識(shí)工具是在UG強(qiáng)大的工程圖模塊和完善的二次開發(fā)模塊基礎(chǔ)上結(jié)合VC++6.0為編程工具開發(fā)出來(lái)尺寸標(biāo)識(shí)工具集,是UG相關(guān)功能的一種整合和顯化,主要應(yīng)用于工程圖中重要尺寸、參考尺寸和基本尺寸的標(biāo)識(shí)和標(biāo)識(shí)去除,從而使尺寸的標(biāo)識(shí)更快速方便。
    
     2 尺寸標(biāo)識(shí)工具的設(shè)計(jì)與實(shí)現(xiàn)
    
     2.1 開發(fā)與運(yùn)行環(huán)境選型和設(shè)置

    
     本文選擇了UG NX5.0為CAD軟件平臺(tái)和Visual C++ 6.0 為系統(tǒng)開發(fā)的編程工具,UG系統(tǒng)提供了具有開方式架構(gòu)體系的二次開發(fā)環(huán)境UG/Open,支持對(duì)UG 資源的調(diào)用,包括UG/Open MenuScript(用戶菜單)、UG/Open UIStyler(用戶對(duì)話框)、UG/Open API(與UG 系統(tǒng)資源的直接交互接口),結(jié)合UG二次開發(fā)環(huán)境UG/Open的結(jié)構(gòu)框架進(jìn)行如下設(shè)置:
    
     2.1.1 工程目錄結(jié)構(gòu)設(shè)置
    
     建立D:\ Ug_stds\DIM_ID工程文件夾,在其下建立以下四個(gè)文件夾目錄(圖1):
    
     1)、startup 目錄存放UG啟動(dòng)時(shí)需要加載的動(dòng)態(tài)連接庫(kù)文件(*.dll)、菜單腳本文件(*.men)和工具欄腳本文件(*.tbr);
     2)、application 目錄存放尺寸標(biāo)識(shí)工具的功能擴(kuò)展程序文件,如UIStyler對(duì)話框文件(*.dlg),工具圖標(biāo)文件(*.bmp);
     3)、code 目錄存放尺寸標(biāo)識(shí)工具的程序源代碼(該目錄在新建工程時(shí)創(chuàng)建);
     4)、doc 目錄存放尺寸標(biāo)識(shí)工具的使用說(shuō)明。

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad design圖片1


     2.1.2 設(shè)置系統(tǒng)環(huán)境變量
    
     在控制面板中點(diǎn)擊系統(tǒng)→高級(jí)→環(huán)境變量,增加環(huán)境變量UGII_USER_DIR,使其指向
    
     D:\ Ug_stds\DIM_ID。

2.2 編寫尺寸標(biāo)識(shí)工具的菜單
    
     應(yīng)用UG/OPEN MenuScript所提供了一套用于定義Unigraphics菜單的腳本語(yǔ)言,運(yùn)用記事本工具按照MenuScript腳本語(yǔ)言語(yǔ)法可定義DIM.men文件,將該文件保存在D:\ Ug_stds\DIM_ID\startup文件夾中,DIM.men具體內(nèi)容如下:
    
     VERSION 120
    
     EDIT UG_GATEWAY_MAIN_MENUBAR
     BEFORE UG_HELP
     CASCADE_BUTTON  DIM_ID
     LABEL 尺寸標(biāo)識(shí)
     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
    
     運(yùn)行UG NX后在主界面上生成的尺寸標(biāo)識(shí)工具菜單如圖2所示:

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad design圖片2


     
     2.3 建立尺寸標(biāo)識(shí)工具的工具條
    
     編寫工具條(Toolbar)為方便快速的使用尺寸標(biāo)識(shí)工具,實(shí)現(xiàn)方法是制作或編寫工具圖標(biāo)文件(BMP文件)與工具條文件,工具條是以.tbr為擴(kuò)展名的文本文件。
    
     首先在application文件夾中創(chuàng)建工具圖標(biāo)文件,分別命名為basic_dim.bmp 、imp_dim.bmp和ref_dim.bmp,每個(gè)圖標(biāo)的標(biāo)準(zhǔn)大小為24X24(像素X像素),然后在startup文件夾中創(chuàng)建工具條腳本文件DIM.tbr,并輸入如下代碼:
    
     TITLE   尺寸標(biāo)識(shí)
    
     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
    
     運(yùn)行UG NX后在主界面上生成的尺寸標(biāo)識(shí)工具的工具條如圖3所示:
      
     

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad design圖片3


     
     2.4 創(chuàng)建尺寸標(biāo)識(shí)工具的交互接口界面
    
    
     UG/OPEN UIStyler提供了快速生成Unigraphics對(duì)話框的功能,產(chǎn)生的對(duì)話框可以在MenuScript文件中被調(diào)用。
    
     1)、在Unigraphics Gateway狀態(tài)下,選擇Start→All Applicatoins→User Interface styler…,進(jìn)入U(xiǎn)IStyler;
     2)、利用UIStyler提供的控件分別創(chuàng)建重要尺寸,參考尺寸和基本尺寸的對(duì)話框,設(shè)置成添加和去除尺寸標(biāo)識(shí)按鈕,圖4所示為重要尺寸的對(duì)話框:
     

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad design圖片4


     
     3)、將三類尺寸標(biāo)識(shí)的對(duì)話框文件(*.dlg文件)保存至applicatoin文件夾中,UIStyler針對(duì)每一個(gè)*.dlg文件自動(dòng)創(chuàng)建對(duì)應(yīng)的*.h文件和*.c文件,自動(dòng)保存至applicatoin文件夾中。
    
     運(yùn)行UG NX后在主界面上點(diǎn)擊重要尺寸標(biāo)識(shí)按鈕時(shí)出現(xiàn)的對(duì)話框,如圖5所示:
     

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad design圖片5

2.5 創(chuàng)建尺寸標(biāo)識(shí)工具的動(dòng)態(tài)鏈接庫(kù)文件
    
     動(dòng)態(tài)鏈接庫(kù)(DLL)文件適用于對(duì)UG/OPEN API的內(nèi)部模式,程序只能在Unigraphics的界面環(huán)境中運(yùn)行。重要尺寸標(biāo)識(shí)功能所對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù)文件(Imp_Code.dll)的創(chuàng)建過程如下:
    
     2.5.1 在Visual C++中使用MFC應(yīng)用向?qū)陆üこ添?xiàng)目Imp_Code.dsw,如圖6所示;
     

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad design圖片6


     
     2.5.2 設(shè)置UG應(yīng)用開發(fā)環(huán)境
    
     1)、工程設(shè)置
    
     選擇菜單命令Project→Setting,彈出Project Setting對(duì)話框,選擇Link選項(xiàng)卡,在Output file name文本框中輸入D:\Ug_stds\DIM_ID\startup\Imp_Code.dll,并在Object/library modules文本框中輸入U(xiǎn)G庫(kù)文件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的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad技術(shù)圖片7


     
     2)、配置路徑選項(xiàng)
    
     選擇菜單命令Tools→Option,彈出Options對(duì)話框。選擇Directories選項(xiàng)卡,設(shè)置如圖8所示:

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad技術(shù)圖片8


     
     2.5.3 編寫消息映射代碼
    
     1)、建立用戶文件
    
     在VC中選擇菜單命令Project→Add To Project→New,添加新文件Main.h和Main.cpp
    
     到工程中,并將這兩個(gè)文件作為重要尺寸標(biāo)識(shí)工具的工程主文件。添加新文件APP.h和APP.cpp到工程中,并將這兩個(gè)文件作為重要尺寸標(biāo)識(shí)工具的工程應(yīng)用文件,如圖9所示:

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad技術(shù)圖片9

2)、編寫文件代碼
    
     在新建的工程文件中添加以下代碼(由于篇幅有限,這里只例舉了重要尺寸標(biāo)識(shí)工具的主要代碼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("選擇一個(gè)尺寸","選擇工程圖尺寸",
                        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("此尺寸已標(biāo)識(shí),請(qǐng)去除標(biāo)識(shí)!",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("選擇一個(gè)尺寸","選擇工程圖尺寸",
                        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 編譯和運(yùn)行程序
    
     選擇菜單命令Build→Rebuild All,編譯程序后打開UG工程圖模塊,點(diǎn)擊尺寸標(biāo)識(shí)工具條上的重要尺寸,顯示圖10對(duì)話框,選取重要尺寸按鈕,并選取一尺寸進(jìn)行標(biāo)識(shí),或選取去除重要尺寸按鈕進(jìn)行去除,如圖11所示。

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad技術(shù)圖片10

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad技術(shù)圖片11


     
     有關(guān)參考尺寸和基本尺寸的標(biāo)識(shí)工具開發(fā)過程同上,這里不再累述,圖12所示為三類標(biāo)識(shí)的具體應(yīng)用:

UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā)autocad技術(shù)圖片12


     3結(jié)論
    
     通過工作應(yīng)用實(shí)踐證明,本尺寸標(biāo)識(shí)工具簡(jiǎn)潔而方便,大大提高了工程圖繪制的效率,并提升了工程師在工程圖設(shè)計(jì)中進(jìn)行尺寸標(biāo)識(shí)的意識(shí)。
    
     [參考文獻(xiàn)]
    
     [1]黃翔、李迎光,UG應(yīng)用開發(fā)教程與實(shí)例精解,北京:清華大學(xué)出版社,2005.4.
     [2]侯永濤、丁向陽(yáng),UG/Open二次開發(fā)與實(shí)例精解,北京:化學(xué)工業(yè)出版社,2007.4.
     [3]譚浩強(qiáng),C程序設(shè)計(jì),北京:清華大學(xué)出版社,1999.12.
     [4]鄭莉,董淵,C++語(yǔ)言程序設(shè)計(jì),北京:清華大學(xué)出版社,2001.7.


開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:UG NX5.0的工程圖尺寸標(biāo)識(shí)工具的開發(fā) AutoCAD培訓(xùn) AutoCAD培訓(xùn)課程 AutoCAD圖紙?jiān)O(shè)計(jì) AutoCAD在線視頻 AutoCAD技術(shù)學(xué)習(xí)教程 AutoCAD軟件教程 AutoCAD資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國(guó)服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com