亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        UG二次開發(fā)中C++、KF、GRIP 3種語言的對比

        2017-11-09 06:10:57李晨蕊
        關(guān)鍵詞:二次開發(fā)實例編程

        李晨蕊,郝 博

        (1.沈陽理工大學(xué) 機械工程學(xué)院,遼寧 沈陽 110159;2.遼寧機電職業(yè)技術(shù)學(xué)院,遼寧 丹東 118009)

        UG二次開發(fā)中C++、KF、GRIP 3種語言的對比

        李晨蕊1,郝 博2

        (1.沈陽理工大學(xué) 機械工程學(xué)院,遼寧 沈陽 110159;2.遼寧機電職業(yè)技術(shù)學(xué)院,遼寧 丹東 118009)

        為提高UG二次開發(fā)效率,改善UG二次開發(fā)界面風(fēng)格,以C++、KF、GRIP 3種語言為開發(fā)方式,結(jié)合UG/Open MenuScript和UG/Open UIStyler兩種開發(fā)工具,對UG進(jìn)行二次開發(fā).通過實例對比,總結(jié)出了3種開發(fā)語言的優(yōu)缺點.

        UG二次開發(fā);C++;KF;GRIP;開發(fā)方式

        C++語言在20世紀(jì)80年代早期被開發(fā)出來,是一種基于C語言的面向?qū)ο笳Z言[1],發(fā)展至今已成為市場上使用最廣泛、通用性最強、近于完善的高級語言.C++保留了C語言原有的優(yōu)點,還增加了面向?qū)ο髾C制.

        知識融合(Knowledge Fusion,KF)是一種新的設(shè)計思想和工具,是在基于特征的參數(shù)化建模技術(shù)和知識工程技術(shù)的基礎(chǔ)上發(fā)展起來的[2-3].KF語言憑借自身開發(fā)優(yōu)點,能夠直接訪問電子表格、數(shù)據(jù)庫等外部數(shù)據(jù)資源,具有聯(lián)合其他分析和優(yōu)化軟件的能力,并且能夠與其他UG二次開發(fā)工具(如UG/Open MenuScript、UG/Open UIStyler等)進(jìn)行集成與開發(fā).

        GRIP語言是UG軟件自身攜帶的一種早期開發(fā)語言,是UGS公司提供的一個用于UG二次開發(fā)的軟件工具.利用GRIP程序可以完成UG的各種交互操作.在UG1.0到4.0版本的界面中,許多功能是通過GRIP語言開發(fā)的[4].

        1 3種語言在UG二次開發(fā)中的特點比較

        1.1UG二次開發(fā)中C++語言的特點

        C++語言開發(fā)支持多種程序設(shè)計風(fēng)格,其許多特性以庫的形式存在,以保證語言簡潔和開發(fā)運行高效.與C語言相比,C++語言引入了面向?qū)ο蟮母拍?,使得UG二次開發(fā)的人機交互界面更簡潔.

        借助UG自帶的2 000多種API函數(shù),結(jié)合高級語言C++以及編程軟件Visual Studio,可以對UG進(jìn)行二次開發(fā).但需要注意的是,市場上Visual Studio和UG的版本很多,并不是所有的軟件版本都能互相兼容.UG7.0默認(rèn)支持VS2009;UG7.5、8.0、8.5默認(rèn)支持VS2010;UG9.0、10.0默認(rèn)支持VS2012.

        1.2UG二次開發(fā)中KF語言的特點

        KF語言是解釋性、聲明性和需求驅(qū)動性的語言,并且具有面向?qū)ο蠛蛯哟位奶攸c.KF語言能夠與NX交互系統(tǒng)同步.

        在NX界面打開后綴名為dfa的文件,在KF導(dǎo)航器中使用系統(tǒng)提供的類和函數(shù)能夠為其添加知識約束功能.這些知識約束功能被定義儲存在三維模型中,可以通過腳本文件的修改實現(xiàn)參數(shù)的傳遞,并在模型的參數(shù)改變后進(jìn)行推理計算,也可以使用KF語言編寫程序文件,創(chuàng)建更加復(fù)雜的產(chǎn)品參數(shù)化設(shè)計系統(tǒng).

        1.3UG二次開發(fā)中GRIP語言的特點

        GRIP語言是UG自帶開發(fā)性語言,能夠與UG緊密結(jié)合,具有完整的語法規(guī)則.其程序結(jié)構(gòu)和內(nèi)部函數(shù)可與其他語言相互調(diào)用.GRIP語言是面向工程師的語言,但是只有經(jīng)過UG自帶的NX Open grip編譯,鏈接后生成可執(zhí)行的程序性文件,才可以在UG窗口運行.

        UG/Open GRIP功能強大,是UG內(nèi)嵌語言,主要實現(xiàn)圖形繪制和裝配、工程圖生成,并對一些外部文件實現(xiàn)管理功能,可以完成UG的各種交互操作[5].通過人機交互界面,它幾乎能夠?qū)崿F(xiàn)用戶的所有要求.

        2 3種語言在UG二次開發(fā)中的應(yīng)用

        2.1C++語言在UG二次開發(fā)中的應(yīng)用

        C++語言在UG二次開發(fā)中應(yīng)用離不開C++語言的基礎(chǔ)知識.在此基礎(chǔ)上,結(jié)合2 000多個API函數(shù)就可以開發(fā)出想要的UG界面.開發(fā)時首先要創(chuàng)建NX Open Wizard,在創(chuàng)建過程中要注意Visual Studio和UG的版本配置問題.在Visual Studio環(huán)境中創(chuàng)建程序,鏈接UG NX,進(jìn)行編譯和調(diào)試,生成后綴名為dll的文件(必須啟動UG Gateway才能運行)[6],在UG界面NX Open中運行后綴名為dll的文件,實現(xiàn)UG界面的二次開發(fā).在該過程中,通常會使用UG/Open MenuScript和UG/Open UIStyler,兩種輔助開發(fā)工具,讓開發(fā)更容易,并且可得到更加優(yōu)美的UG界面.UG二次開發(fā)(用C++語言)總體開發(fā)流程如圖1所示.

        圖1 UG二次開發(fā)(用C++語言)總體開發(fā)流程

        2.2KF語言在UG二次開發(fā)中的應(yīng)用

        研究KF語言編程應(yīng)熟悉KF語言的語法元素,如類(Class)、屬性(Attribute)、表達(dá)式(Expression)、信息傳遞(Information Passing)、需求順序(Demand Order)、需求值(Demand Value)和參數(shù)框架(Reference Frames)[7].圖2所示為語法元素的聲明.

        圖2 語法元素的聲明

        運用帶有記事本功能的軟件編寫KF程序,保存為后綴名為dfa的腳本文件.打開NX創(chuàng)建新文件,在所有應(yīng)用模塊選項選擇“知識融合”,并從知識融合工具條中選擇“DFA管理器(DFA Manager)”,指定知識融合搜索路徑,執(zhí)行程序.UG二次開發(fā)(用KF語言)總體開發(fā)流程如圖3所示.

        圖3 UG二次開發(fā)(用KF語言)總體開發(fā)流程

        2.3GRIP語言在UG二次開發(fā)中的應(yīng)用

        一個GRIP源程序由一系列的GRIP語句組成.一般說來,一個GRIP源程序可分為5個部分,每個部分都使用一組GRIP命令.它具體由申明語句部分、初始化語句部分、交互語句部分、過程處理語句部分和結(jié)束語句部分組成(圖4).

        圖4 GRIP源程序的組成

        進(jìn)行GRIP源程序編譯、鏈接、生成時,可執(zhí)行GRIP程序,但需要正確使用GRIP的高級開發(fā)環(huán)境(GRADE).其具體方法如下:首先打開高級開發(fā)環(huán)境界面,然后設(shè)置GRIP文件所在文件夾的安裝目錄,接著編寫(或修改)源程序(可打開帶有記事本功能的軟件進(jìn)行編寫或修改);最后對編寫完成的程序進(jìn)行編譯、鏈接,生成可執(zhí)行的后綴名為grx的文件. UG二次開發(fā)(用GRIP語言)總體開發(fā)流程如圖5所示.

        圖5 UG二次開發(fā)(用GRIP語言)總體開發(fā)流程

        3 應(yīng)用3種語言的實例創(chuàng)建

        以一個長50 mm、寬40 mm、高30 mm的塊模型為實例.它附有6個直徑為10 mm的通孔.該模型實例的二維草圖和基于MBD模型的三維標(biāo)注如圖6所示.

        圖6 模型實例

        本文運用C++、KF、GRIP 3種開發(fā)語言,結(jié)合UG中UG/Open MenuScript和UG/Open UIStyler兩種開發(fā)工具,創(chuàng)建了同種實例模型.其菜單和對話框的創(chuàng)建如圖7所示.

        3.1基于C++語言的UG二次開發(fā)實例創(chuàng)建

        結(jié)合UG API函數(shù),用C++編程軟件Visual Studio編寫的主要程序如下:

        UF_FEATURE_SIGN sign;

        UF_FEATURE_SIGN sign1;

        圖7 針對塊模型的菜單和對話框創(chuàng)建

        static void do_ugopen_api(float abc[],float orig1[],float orig2[])

        {

        int method=0; double block_orig[3]={orig1[0],orig1[1],orig1[2]};

        double cyl_orig[3]={orig2[0],orig2[1],orig2[2]}; char *block_len[3];char bb[4][20];

        char *cyl_height; char *cyl_diam;char cc[3][20]; double direction[3]={0,0,m};

        char *number_in_x;char *distance_x;char *number_in_y;

        char *distance_y;char dd[5][20]; tag_t blk_obj;tag_t cyl_obj_id;uf_list_p_t feature_list;

        tag_t feature_obj_id;

        ......

        UF_CALL(UF_MODL_create_block1(sign,block_orig,block_len,&blk_obj));

        .......

        UF_CALL(UF_MODL_create_cyl1(sign1,cyl_orig,cyl_height,cyl_diam,direction,&cyl_obj_id));

        ......

        UF_CALL(UF_MODL_create_list(&feature_list));

        UF_CALL(UF_MODL_put_list_item(feature_list, cyl_obj_id));

        UF_CALL(UF_MODL_create_linear_iset(method,number_in_x,distance_x,number_in_y,distance_y,feature_list, &feature_obj_id));return;

        }

        3.2基于KF語言的UG二次開發(fā)實例創(chuàng)建

        在實例中,需要設(shè)置KF的搜索路徑來保存新建的DFA文件,并使用KF提供的集成編輯器(Integrated Class Editor,ICE)創(chuàng)建KF實例.利用記事本編寫KF程序的主要代碼如下:

        #! NX/KF 4.0

        DefClass: %model1.prt (ug_base_part);

        (Child) new_ug_block: {

        Class, ug_block;

        length, 50;

        Width, 40;

        Height, 30;

        Origin, Point(0,0,0);

        X_Axis, Vector(1,0,0);

        Y_Axis, Vector(0,1,0);

        };

        (Child) new_ug_cylinder1: {

        Class, ug_cylinder;

        Diameter, 10;

        Height, 30;

        Origin, Point(1,1,0);

        Direction, Vector(0,0,1);

        Operation, Subtract;

        Target, {new_ug_block:};

        };

        .......

        3.3基于GRIP語言的UG二次開發(fā)實例創(chuàng)建

        利用記事本編寫GRIP程序的主要代碼如下:

        $生成實體

        $目的:演示實體創(chuàng)建過程

        ENTITY/BLOCK,CYL1,CYL2,CYL3,CYL4,CYL5,CYL6,PIM1,PIM2,PIM3,PIM4,PIM5,PIM6

        $生成長方體

        BLOCK = SOLBLK/ORIGIN,0,0,0,SIZE,50,40,30

        $生成圓柱

        CYL1 = SOLBLK/ORIGIN,10,10,0,HEIGHT,30,DIAMTR,10

        CYL2 = SOLBLK/ORIGIN,10,30,0,HEIGHT,30,DIAMTR,10

        CYL3 = SOLBLK/ORIGIN,25,10,0,HEIGHT,30,DIAMTR,10

        CYL4 = SOLBLK/ORIGIN,25,30,0,HEIGHT,30,DIAMTR,10

        CYL5 = SOLBLK/ORIGIN,40,10,0,HEIGHT,30,DIAMTR,10

        CYL6 = SOLBLK/ORIGIN,40,30,0,HEIGHT,30,DIAMTR,10

        $生成實體(減運算)

        PIM1 = SUBTRA/BLOCK,WITH,CYL1

        PIM2 = SUBTRA/PIM1,WITH,CYL2

        PIM3 = SUBTRA/PIM2,WITH,CYL3

        PIM4 = SUBTRA/PIM3,WITH,CYL4

        PIM5 = SUBTRA/PIM4,WITH,CYL5

        PIM6 = SUBTRA/PIM5,WITH,CYL6

        HALT

        3.4綜合分析

        (1)通常認(rèn)為,C++是用途最廣的開發(fā)語言之一,且C++語言是一種最早應(yīng)用的工程類語言,比較完善.通過實例創(chuàng)建可看出,C++語言的邏輯性很強,結(jié)構(gòu)比較完整.但是,在開發(fā)過程中,由于該語言本身過度復(fù)雜,甚至有的開發(fā)人員難以理解語言的意思,受C++編譯系統(tǒng)自身復(fù)雜性的影響,編寫難度大,因此復(fù)雜C++程序的正確性難以保證,即使能夠編寫,編譯器也可能存在許多問題.目前,各軟件的外部接口不是特別完善,對C++編程軟件的接口要求比較高,在配置方面還存在一些技術(shù)性問題.

        (2)KF語言無需在編譯、鏈接、源代碼文件修改后更新設(shè)計,只要重載即可.KF語言的規(guī)則創(chuàng)建不需要考慮編程的先后順序,只要在規(guī)則中賦予依賴關(guān)系即可.如果對象被交互地修改建模尺寸,KF語言描述會自動地反映此變化.但是,目前市場上基于KF語言開發(fā)的相關(guān)文獻(xiàn)較少,KF語言的普及程度比較低,只限于專業(yè)人士之間的溝通.從實例中可以看出,雖然KF語言簡單易懂,但是邏輯性相比C++語言來說較弱.在編譯、運行方面, NX軟件對KF語言的處理還不夠完善,好多問題只能由開發(fā)者憑借自身技術(shù)能力去處理,而不能通過計算機輔助解決.

        (3)GRIP語言通俗易懂,與一般通用語言一樣,具有完整的語法規(guī)則和程序結(jié)構(gòu),并且作為UG自帶的開發(fā)性語言,和UG兼容性比較好,無需利用外部接口技術(shù).GRIP語言本身相對簡單,邏輯性強.但是它只適合早期UG1.0-4.0的簡單開發(fā)界面,對于現(xiàn)階段各種風(fēng)格界面來說,GRIP語言開發(fā)能力相比C++語言尚有欠缺.相比基于知識工程的KF語言,雖然GRIP語言發(fā)展較為完善,但有時候卻不能實現(xiàn)開發(fā)者的設(shè)計意圖.

        (4)通過實例分析,KF語言和GRIP語言對于簡單功能模塊的開發(fā)較為合適.如果開發(fā)具有一定風(fēng)格且具有一定難度系數(shù)的UG界面,選擇C++語言作為開發(fā)方式更能滿足開發(fā)者的需求.

        4 結(jié)束語

        基于一定語言的UG二次開發(fā)在目前市場上有很多方式,除了本文所比較的C++、KF、GRIP外,還有JAVA、.net、Python、SNAP等語言.本文結(jié)合模型實例對3種典型的UG開發(fā)語言進(jìn)行對比,總結(jié)出了C++語言、KF語言、GRIP語言在UG二次開發(fā)中的優(yōu)缺點.設(shè)計者和開發(fā)商可以根據(jù)產(chǎn)品的開發(fā)環(huán)境和自身條件,選擇較為合適的開發(fā)方式.

        [1] 董志鵬,侯艷書. Visual C++編程從基礎(chǔ)到應(yīng)用[M]. 北京: 清華大學(xué)出版社,2014:5-6.

        [2] 劉建釗,花 鋒.知識融合程序設(shè)計與開發(fā)[M]. 北京: 電子工業(yè)出版社,2015:1-2.

        [3] Chen Z.Knowledge an acquisition assisted by CLIPS programming[J].Engineering Application of Artificial Intelligence,1999,12:379-387.

        [4] 王慶林.UG/Open GRIP實用編程基礎(chǔ)[M].北京:清華大學(xué)出版社,2002:1-2.

        [5] 秦 闖,劉戰(zhàn)強,葉洪濤,等.基于UG二次開發(fā)技術(shù)的CAD/CAE/CAM軟件集成方法研究[J].機床與液壓,2015,43(9):141-144.

        [6] 何 麗,孫文磊,王宏偉.UG二次開發(fā)技術(shù)在WEB零件庫系統(tǒng)開發(fā)中的應(yīng)用研究[J].機床與液壓,2011,39(20):9-11,105.

        [7] 朱文華,杜素芬. 知識融合程序設(shè)計與應(yīng)用[M]. 上海: 上海交通大學(xué)出版社,2011:10.

        ComparisonofC++,KFandGRIPinSecondaryDevelopmentofUG

        LI Chen-rui1, HAO Bo2

        (1.School of Mechanical Engineering,Shenyang Ligong University,Shenyang 110159,China;2. Liaoning Jidian Polytechnic,Dandong 118009,China)

        In order to improve the cycle speed and the interface style in the Secondary Development of UG, it is very important to choose the right development language. This paper summarizes the advantages and disadvantages of languages of C++, KF and GRIP by introducing the development methods with the languages of C++, KF and GRIP combining with the two development tools of UG / Open MenuScript and UG / Open UIStyler and respective second development of UGcompares and the case study with the practice of the development process, that is, designers and developers can choose a suitable development mode according to their own needs.

        secondary development of UG;C++;KF;GRIP;development mode

        2017-04-10

        國家自然科學(xué)基金資助項目(61672360)

        李晨蕊(1992-),女,河北張家口人,碩士研究生,研究方向為數(shù)字化、網(wǎng)絡(luò)化設(shè)計與制造技術(shù).

        1006-3269(2017)03-0038-05

        TP391.7

        A

        10.3969/j.issn.1006-3269.2017.03.009

        猜你喜歡
        二次開發(fā)實例編程
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        我家有只編程貓
        淺談基于Revit平臺的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        西門子Easy Screen對倒棱機床界面二次開發(fā)
        完形填空Ⅱ
        完形填空Ⅰ
        基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
        国产清品夜色一区二区三区不卡| 色欲aⅴ亚洲情无码av| 国产在线一区二区三区av| 不卡视频一区二区三区| 91青青草在线观看视频| 日本在线一区二区三区视频观看 | 我把护士日出水了视频90分钟 | 国产欧美精品一区二区三区–老狼| 久久久亚洲精品一区二区| 亚洲av毛片在线网站| 久久99精品久久水蜜桃| 欧美日韩成人在线| 精品日本韩国一区二区三区| 亚洲第一幕一区二区三区在线观看| 中文字幕无码毛片免费看| 水蜜桃久久| 一个人的视频免费播放在线观看 | 国产黄色一级到三级视频| 国产 一二三四五六| 国内精品久久久久久中文字幕| 69av视频在线| 中文字幕亚洲入口久久| 乱码丰满人妻一二三区| 2021国产视频不卡在线| 国产91熟女高潮一曲区| av高清在线不卡直播| 一本色道久久99一综合| 亚洲国产成人精品激情| 国产三级不卡视频在线观看| 免费人成网站在线观看欧美| 久青草国产视频| 亚洲国产av中文字幕| 亚洲av无码国产精品久久| 国产成人vr精品a视频| 娇妻粗大高潮白浆| 色综合悠悠88久久久亚洲| 性裸交a片一区二区三区| 久久久久久亚洲AV成人无码国产 | 久久国产劲暴∨内射| 亚洲三级香港三级久久| 国产人妻久久精品二区三区老狼|