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)用
主站蜘蛛池模板: 搞黄网站免费观看| 日本亚洲最大的色成网站www| 国产精品福利导航| 在线观看亚洲人成网站| 精品一区二区无码av| 欧美在线综合视频| 欧美性色综合网| 欧美色亚洲| 香蕉视频在线精品| 99在线国产| 男女男精品视频| 国产人在线成免费视频| 国产国产人免费视频成18| 波多野结衣第一页| 成人永久免费A∨一级在线播放| 亚洲婷婷六月| 22sihu国产精品视频影视资讯| 伊人久久综在合线亚洲91| 国产玖玖视频| 四虎成人在线视频| 超清无码一区二区三区| 亚洲天堂久久久| 亚洲无码精彩视频在线观看 | 国产福利一区视频| 少妇精品久久久一区二区三区| 真实国产乱子伦视频| 婷婷色中文| 精品无码一区二区三区电影| 99尹人香蕉国产免费天天拍| 四虎永久在线精品国产免费| 欧美日韩一区二区三| 色网在线视频| 亚洲—日韩aV在线| 婷婷伊人久久| 天堂av高清一区二区三区| 四虎国产精品永久一区| 女同久久精品国产99国| 亚洲视频影院| 亚洲精品波多野结衣| 亚洲二区视频| 亚洲欧美激情另类| 中文字幕色站| 伊人久久大线影院首页| 国产男女免费完整版视频| 亚洲国产91人成在线| 色综合a怡红院怡红院首页| 天堂网国产| 亚洲天堂自拍| 亚洲天堂日韩在线| 国产精品自在在线午夜| 亚洲天堂视频网站| 日韩欧美中文字幕在线精品| 国产永久在线视频| 91精品最新国内在线播放| 天堂岛国av无码免费无禁网站| 五月天福利视频| 狠狠干综合| 99伊人精品| 亚洲色图欧美激情| 中文字幕在线欧美| 乱人伦视频中文字幕在线| 亚洲国内精品自在自线官| 99久久免费精品特色大片| 国产成人一区免费观看 | 一本大道香蕉久中文在线播放| 第九色区aⅴ天堂久久香| 亚洲人成影院在线观看| 青青青视频蜜桃一区二区| 久久成人国产精品免费软件| 国产精品人人做人人爽人人添| 国产成人艳妇AA视频在线| 麻豆AV网站免费进入| 老司机精品一区在线视频| 91亚洲影院| 国产精品私拍在线爆乳| 国产精品成人不卡在线观看| 久久久久无码精品国产免费| 少妇精品网站| AV不卡在线永久免费观看| 欧美日韩综合网| 亚洲国产精品日韩av专区| 欧美成人区|