999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

胡迪 羅輝

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

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

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

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

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

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

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

1.1 開發(fā)思路

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

1.2VBAPI環(huán)境配置

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

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

2) 注冊(cè)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所示的對(duì)話框。選擇“Creo VB API Type Library Creo Parametric”點(diǎn)擊OK按鈕即可生成。系統(tǒng)會(huì)提示在臨時(shí)目錄生成了形如“176453F2-6934-4304-8C9D-126D98C1700Ex0x1x0.py”的文件,一些關(guān)鍵的函數(shù)和變量、常量等信息均記錄在此文件中。

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

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

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

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

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

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

4) Enumeration Classes。枚舉類。

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

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

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

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

2.2 類的繼承

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

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

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

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

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

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

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

修改關(guān)系需要將文件加載到內(nèi)存中。CCpfcModelDescriptor和CCpfcRetrieveModelOptions類主要用于生成打開文件的選項(xiàng),利用Creo會(huì)話對(duì)象的RetrieveModelWithOpts調(diào)用這兩個(gè)對(duì)象即可實(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對(duì)象,如前文所述,Python可以無(wú)須類型轉(zhuǎn)換,對(duì)象直接調(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è)計(jì),最終開發(fā)的工具如圖3所示。用戶點(diǎn)擊按鈕即可完成功能。

4 結(jié)束語(yǔ)

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

參考文獻(xiàn):

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

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

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

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

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

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

[7] 李世國(guó).Pro/TOOLKIT程序設(shè)計(jì)[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平臺(tái)的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開發(fā)
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
Micaps3.2 版本二次開發(fā)入門淺析
西藏科技(2015年12期)2015-09-26 12:13:51
ANSYS Workbench二次開發(fā)在汽車穩(wěn)定桿CAE分析中的應(yīng)用
汽車零部件(2014年5期)2014-11-11 12:24:32
基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
主站蜘蛛池模板: 日本欧美在线观看| 99视频国产精品| 精品视频在线一区| 精品国产自| 欧美成人手机在线观看网址| 手机精品福利在线观看| 最新亚洲人成网站在线观看| 国产午夜精品一区二区三区软件| 国产一区成人| 亚洲天堂777| AV不卡在线永久免费观看| 欧美性精品| 国产成人夜色91| 在线精品亚洲一区二区古装| 欧美翘臀一区二区三区| 最新国产在线| 中文字幕第1页在线播| 亚洲天堂视频网站| 99热线精品大全在线观看| 亚洲精品欧美重口| 成人在线第一页| 久久久受www免费人成| 午夜在线不卡| 国产精品男人的天堂| 国产精品丝袜视频| 亚洲另类国产欧美一区二区| 国产91丝袜在线播放动漫| 一级毛片在线播放免费| www精品久久| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 99热这里只有免费国产精品 | 亚洲精品制服丝袜二区| 青青草久久伊人| 久草视频中文| 亚洲—日韩aV在线| 国内精品视频在线| 三区在线视频| 五月天丁香婷婷综合久久| 黄色三级毛片网站| 国产麻豆永久视频| 中文字幕久久亚洲一区| 色哟哟色院91精品网站| 深夜福利视频一区二区| 中文无码毛片又爽又刺激| 成人在线观看不卡| 国产永久在线观看| 日韩成人在线视频| 亚洲免费成人网| 亚洲国产成人无码AV在线影院L| 人妻熟妇日韩AV在线播放| 国产国语一级毛片| 成AV人片一区二区三区久久| 久久五月天综合| 国产真实乱了在线播放| 四虎永久在线| 日韩av高清无码一区二区三区| 国内老司机精品视频在线播出| a毛片在线免费观看| 波多野结衣久久精品| 亚洲综合亚洲国产尤物| 女人一级毛片| 最新无码专区超级碰碰碰| 在线日韩日本国产亚洲| 欧美午夜在线观看| 99伊人精品| 动漫精品啪啪一区二区三区| 1024你懂的国产精品| 亚洲欧美日本国产综合在线| 中文字幕一区二区视频| 色AV色 综合网站| 国产福利影院在线观看| 幺女国产一级毛片| 99久久99视频| 亚洲资源站av无码网址| 精品黑人一区二区三区| 中文字幕无码电影| 亚洲欧洲国产成人综合不卡| 国内精品久久久久鸭| 国产精品亚洲专区一区| 一级爆乳无码av| 99re热精品视频中文字幕不卡| 午夜啪啪福利|