999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人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ū)ο蟮摹討B(tài)的、解釋型程序設(shè)計(jì)語言,經(jīng)過十幾年的發(fā)展,以其短小精悍的語法以及高效的開發(fā)、簡單入門的特點(diǎn)逐漸成為主流程序設(shè)計(jì)語言。Python更接近人的自然語言,易學(xué),更適合非計(jì)算機(jī)專業(yè)科研人員。因此,Python當(dāng)前已經(jīng)成為眾多科研領(lǐng)域的科學(xué)計(jì)算工具。Python提供了NumPy等眾多程序庫,已經(jīng)成為眾多科研領(lǐng)域的科學(xué)計(jì)算工具[1-2]。

三維軟件Creo功能強(qiáng)大,開放性好,是國內(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ā)工具包,但上述工具分別對應(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è)計(jì),最終開發(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é)計(jì)算中的應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2016(11):76.

[3] 王恒,寧汝新,張旭,等.利用MFC二次開發(fā)Pro/E[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報,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] 李潤泉,郭俊卿.基于Creo二次開發(fā)的模具標(biāo)準(zhǔn)件參數(shù)化變型設(shè)計(jì)[J].農(nóng)機(jī)使用與維修,2018(12):4-5.

[7] 李世國.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平臺的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門子Operate高級編程的旋轉(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ā)
主站蜘蛛池模板: 国产一区二区福利| 中文字幕有乳无码| 孕妇高潮太爽了在线观看免费| 国产资源站| 免费精品一区二区h| 香蕉久人久人青草青草| 久爱午夜精品免费视频| av免费在线观看美女叉开腿| 国产在线视频导航| 国产欧美视频综合二区| 毛片大全免费观看| 亚洲高清国产拍精品26u| 无码 在线 在线| 97se亚洲综合不卡| 最新国产高清在线| 欧美国产综合视频| 国产精品区网红主播在线观看| 操国产美女| 国产一区二区三区免费观看| 久久综合色播五月男人的天堂| 91精品人妻一区二区| 欧美国产日韩在线| 亚洲欧美成人网| 99热这里只有精品在线观看| 99视频在线精品免费观看6| 国产色婷婷| 99ri精品视频在线观看播放| 亚洲国产天堂久久综合| 有专无码视频| 免费看的一级毛片| 二级毛片免费观看全程| 一本大道香蕉久中文在线播放| 青草娱乐极品免费视频| 伊人网址在线| 国产精品欧美在线观看| 国产毛片高清一级国语 | 四虎影院国产| 国产在线观看精品| 日韩免费中文字幕| 国产内射在线观看| 久久久久亚洲AV成人人电影软件| 国产原创自拍不卡第一页| 激情在线网| 丁香六月激情综合| 亚洲av综合网| 欧美三級片黃色三級片黃色1| 欧美亚洲日韩不卡在线在线观看| www.日韩三级| a毛片在线免费观看| 国产亚洲欧美日韩在线观看一区二区 | 国产成人亚洲毛片| 日韩高清一区 | 国产杨幂丝袜av在线播放| 老司机久久99久久精品播放| 永久成人无码激情视频免费| 久久婷婷六月| 亚洲国内精品自在自线官| 精品无码日韩国产不卡av| 色妞www精品视频一级下载| 国产精品福利在线观看无码卡| 日韩人妻少妇一区二区| 99在线观看免费视频| 国产成人无码播放| 亚洲综合色在线| 999国内精品视频免费| 一级毛片在线直接观看| 成人91在线| 国产精品女熟高潮视频| 激情乱人伦| 一级香蕉人体视频| 国产爽爽视频| 亚洲欧美在线综合一区二区三区 | 国产极品粉嫩小泬免费看| 亚洲欧美激情另类| 午夜一级做a爰片久久毛片| 亚洲无线国产观看| 99性视频| 国产在线精品网址你懂的| 亚洲无线国产观看| 色老头综合网| 中文字幕在线视频免费| 55夜色66夜色国产精品视频|