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

        ?

        利用Python二次開發(fā)Creo

        2020-03-16 03:17:39胡迪羅輝
        電腦知識與技術(shù) 2020年2期
        關(guān)鍵詞:二次開發(fā)

        胡迪 羅輝

        摘要: Creo軟件的二次開發(fā)工作逐漸得到人們的重視,但其并未直接提供Python的開發(fā)接口。該文介紹了在利用Creo VB API接口的基礎(chǔ)上,簡便利用Python使用Python對Creo進(jìn)行二次開發(fā)的方法和關(guān)鍵技術(shù)。以批量關(guān)系操作為例,對該方法進(jìn)行了驗(yàn)證,結(jié)果表明該方法簡化了Creo二次開發(fā)的過程。

        關(guān)鍵詞:Creo;二次開發(fā);Python;VB API

        中圖分類號:TP393? ? ? ? 文獻(xiàn)標(biāo)識碼:A

        文章編號:1009-3044(2020)02-0049-02

        Abstract: The secondary development of Creo is getting more and more attention, but Creo does not directly provide Python development interface. The method and key technology of how to use Python to develop Creowas introduced. Finally, an example of batch relationoperationwas taken to show how the system works.The results show that this method simplifies the process of Creo development.

        Key words: Creo; Secondary Development;Python; VB API

        Python由荷蘭人GuidovanRossum于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年,是一種面向?qū)ο蟮?、動態(tài)的、解釋型程序設(shè)計語言,經(jīng)過十幾年的發(fā)展,以其短小精悍的語法以及高效的開發(fā)、簡單入門的特點(diǎn)逐漸成為主流程序設(shè)計語言。Python更接近人的自然語言,易學(xué),更適合非計算機(jī)專業(yè)科研人員。因此,Python當(dāng)前已經(jīng)成為眾多科研領(lǐng)域的科學(xué)計算工具。Python提供了NumPy等眾多程序庫,已經(jīng)成為眾多科研領(lǐng)域的科學(xué)計算工具[1-2]。

        三維軟件Creo功能強(qiáng)大,開放性好,是國內(nèi)企業(yè)進(jìn)行產(chǎn)品設(shè)計的主要三維設(shè)計軟件之一[3-6]。Creo具有強(qiáng)大的二次開發(fā)功能,其開發(fā)方法靈活多樣。Creo提供了Creo/Toolkit、VBAPI、J-Link、Web-link等多種二次開發(fā)工具包[7-10]。盡管Creo提供如此眾多的二次開發(fā)工具包,但上述工具分別對應(yīng)C/C++、Basic、Java以及JavaScript等常用開發(fā)語言,Creo并未提供使用Python進(jìn)行二次開發(fā)的工具包,目前也未見使用Python對Creo進(jìn)行二次開發(fā)的相關(guān)文獻(xiàn)。

        本文根據(jù)近年來實(shí)際工作中取得的開發(fā)經(jīng)驗(yàn),闡述如何使用Python對Creo進(jìn)行二次開發(fā),以期將Python強(qiáng)大的功能引入Creo二次開發(fā),同時降低Creo二次開發(fā)的難度。

        1 開發(fā)環(huán)境配置

        1.1 開發(fā)思路

        由于Creo沒有提供專門用于Python的開發(fā)工具包,所以只能考慮借用現(xiàn)有的開發(fā)工具包。VBAPI實(shí)際是對Creo二次開發(fā)函數(shù)的COM封裝,所以一般Windows下可以調(diào)用COM組件的語言其實(shí)都可以利用VBAPI進(jìn)行Creo的二次開發(fā)。Python可以使用一個第三方庫win32com操作COM對象,故Python可以利用VBAPI二次開發(fā)工具包進(jìn)行二次開發(fā),開發(fā)結(jié)構(gòu)示意圖如圖1所示。

        1.2VBAPI環(huán)境配置

        VBAPI配置相較Creo/Toolkit簡單,安裝完成后只需進(jìn)行以下2步即可:

        1) 添加PRO_COMM_MSG_EXE到環(huán)境變量。變量值填寫pro_comm_msg.exe所在的路徑加文件全名,pro_comm_msg.exe位于Creo安裝目錄的“CommonFiles\datecode\machinetype\obj”下。

        2) 注冊COM服務(wù)器。以管理員權(quán)限運(yùn)行Creo安裝目錄下子目錄“Parametric/bin”中的vb_api_register.bat文件即可。

        1.3Python環(huán)境配置

        主要是安裝和配置win32com模塊,關(guān)鍵步驟如下:

        1) 安裝win32com模塊。在命令行中運(yùn)行如下代碼即可:

        python -m pip install pypiwin32

        2) 生成VB API工具包的中間層,保證python可以順利調(diào)用VB API。首先運(yùn)行Python安裝目錄下子目錄“Lib\site-packages\win32com\client\”的makepy.py程序,彈出如圖2所示的對話框。選擇“Creo VB API Type Library Creo Parametric”點(diǎn)擊OK按鈕即可生成。系統(tǒng)會提示在臨時目錄生成了形如“176453F2-6934-4304-8C9D-126D98C1700Ex0x1x0.py”的文件,一些關(guān)鍵的函數(shù)和變量、常量等信息均記錄在此文件中。

        2 關(guān)鍵開發(fā)技術(shù)

        2.1 關(guān)鍵類的處理

        VB API采用面向?qū)ο蟮姆椒▽REO操作進(jìn)行了封裝,在編寫程序過程中只需調(diào)用這些類即可。VB API幫助文檔中指出,這些類的主要類型[10]包括:

        1) Creo Parametric-Related Classes。形似IpfcXXX的類。這些類不能用New關(guān)鍵詞進(jìn)行初始化,只能通過程序中已創(chuàng)建或列出對象的方法獲得對應(yīng)的句柄進(jìn)行賦值初始化。

        2) Module-Level Classes。形似CMpfcXXX的類。包含靜態(tài)方法用于初始化某些VB對象。

        3) Compact Data Classes。形似CCpfcXXX的類。這些類只用于存儲數(shù)據(jù)。主要用于存儲和處理VB API中方法的返回數(shù)據(jù)。

        4) Enumeration Classes。枚舉類。

        此外,還有Array Classes、Sequence Classes等數(shù)據(jù)結(jié)構(gòu)類用于存儲相關(guān)數(shù)據(jù)。

        Creo Parametric-Related Classes和Module-Level Classes類用于初始化相關(guān)選項(xiàng)、獲得Creo的相關(guān)數(shù)據(jù)以及獲得Creo Parametric-Related Classes對象,在Python中使用win32com.client.Dispatch(uuid)方法生成。Dispatch的參數(shù)uuid可以在前文所述使用makepy.py生成的文件中查找得到。

        Creo Parametric-Related Classes類似C語言的指針的概念,對其操作相當(dāng)于直接操作CREO的內(nèi)存數(shù)據(jù),只能通過Creo Parametric-Related Classes或Module-Level Classes的方法或?qū)傩垣@得。

        Enumeration Classes為枚舉類型,其值也可以makepy.py生成的文件中查找得到。

        2.2 類的繼承

        Python為動態(tài)類型的語言,子類調(diào)用父類的屬性方法無須進(jìn)行類型轉(zhuǎn)換,直接調(diào)用即可。此外,Python可以自動實(shí)現(xiàn)VB API中的多次類型轉(zhuǎn)換。例如IpfcSolid的父類分別為IpfcModel和IpfcFamliyTableRow,當(dāng)系統(tǒng)獲得一個IpfcModel對象時,如果能夠確定也是Ipfcsolid對象,則該對象可以直接調(diào)用IpfcFamliyTableRow類的屬性和方法,無須像VB那樣經(jīng)過多次顯式類轉(zhuǎn)換。

        3 應(yīng)用實(shí)例

        以批量添加和清空零件關(guān)系為例,對本文介紹的方法進(jìn)行驗(yàn)證。Python為3.7,Creo版本為2.0。首先按照前文配置好環(huán)境。根據(jù)官方文檔,啟動Creo會話只需調(diào)用CCpfcAsyncConnection.Start方法即可生成Creo會話對象。在win32com生成的文件中查找CCpfcAsyncConnection的uuid為{456E0110-2031-3907-AFE5-9201C97A915E},故啟動Creo會話關(guān)鍵代碼如下:

        cAC=client.Dispatch('{456E0110-2031-3907-AFE5-9201C97A915E}')

        AsyncConnection = cAC.Start(creoapp, '') #creoapp為creo路徑

        啟動會話后,需要枚舉目錄包含的零件,關(guān)鍵代碼如下:

        files = AsyncConnection.Session.ListFiles("*.prt", EpfcFILE_LIST_LATEST, INPUT_DIR)

        修改關(guān)系需要將文件加載到內(nèi)存中。CCpfcModelDescriptor和CCpfcRetrieveModelOptions類主要用于生成打開文件的選項(xiàng),利用Creo會話對象的RetrieveModelWithOpts調(diào)用這兩個對象即可實(shí)現(xiàn)將零件加載到內(nèi)存中,關(guān)鍵代碼如下:

        ModelDescriptor = client.Dispatch(‘{74D4E90E-031B-3734-8CE1-36D5730A6728})

        descmodel=ModelDescriptor.Create(1, '', None)

        descmodel.Path=files.Item(i)#files.Item(i)為要導(dǎo)出文件路徑

        RetrieveModelOptions=client.Dispatch('{2264B49E-C652-384F-AB53-71B57DA275BE}')

        options=RetrieveModelOptions.Create()

        options.AskUserAboutReps = False

        model=AsyncConnection.Session.RetrieveModelWithOpts(descmodel, options)

        加載到內(nèi)存的model為IpfcModel對象,如前文所述,Python可以無須類型轉(zhuǎn)換,對象直接調(diào)用IpfcRelationOwner類的方法即可完成相關(guān)關(guān)系的操作。添加關(guān)系代碼如下:

        originrels = model.Relations

        for j in range(0, originrels.Count):

        relations.Append(originrels.Item(j))

        for line in rel_contents:

        relations.Append(line)

        model.Relations = relations

        刪除關(guān)系代碼如下:

        model.DeleteRelations()

        使用Python自帶的tkinter組件完成界面設(shè)計,最終開發(fā)的工具如圖3所示。用戶點(diǎn)擊按鈕即可完成功能。

        4 結(jié)束語

        本文探討了使用Python二次開發(fā)Creo的方法和關(guān)鍵技術(shù),實(shí)現(xiàn)了Python與Creo的集成開發(fā)。利用本文方法,降低了開發(fā)難度,提高了開發(fā)效率,有助于相關(guān)領(lǐng)域的推廣應(yīng)用。

        參考文獻(xiàn):

        [1] 董付國.Python可以這樣學(xué)[M].北京:清華大學(xué)出版社,2017.

        [2] 姚建盛,李淑梅.Python在科學(xué)計算中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2016(11):76.

        [3] 王恒,寧汝新,張旭,等.利用MFC二次開發(fā)Pro/E[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2004,16(6):869-872.

        [4] 臧巖. 基于Pro/E的注塑模架的參數(shù)化設(shè)計及開發(fā)[D]. 鄭州: 河南工業(yè)大學(xué), 2016.

        [5] 張文彬,沈精虎,姜兆康.基于Creo二次開發(fā)的零件參數(shù)化變型設(shè)計[J].微型電腦應(yīng)用,2018,34(2):48-50,54.

        [6] 李潤泉,郭俊卿.基于Creo二次開發(fā)的模具標(biāo)準(zhǔn)件參數(shù)化變型設(shè)計[J].農(nóng)機(jī)使用與維修,2018(12):4-5.

        [7] 李世國.Pro/TOOLKIT程序設(shè)計[M].北京:機(jī)械工業(yè)出版社,2003.

        [8] Parametric Technology Corporation. Creo Parametric 2.0 Web-Link Users Guide[M]. USA: PTC, 2012.

        [9] Parametric Technology Corporation. Creo Parametric 2.0 J-Link Users Guide[M]. USA: PTC, 2012.

        [10] ParametricTechnologyCorporation.CreoParametric2.0VBAPIUsersGuide[M].USA:PTC,2012.

        【通聯(lián)編輯:唐一東】

        猜你喜歡
        二次開發(fā)
        淺談基于Revit平臺的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
        基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
        成在线人视频免费视频| 我爱我色成人网| 台湾佬娱乐中文22vvvv| 就国产av一区二区三区天堂| 久久亚洲国产高清av一级| 中文字幕人妻少妇久久| 国产高清在线一区二区不卡| 疯狂的欧美乱大交| 精品人妻少妇一区二区不卡| 久久人妻av不卡中文字幕| 一区二区三区午夜视频在线| 亚洲热妇无码av在线播放| 中文亚洲日韩欧美| av福利资源在线观看| 日本高清一级二级三级| 天堂aⅴ无码一区二区三区| 97福利视频| 日韩一区二区av伦理| 高h小月被几个老头调教| 在教室伦流澡到高潮h麻豆 | 久久老子午夜精品无码怎么打| 亚洲成a人片在线观看导航| 一区二区亚洲精品国产精| 蜜臀av在线播放一区二区三区| 欧美极品少妇性运交| 国产精品一区二区三密桃| 久久国产精品亚洲va麻豆| 久久久无码人妻精品一区| 久久狠色噜噜狠狠狠狠97| 亚洲中文中文字幕乱码| 亚洲av久久久噜噜噜噜 | 欧美日韩综合在线视频免费看| 蜜桃av中文字幕在线观看| 啦啦啦中文在线观看日本| 欧美在线综合| 亚洲蜜臀av一区二区三区漫画| 少妇夜夜春夜夜爽试看视频| 97免费人妻在线视频| 国产精品人人爱一区二区白浆| 国产成人av三级三级三级在线| 国产av无码国产av毛片|