国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Creo二次開發(fā)實現(xiàn)AutoCAD布局圖參數(shù)化

2019-06-01 10:06張文曉
電腦知識與技術(shù) 2019年12期
關(guān)鍵詞:二次開發(fā)視圖代碼

張文曉

摘要:本文主要介紹了如何在Excel中利用VBA對Creo進(jìn)行簡單的異步模式下的二次開發(fā),實現(xiàn)任意模型的任意投影視圖的DWG文件自動導(dǎo)出,并且在AutoCAD里自動更新布局圖,從而實現(xiàn)二維布局圖的參數(shù)化。

關(guān)鍵詞:Excel;VBA;Creo;二次開發(fā);異步模式;AutoCAD布局圖參數(shù)化

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

文章編號:1009-3044(2019)12-0295-03

Parameterize AutoCAD layout Based on The Secondary Development in Creo

ZHANG Wen-xiao

(Ingersoll Rand Engineering Technology Center-Asia Pacific, Suzhou 215400, China)

Abstract: This article mainly introduced how to use VBA in Excel to do the secondary development in simple asynchronous mode for Creo, and achieve automatic export of DWG file of any view of model, and update the 2D drawing in AutoCAD to parameterize 2D layout.

Key words: Excel; VBA; Creo; Secondary Development; Asynchronous Mode; Parameterize 2D AutoCAD layout

為了引出本文主題,我們要首先討論一下制圖軟件。機(jī)械領(lǐng)域有一個形象的比喻,說圖紙是工程師的語言。那么制圖軟件無疑是工程師手里的重要工具。制圖軟件包括二維軟件、三維軟件,二維軟件和三維軟件各有各的特點,應(yīng)用于特定的場合。簡而言之,筆者以為二維軟件最大的特點是靈活,最大的缺點是無法參數(shù)化驅(qū)動。三維軟件最大的優(yōu)點是可以參數(shù)化驅(qū)動、三維模型用途廣泛,缺點是建模煩瑣、不易更改。

那么,什么時候用三維軟件?什么時候用二維軟件?

根據(jù)二者的特點,一般地,二維軟件很適合做前期方案的模擬,三維軟件適合后期做細(xì)節(jié)設(shè)計時建模、出圖。當(dāng)然,國內(nèi)很多廠家仍然用二維軟件來出圖。

既然二維軟件仍然大有用處,那么如果能綜合三維軟件參數(shù)化的特點,以及二維軟件靈活的特點,在三維軟件中參數(shù)化畫圖,然后批量轉(zhuǎn)換為二維圖,并在畫二維布局圖時引用這些自動導(dǎo)出的圖紙,那么就間接地實現(xiàn)二維布局圖的參數(shù)化,那么勢必在特定場合下會大大提高效率。

當(dāng)然二維圖參數(shù)化,可以在AutoCAD中通過編程實現(xiàn),但是,前提是必須針對某一特定結(jié)構(gòu)編程,這樣是無法做到通用的。下面,就以Creo和AutoCAD為例,說明如何結(jié)合三維軟件和二維軟件,實現(xiàn)任意結(jié)構(gòu)二維圖的參數(shù)化,并簡要說明在哪些場合應(yīng)用。

1在Creo中利用FamilyTable建立參數(shù)化模型

在Creo里利用FamilyTable批量地創(chuàng)建模型,是Creo參數(shù)化建模的重要功能。具體的操作方法網(wǎng)上或者PTC的幫助文檔里有大量的資料以及實例可以參考。此過程亦不是本文所要論述的重點,故而在此不再贅述,請讀者自行查找相關(guān)資料。

2在Excel中編程實現(xiàn)從Creo中導(dǎo)出DWG圖紙

2.1General

在此例中,Excel在Creo的二次開發(fā)過程中相當(dāng)于一個啟動器。除此之外,Excel表單里也存儲著待導(dǎo)出的模型名稱、導(dǎo)出DWG文件名、導(dǎo)出位置等程序需要的數(shù)據(jù),用于程序運行時讀取。

當(dāng)然,如果有必要,讀者可以在Visual studio中開發(fā)自己的可執(zhí)行的應(yīng)用程序,這樣就可以脫離excel單獨運行。但就實現(xiàn)本例中的目的而言,在Excel里操作是最簡單方式。

2.2開發(fā)環(huán)境簡介

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

具體地,就是在Excel VBA中引用VB API,并用CCpfcConnectionId.Create() and CCpfcAsyncConnection.ConnectById()兩個函數(shù)建立Excel和Creo之間的連接。后續(xù),再通過VB API里的一些函數(shù)和方法,調(diào)用Creo模型,針對模型實現(xiàn)后續(xù)操作。

2.3 Creo VB API基礎(chǔ)知識

2.3.1 引用VB API

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

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

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

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

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

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

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

2.4 建立Excel與Creo的連接

如果Creo沒打開,可以用下面方式打開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)打開,則可以用下面方式建立二者之間的鏈接:

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

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

2.5 由模板創(chuàng)建Creo工程圖并加載模型

首先我們應(yīng)建立一個圖紙模板,并在模板中設(shè)置好圖紙導(dǎo)出時視圖的默認(rèn)比例(建議設(shè)為1:1),線型等,以便導(dǎo)出的圖紙是我們預(yù)期的格式。如何建立圖紙模型本文不再贅述。

建好模板之后,我們將在代碼中,利用CreateDrawingFromTemplate函數(shù),按預(yù)先建好的模板創(chuàng)建Creo工程圖。具體代碼如下:

'Create drawing from template

Dim descModelOpen As CCpfcModelDescriptor

Set descModelOpen = New CCpfcModelDescriptor

Set modelDesc = descModelOpen.CreateFromFileName(solidName)

Call drawingOptions.Insert(0, EpfcDrawingCreateOption.

EpfcDRAWINGCREATE_DISPLAY_DRAWING)

Call drawingOptions.Insert(1, EpfcDrawingCreateOption.

EpfcDRAWINGCREATE_SHOW_ERROR_DIALOG)

Set drawing = session.CreateDrawingFromTemplate(drawingName, predefinedTemplate,

modelDesc, drawingOptions)

代碼中drawingOptions.Insert用來設(shè)置創(chuàng)建圖紙的選項。具體如何設(shè)置,讀者可以在本文的2.3.2中介紹的User guide或者在VB API Wizard中搜索關(guān)鍵字drawingOptions,根據(jù)自己的需求設(shè)置。

2.6 根據(jù)用戶選擇的view創(chuàng)建投影視圖

一個三維模型一般可以生成6個面的投影,即FRONT, BACK, LEFT, RIGHT, TOP, BOTTOM。

程序里可以留接口給用戶選擇要哪一個面的投影。在程序里,Creo實際是通過一個matrix矩陣來控制生成視圖的方向的。那么我們需要把用戶需求(投影面),轉(zhuǎn)化成程序語言(matrix矩陣)。具體實現(xiàn)的方法是:

1. 獲取用戶輸入的投影面(可以讀取Excel表格中特定單元格),如Front;

2. 獲取用戶投影的模型句柄;

3. 獲取模型類里,名字為Front的view的matrix矩陣;

4. Normalize此矩陣;

整個view創(chuàng)建過程示例代碼如下:

Dim myIpfcSheetOwner As IpfcSheetOwner

Set myIpfcSheetOwner = drawing

sheetNo = myIpfcSheetOwner.CurrentSheetNumber

Dim myIpfcModel2D As IpfcModel2D

Set myIpfcModel2D = drawing

Set solidModel = myIpfcModel2D.GetCurrentSolid

Set matrix = New CpfcMatrix3D

Dim viewOwner As IpfcViewOwner

Set viewOwner = solidModel

Dim ProjView As IpfcView

Set ProjView = viewOwner.GetView(ViewName)

Set matrix = ProjView.transform.matrix

Call NormalizeMatrix(matrix)

Dim CCtransF As CCpfcTransform3D

Set CCtransF = New CCpfcTransform3D

Set transF = CCtransF.Create(matrix)

Set pointLoc = New CpfcPoint3D

Call pointLoc.Set(0, 0):Call pointLoc.Set(1, 0):Call pointLoc.Set(2, 0)

Dim CCGeneralViewCreateInstructions As CCpfcGeneralViewCreateInstructions

Set CCGeneralViewCreateInstructions = New CCpfcGeneralViewCreateInstructions

Set genViewInstructions = CCGeneralViewCreateInstructions.Create(solidModel,

sheetNo, pointLoc, transF)

Set view2D = myIpfcModel2D.CreateView(genViewInstructions)

2.7 在代碼利用Creo中的MapKey將Creo工程圖導(dǎo)出為DWG圖紙

利用VB API將Creo工程圖導(dǎo)出為其他格式文件,大體上有兩種方式:

1.如果導(dǎo)出格式為PDF,DXF等格式,可以直接用函數(shù)IpfcModel.Export()導(dǎo)出,以導(dǎo)出DXF文件為例,代碼如下:

Dim model As IpfcModel

Set model = drawing

session.OpenFile(model.Descr).Activate

Dim dwginstructions As IpfcDXFExportInstructions

Dim exportInstructions As IpfcExportInstructions

Dim CCpfcDWG As CCpfcDXFExportInstructions

Set CCpfcDWG = New CCpfcDXFExportInstructions

Set dwginstructions = CCpfcDWG.Create()

Set exportInstructions = dwginstructions

Call model.Export(outdir & "\" & drawingName & ".dxf", exportInstructions)

2.如果導(dǎo)出格式為DWG,則不能用函數(shù)直接導(dǎo)出,因為VB的API里并沒有預(yù)留直接導(dǎo)出DWG文件的接口。此時,可以用在程序里運行宏代碼的方式實現(xiàn)。至于如何在程序中加入宏代碼,以及宏代碼在使用時的限制等,由于內(nèi)容較多,具體實現(xiàn)步驟筆者會在另外一篇文章里詳細(xì)敘述。在此只提供實例代碼如圖2。

2.8 拭除內(nèi)存,循環(huán)上述步驟

每次導(dǎo)出DWG文件之后,要清空內(nèi)存,以免運行下一張圖紙的時候,由于模型已經(jīng)在內(nèi)存中存在而造成沖突報錯。實現(xiàn)的方式依然可以用宏代碼。由于比較簡單,請讀者參照筆者的另一篇關(guān)于如何在代碼里使用宏代碼的文章自己編寫。

3 在AutoCAD布局圖里引用外部DWG圖紙

在布局圖里,Insert-DWG Reference,即可插入外部圖形參考。

當(dāng)設(shè)計方案有變動時,只需要更改Creo三維模型中的參數(shù)值,再運行一遍程序,即可導(dǎo)出更新之后的DWG圖紙。然后再重新打開布局圖的時候,參考外部的圖紙會自動更新,從而實現(xiàn)了整個布局的更新。這也是整個過程的原理所在。

至此,我們就實現(xiàn)了,二維布局圖的參數(shù)化。簡單總結(jié)一下就是利用:

a. 三維參數(shù)化建模

b. 二次開發(fā)程序批量導(dǎo)出投影視圖

c. 布局圖里插入外部參考引用

4 優(yōu)勢與不足

下面簡要說明用此方法創(chuàng)建參數(shù)化二維布局圖的優(yōu)勢與不足:

當(dāng)然有的讀者可能會問,那為什么不直接在三維軟件里生成布局圖?

首先,三維軟件里生成的布局圖不便于像在二維軟件里那樣快速地移動、復(fù)制、修改,從而使用戶可以快速地做一些裝配模擬。這也是引言里闡述的為什么用二維軟件創(chuàng)建布局圖的重要原因。其次,三維軟件里用族表創(chuàng)建視圖之后,需要逐一將模型加到圖形里,然后逐一創(chuàng)建視圖,才能看到所有方案的“全貌”。而用本文所述方法,只需要在二維布局圖中插入外部參考時,全選所有的備參考圖紙,即可一次性將所有圖紙都插入布局圖中。從而實現(xiàn)了,把三維模型中“藏”在族表下的層級并列的每個實例,平鋪到一張二維圖中,使用戶可以一眼看到所有的設(shè)計方案。

5 結(jié)論

結(jié)合上述這種方式的優(yōu)缺點,可以想見此工作方法很適合用于——當(dāng)需要在AutoCAD里畫大量布局圖,并且布局圖里的尺寸、結(jié)構(gòu)需要頻繁更改的場合。

當(dāng)然,這個方法有趣的地方在于,其用程序建立了數(shù)據(jù)-三維軟件-二維軟件之間的連接,可以使用戶更加自由、方便地獲取所需的二維視圖,應(yīng)用于設(shè)計過程。

最后,本文旨在給讀者提供一個設(shè)計思路和方法。鑒于篇幅有限,本文并沒有展示所有的技術(shù)細(xì)節(jié)(例如如何在familytable里建模、如何創(chuàng)建投圖模板、VB API和VBA中的代碼有何區(qū)別、如何控制投影視圖基點、比例、如何使用宏代碼等等),有一些讀者可以自行完成,編程相關(guān)部分留待其他文章中詳述。

參考文獻(xiàn):

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

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

[3] 張帆. AutoCAD VBA開發(fā)精彩實例教程[M]. 北京:清華大學(xué)出版社,2003.

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

猜你喜歡
二次開發(fā)視圖代碼
淺談基于Revit平臺的二次開發(fā)
淺談Mastercam后處理器的二次開發(fā)
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
西門子Easy Screen對倒棱機(jī)床界面二次開發(fā)
視圖
Y—20重型運輸機(jī)多視圖
SA2型76毫米車載高炮多視圖