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

        ?

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

        2017-11-09 06:10:57李晨蕊
        關(guān)鍵詞:二次開發(fā)界面語言

        李晨蕊,郝 博

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

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

        李晨蕊1,郝 博2

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

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

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

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

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

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

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

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

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

        借助UG自帶的2 000多種API函數(shù),結(jié)合高級(jí)語言C++以及編程軟件Visual Studio,可以對(duì)UG進(jìn)行二次開發(fā).但需要注意的是,市場(chǎng)上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語言的特點(diǎn)

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

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

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

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

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

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

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

        C++語言在UG二次開發(fā)中應(yīng)用離不開C++語言的基礎(chǔ)知識(shí).在此基礎(chǔ)上,結(jié)合2 000多個(gè)API函數(shù)就可以開發(fā)出想要的UG界面.開發(fā)時(shí)首先要?jiǎng)?chuàng)建NX Open Wizard,在創(chuàng)建過程中要注意Visual Studio和UG的版本配置問題.在Visual Studio環(huán)境中創(chuàng)建程序,鏈接UG NX,進(jìn)行編譯和調(diào)試,生成后綴名為dll的文件(必須啟動(dòng)UG Gateway才能運(yùn)行)[6],在UG界面NX Open中運(yùn)行后綴名為dll的文件,實(shí)現(xiàn)UG界面的二次開發(fā).在該過程中,通常會(huì)使用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 語法元素的聲明

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

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

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

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

        圖4 GRIP源程序的組成

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

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

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

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

        圖6 模型實(shí)例

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

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

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

        UF_FEATURE_SIGN sign;

        UF_FEATURE_SIGN sign1;

        圖7 針對(duì)塊模型的菜單和對(duì)話框創(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ā)實(shí)例創(chuàng)建

        在實(shí)例中,需要設(shè)置KF的搜索路徑來保存新建的DFA文件,并使用KF提供的集成編輯器(Integrated Class Editor,ICE)創(chuàng)建KF實(shí)例.利用記事本編寫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ā)實(shí)例創(chuàng)建

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

        $生成實(shí)體

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

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

        $生成長(zhǎng)方體

        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

        $生成實(shí)體(減運(yùn)算)

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

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

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

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

        4 結(jié)束語

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

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

        [2] 劉建釗,花 鋒.知識(shí)融合程序設(shè)計(jì)與開發(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實(shí)用編程基礎(chǔ)[M].北京:清華大學(xué)出版社,2002:1-2.

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

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

        [7] 朱文華,杜素芬. 知識(shí)融合程序設(shè)計(jì)與應(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

        國(guó)家自然科學(xué)基金資助項(xiàng)目(61672360)

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

        1006-3269(2017)03-0038-05

        TP391.7

        A

        10.3969/j.issn.1006-3269.2017.03.009

        猜你喜歡
        二次開發(fā)界面語言
        國(guó)企黨委前置研究的“四個(gè)界面”
        語言是刀
        文苑(2020年4期)2020-05-30 12:35:30
        淺談基于Revit平臺(tái)的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        讓語言描寫搖曳多姿
        基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開發(fā)方法研究
        西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
        人機(jī)交互界面發(fā)展趨勢(shì)研究
        累積動(dòng)態(tài)分析下的同聲傳譯語言壓縮
        手機(jī)界面中圖形符號(hào)的發(fā)展趨向
        新聞傳播(2015年11期)2015-07-18 11:15:04
        久久久国产精品123| 亚洲精品国产不卡在线观看| 国产亚洲一区二区三区三州| 人妻少妇艳情视频中文字幕| 97色偷偷色噜噜狠狠爱网站| 全免费a级毛片| 久久99久久99精品免观看不卡| 亚洲精品视频一区二区三区四区 | 日本韩国三级aⅴ在线观看 | 岛国大片在线免费观看| 一区二区三区人妻在线| 国产亚洲精品熟女国产成人| 无码国模国产在线观看| 一级毛片不卡在线播放免费| 女同久久精品国产99国产精| 校园春色人妻激情高清中文字幕| 午夜性无码专区| 中文字幕在线日韩| 国产三级精品三级在线| 极品少妇被黑人白浆直流| 国产美女久久精品香蕉69| 中文字幕无码免费久久99| 亚洲天堂av高清在线| 一色桃子中文字幕人妻熟女作品| 男人边吃奶边做好爽免费视频| 91在线区啪国自产网页| 亚洲精品一区二区成人精品网站| 扒开腿狂躁女人爽出白浆| 国产亚洲日韩欧美一区二区三区| 国产香蕉一区二区三区| 国产av剧情刺激对白| 香蕉人人超人人超碰超国产| 无码人妻AⅤ一区 二区 三区| 久久精品亚洲成在人线av| 婷婷伊人久久大香线蕉av| 亚洲国产综合精品 在线 一区 | 亚洲成生人免费av毛片| 色综合久久网| 日韩精品中文字幕无码一区| 色窝综合网| 亚洲一区二区三区精品|