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

基于ExcelVBA對(duì)Creo進(jìn)行異步模式下的二次開(kāi)發(fā)

2019-05-24 14:12:12張文曉
電腦知識(shí)與技術(shù) 2019年7期
關(guān)鍵詞:二次開(kāi)發(fā)

張文曉

摘要:本文主要介紹了如何在Excel中利用VBA對(duì)Creo進(jìn)行簡(jiǎn)單的異步模式下的二次開(kāi)發(fā),并結(jié)合工程實(shí)例,具體說(shuō)明了如何批量提取模型中的材料、重量、長(zhǎng)、寬、厚等尺寸。

關(guān)鍵詞:Excel;VBA;Creo;二次開(kāi)發(fā);異步模式;提取鈑金展平件質(zhì)量屬性;

中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2019)07-0212-03

Abstract: This article mainly introduced how to use VBA in Excel to do the secondary development in simple asynchronous mode for Creo, and take an engineering example shows how to achieve the batch extraction of material, weight, size, length, width, thickness from models.

Key words: Excel; VBA; Creo; Secondary Development; Asynchronous Mode; Extract the material properties from sheet metal flat

在產(chǎn)品研發(fā)過(guò)程中,工程師很多時(shí)候要處理大量的模型、數(shù)據(jù),有時(shí)是將數(shù)據(jù)導(dǎo)入三維軟件用于生成模型,有時(shí)是從三維模型中提取數(shù)據(jù),用于統(tǒng)計(jì)、分析、計(jì)算。很多時(shí)候,三維軟件本身并沒(méi)有合適的功能來(lái)實(shí)現(xiàn)特定地操作,因此,企業(yè)往往需要根據(jù)自己的具體需求,進(jìn)行二次開(kāi)發(fā),以便提高效率。以Creo軟件為例,PTC公司提供了豐富的二次開(kāi)發(fā)API,如Pro/Toolkit,J-Link(Java),VB API等。其中在國(guó)內(nèi)應(yīng)用最廣泛的是Pro/Toolkit。

同時(shí),開(kāi)發(fā)模式也可以分為同步模型、異步模式。同步模式是指開(kāi)發(fā)插件隨Creo一起啟動(dòng),不能單獨(dú)運(yùn)行。異步模式是指二次開(kāi)發(fā)程序可以不與Creo一起運(yùn)行,而是獨(dú)立運(yùn)行之后再調(diào)用Creo,建立數(shù)據(jù)通信。目前,國(guó)內(nèi)的Creo二次開(kāi)發(fā)的一般都是在同步模型下進(jìn)行。

那么,是不是一定要基于Protoolkit并在同步模式下二次開(kāi)發(fā)呢?其實(shí)對(duì)于一些工程問(wèn)題,可以簡(jiǎn)化地在Excel中利用VBA進(jìn)行開(kāi)發(fā)。本文將通過(guò)工程實(shí)例,詳述開(kāi)發(fā)過(guò)程以及對(duì)比此開(kāi)發(fā)模式與其他開(kāi)發(fā)模式的優(yōu)缺點(diǎn)。

1 開(kāi)發(fā)環(huán)境簡(jiǎn)介

在Excel中通過(guò)VBA進(jìn)行二次開(kāi)發(fā),實(shí)際是利用Creo Parametric提供的VB API中的一些開(kāi)發(fā)接口來(lái)接入Creo Parametric。同時(shí),利用OLE objects操作模型以及從模型中獲取數(shù)據(jù)。

具體地,就是在Excel VBA中引用VB API,并用CCpfcConnectionId.Create() and CCpfcAsyncConnection.ConnectById()兩個(gè)函數(shù)建立Excel和Creo之間的連接。后續(xù),再通過(guò)VB API里的一些函數(shù)和方法,調(diào)用Creo模型,提取模型中的參數(shù)、尺寸,同時(shí)也可以對(duì)模型本身進(jìn)行打開(kāi)、另存、檢入、檢出等操作。

2 Creo VB API基礎(chǔ)知識(shí)

2.1 引用VB API

首先需要?jiǎng)?chuàng)建一個(gè)對(duì) Creo VB API的引用。在Excel里按alt+F11進(jìn)入VBA代碼編輯器,點(diǎn)擊工具→引用,勾選“Creo VB API Type Library for Creo Parametric 4.0”。如下圖所示。

2.2 如何利用PTC給出的VB API指南

事實(shí)上PTC公司已經(jīng)給出了函數(shù)說(shuō)明以及豐富的示例代碼,供我們二次開(kāi)發(fā)時(shí)參考,如果我們妥善加以利用,能起到事倍功半的效果。下面介紹一下如何得到這些參考:

在Creo的安裝路徑下,找vbapi文件夾,筆者路徑為C:\ptc\Parametric4_M050\Creo 4.0\M050\Common Files\vbapi。

1) 其中vbug.pdf文檔是PTC公司提供的VB API用戶(hù)操作指南。如果你想實(shí)現(xiàn)某一功能的代碼,可以在此文檔里按照一定的關(guān)鍵詞檢索;

2) 打開(kāi)C:\ptc\Parametric4_M050\Creo 4.0\M050\Common Files\vbapi\vbapidoc路徑下的IESwing.html文件,可以得到VB API Creo Parametric 3.0 (VB) APIWizard,可以從中查找你要用的具體函數(shù);

3) 在C:\ptc\Parametric4_M050\Creo 4.0\M050\Common Files\vbapi\vbapi_examples里,可以找到PTC給出的實(shí)例代碼。大多數(shù)情況下,只需要在示例代碼里找到你所需的源代碼,進(jìn)行組合,就可以實(shí)現(xiàn)你的目的。

另外,進(jìn)入PTC公司的e-support論壇,也能找到一些文章和解決方案。

2.3 建立Excel與Creo的連接

如果Creo沒(méi)打開(kāi),可以用下面方式打開(kāi)Creo并建立Excel與Creo的鏈接:

Dim cAC As CCpfcAsyncConnection

Set cAC = New CCpfcAsyncConnection

Dim asyncConnection As IpfcAsyncConnection

Set asyncConnection = cAC.Start("C:\ptc\Parametric4_M050\Creo 4.0\M050\Parametric\bin\ parametric.exe " + " -g:no_graphics -i:rpc_input", ".")

如果Creo已經(jīng)打開(kāi),則可以用下面方式建立二者之間的鏈接:

Dim cAC As CCpfcAsyncConnection

Dim asyncConnection As IpfcAsyncConnection

Dim session As IpfcBaseSession

Set cAC = New CCpfcAsyncConnection

Set asyncConnection = cAC.Connect(Null, Null, Null, Null)

Set session = asyncConnection.session

注意,如果代碼運(yùn)行過(guò)程中,出現(xiàn)"Microsoft Office Excel is waiting for another application to complete an OLE action"報(bào)錯(cuò),說(shuō)明Excel調(diào)用Creo進(jìn)程的時(shí)間,比Excel許用的等待時(shí)間長(zhǎng),所以出現(xiàn)提示。解決方案是——最好提前打開(kāi)Creo,并登陸PDM系統(tǒng)(筆者用的是windchill),然后再建立連接。

3 工程實(shí)例:從模型中提取參數(shù)、輪廓尺寸及質(zhì)量屬性

3.1 總則

我們?cè)谠O(shè)計(jì)鈑金件的時(shí)候,往往需要提取鈑金件的展平尺寸、材料以及質(zhì)量屬性,以便進(jìn)行原材料用量預(yù)估、噴涂面積計(jì)算、重量計(jì)算、以及成本核算。對(duì)于單個(gè)零件,在Creo里雖然可以獲取上述參數(shù),但對(duì)于多個(gè)零件無(wú)法做到上述參數(shù)的批量導(dǎo)出。

3.2 建立Excel與Creo之間的連接

基于2.3所述,本實(shí)例選擇先打開(kāi)Creo然后再建立Excel與Creo間的鏈接。具體代碼參考2.3,不再重復(fù)。

3.3 獲取模型句柄

在建立了Excel和Creo之間的連接之后,需要獲取某一模型的句柄,然后再對(duì)模型進(jìn)行例如提取參數(shù)等操作。具體的代碼如下:

Dim descModel As IpfcModelDescriptor

Dim descModelOpen As CCpfcModelDescriptor

Dim model As IpfcModel

Dim CurrentModels As IpfcModels

filename = mysheet.Range("A" & i).Value & "_flat1.prt"

Set descModelOpen = New CCpfcModelDescriptor

On Error Resume Next

Set descModel = descModelOpen.CreateFromFileName(filename)

session.OpenFile(descModel).Activate

Set model = session.CurrentModel

If model Is Nothing Then

mysheet.Range("G" & i) = "Model Open Fail"

GoTo ModelOpenErr

End If

注意,最后4行代碼,是用于容錯(cuò)。例如,批量處理多個(gè)零件時(shí),如果用戶(hù)用戶(hù)給出的其中一個(gè)模型名稱(chēng)有誤,如果不加最后4行代碼,會(huì)造成程序運(yùn)行報(bào)錯(cuò)中斷。加入這4行代碼,程序可以輸出用戶(hù)預(yù)設(shè)錯(cuò)誤信息,并得以繼續(xù)運(yùn)行。

3.4 提取模型的質(zhì)量屬性

讀取模型中的質(zhì)量屬性,用到的是Solid類(lèi)下面的GetMassProperty函數(shù)。而我們?cè)?.3中獲取的是Model句柄,Model類(lèi)中并沒(méi)有GetMassProperty函數(shù),因此我們要將進(jìn)程中的Model句柄轉(zhuǎn)化為Solid句柄。這里,讀者需要首先讀2.2中提及的PTC的用戶(hù)指南,了解Creo VB API中Model和Solid的區(qū)別。簡(jiǎn)而言之,Model可以是模型或者圖紙,Solid特指Part或者assembly,Solid是從Model中繼承的類(lèi)。基于這個(gè)特性,我們事實(shí)上可以用Set mysolid = session.CurrentModel直接將當(dāng)前模型轉(zhuǎn)換為Solid類(lèi)型,然后用GetMassProperty函數(shù)獲取質(zhì)量屬性。具體代碼如下:

Dim mysolid As pfcls.IpfcSolid

Dim solidProperties As IpfcMassProperty

Set mysolid = session.CurrentModel

Set solidProperties = mysolid.GetMassProperty("DEF_CSYS")

Weight = solidProperties.Mass

本文中只提取了質(zhì)量一個(gè)參數(shù),讀者還可以通過(guò)獲取solidProperties里的其他屬性,提取例如重心、慣性矩等其他數(shù)據(jù)。

3.5 獲取模型的材料和壁厚

在Creo模型中,已經(jīng)預(yù)設(shè)了材料、厚度參數(shù),當(dāng)用戶(hù)建模的時(shí)候,系統(tǒng)會(huì)對(duì)這兩個(gè)參數(shù)自動(dòng)賦值。所以獲取模型的材料,技術(shù)上,就是讀取模型中的代表材料、厚度的參數(shù)的值。這一過(guò)程,首先是利用 GetParam(參數(shù)名)獲取參數(shù)句柄,然后利用GetScaledValue函數(shù)獲取具體的數(shù)值。示例代碼如下:

Dim myMat As IpfcParameter, myThick As IpfcParameter

Dim myParaOwner As IpfcParameterOwner

Set myParaOwner = model

Set myMat = myParaOwner.GetParam("PTC_MATERIAL_NAME")

Set myThick = myParaOwner.GetParam("SMT_THICKNESS")

Set myMat_val = myMat.GetScaledValue

Material = myMat_val.StringValue

Set myThick_val = myThick.GetScaledValue

WallThick = myThick_val.DoubleValue

3.6 獲取鈑金展平件的長(zhǎng)、寬尺寸

提取鈑金展平件的長(zhǎng)、寬尺寸,大體上有兩種方式:

1) 如果你的展平模型,是嚴(yán)格利用Creo中的Flat Pattern特征建立的

a. 系統(tǒng)會(huì)自動(dòng)生成兩個(gè)長(zhǎng)、寬參數(shù),讀者可以在展平件的Flat Pattern 1特征中找到這兩個(gè)參數(shù)。如下圖所示:

b. 然后可以如3.5中所提及的方式,首先獲取模型句柄,然后獲取Flat Pattern1特征句柄,最后,或者此特征下的SMT_FLAT_PATTERN_WIDTH和SMT_FLAT_PATTERN_LENGTH兩個(gè)參數(shù)的值。

2) 如果你的展平模型,不是利用Creo中的Flat Pattern特征建立的,而是用Unbend特征建立的。那么就不能用提取參數(shù)值的方法了,因?yàn)橛肬nbend系統(tǒng)不會(huì)自動(dòng)生成兩個(gè)長(zhǎng)、寬參數(shù)。

c. 此時(shí)可以用Solid類(lèi)下的GeomOutline函數(shù),獲取模型的輪廓,其實(shí)是獲取兩個(gè)端點(diǎn)的坐標(biāo)值;

d. 然后利用兩點(diǎn)的坐標(biāo)值,換算出長(zhǎng)度、寬度,輸出;

e. 代碼如下:

Dim myoutline As IpfcOutline3D

Set myoutline = mysolid.GeomOutline

Dim X1 As Double, Y1 As Double, Z1 As Double

Dim X2 As Double, Y2 As Double, Z2 As Double

X1 = myoutline.Item(0).Item(0)

Y1 = myoutline.Item(0).Item(1)

Z1 = myoutline.Item(0).Item(2)

X2 = myoutline.Item(1).Item(0)

Y2 = myoutline.Item(1).Item(1)

Z2 = myoutline.Item(1).Item(2)

LWT(0) = Abs(X1 - X2): LWT(1) = Abs(Y1 - Y2): LWT(2) = Abs(Z1 - Z2)

Flat_L = Application.WorksheetFunction.Max(Abs(X1 - X2), Abs(Y1 - Y2), Abs(Z1 - Z2))

Flat_W = Application.WorksheetFunction.Small(LWT, 2)

4 優(yōu)勢(shì)與不足

綜上所述,我們就完成了在Excel中實(shí)現(xiàn)對(duì)Creo的簡(jiǎn)單的二次開(kāi)發(fā)。下面簡(jiǎn)要對(duì)比一下在Excel中進(jìn)行Creo簡(jiǎn)單異步模式下二次開(kāi)發(fā),和Creo Toolkit的優(yōu)缺點(diǎn):

5 展望

本文只是舉了一個(gè)簡(jiǎn)單的例子,論述了如何在VBA對(duì)Creo進(jìn)行二次開(kāi)發(fā)。事實(shí)上,我們還可以用類(lèi)似的方式,做很多其他更“酷”的操作。比如:我們可以批量導(dǎo)出PDF、IGES等,也可以批量將數(shù)據(jù)導(dǎo)入Creo創(chuàng)建模型,也可以批量地操作模型檢入、檢出等。總之,只要VB API中提供了接口的功能,我們都能用這種方式實(shí)現(xiàn)。

6 結(jié)論

本文主要闡述了如何基于VBA,實(shí)現(xiàn)Excel和Creo之間的數(shù)據(jù)交互,實(shí)現(xiàn)對(duì)Creo的簡(jiǎn)單二次開(kāi)發(fā)。

然而,本文所述的工程實(shí)例只是一個(gè)簡(jiǎn)單示范,但愿能拋磚引玉,給讀者提供一種思維方式,讓讀者能夠根據(jù)自己的需求,設(shè)計(jì)自己的應(yīng)用程序,使工作變得更加得心應(yīng)手。

參考文獻(xiàn):

[1] Parametric Technology Corporation. PTC VB API幫助文檔.USA:PTC, 2018.

[2] 張繼春. ProΠENGINEER二次開(kāi)發(fā)實(shí)用教程[M]. 北京:北京大學(xué)出版社,2003.

【通聯(lián)編輯:梁書(shū)】

猜你喜歡
二次開(kāi)發(fā)
淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
西門(mén)子Operate高級(jí)編程的旋轉(zhuǎn)坐標(biāo)系二次開(kāi)發(fā)
淺談Mastercam后處理器的二次開(kāi)發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
基于C#的AutoCAD建筑構(gòu)件庫(kù)二次開(kāi)發(fā)
江西建材(2018年2期)2018-04-14 08:01:14
西門(mén)子Easy Screen對(duì)倒棱機(jī)床界面二次開(kāi)發(fā)
基于全站儀二次開(kāi)發(fā)的覆冰厚度測(cè)量與實(shí)現(xiàn)
Micaps3.2 版本二次開(kāi)發(fā)入門(mén)淺析
西藏科技(2015年12期)2015-09-26 12:13:51
基于VB的ANSYS二次開(kāi)發(fā)在變壓器抗短路性能分析中的應(yīng)用
基于CATIA的橡皮囊成形毛料展開(kāi)的二次開(kāi)發(fā)
ANSYS Workbench二次開(kāi)發(fā)在汽車(chē)穩(wěn)定桿CAE分析中的應(yīng)用
主站蜘蛛池模板: 亚洲日本一本dvd高清| 久久国产亚洲欧美日韩精品| 亚洲av日韩av制服丝袜| 色婷婷在线影院| 一级做a爰片久久免费| 一级毛片在线播放免费| 国产精品任我爽爆在线播放6080| 五月天综合网亚洲综合天堂网| 欧美日韩福利| 伊人无码视屏| 国产精品自拍露脸视频| 毛片在线播放a| 国产精品主播| 亚洲精品va| 三上悠亚一区二区| 真人免费一级毛片一区二区| 国产成人无码久久久久毛片| 91热爆在线| 亚洲女同欧美在线| 国产精品不卡永久免费| 亚洲高清无码久久久| 欧美特黄一免在线观看| 亚洲色欲色欲www在线观看| 欧美在线综合视频| 精品无码专区亚洲| 久久久亚洲色| 亚洲综合色婷婷中文字幕| 欧美日韩理论| 中文字幕欧美日韩高清| 国产精品久久久久久影院| 久久99精品国产麻豆宅宅| 伊人成人在线视频| 青青草原偷拍视频| 又黄又爽视频好爽视频| 一级毛片免费观看不卡视频| 91年精品国产福利线观看久久 | 少妇被粗大的猛烈进出免费视频| 国产精品尹人在线观看| 亚洲精品无码人妻无码| 久久国产乱子| 精品一区二区三区自慰喷水| 国产成人精品男人的天堂下载| 国产香蕉一区二区在线网站| 天天色天天操综合网| 久久人妻系列无码一区| 伊人天堂网| 亚洲欧洲日产国码无码av喷潮| 久久精品66| 午夜免费小视频| 999精品色在线观看| 欧美一级高清免费a| 一区二区三区高清视频国产女人| 国产精品片在线观看手机版| 国产高清自拍视频| 国产精品一区在线麻豆| 新SSS无码手机在线观看| 亚洲日韩精品无码专区97| 国产三区二区| 国产成人永久免费视频| 国产亚洲成AⅤ人片在线观看| www.91中文字幕| 亚洲嫩模喷白浆| 亚洲中文字幕手机在线第一页| 在线观看亚洲成人| 国产一级做美女做受视频| 亚洲欧美国产五月天综合| 久久久久免费精品国产| 91欧美在线| 亚洲AV电影不卡在线观看| 亚洲国产成人无码AV在线影院L| 丝袜久久剧情精品国产| 日韩福利视频导航| 激情在线网| 日韩高清一区 | 亚洲精品福利网站| 国产91在线免费视频| 国产成人高清精品免费5388| 丁香婷婷久久| 亚洲国产成人精品青青草原| 青青久久91| 久久久久久久久久国产精品| 国产精品视频久|