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

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

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

張文曉

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

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

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

文章編號(hào):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)域有一個(gè)形象的比喻,說圖紙是工程師的語言。那么制圖軟件無疑是工程師手里的重要工具。制圖軟件包括二維軟件、三維軟件,二維軟件和三維軟件各有各的特點(diǎn),應(yīng)用于特定的場合。簡而言之,筆者以為二維軟件最大的特點(diǎn)是靈活,最大的缺點(diǎn)是無法參數(shù)化驅(qū)動(dòng)。三維軟件最大的優(yōu)點(diǎn)是可以參數(shù)化驅(qū)動(dòng)、三維模型用途廣泛,缺點(diǎn)是建模煩瑣、不易更改。

那么,什么時(shí)候用三維軟件?什么時(shí)候用二維軟件?

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

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

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

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

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

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

2.1General

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

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

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

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

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

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

2.3.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.3.2 如何利用PTC給出的VB API指南

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

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

其中vbug.pdf文檔是PTC公司提供的VB API用戶操作指南。如果你想實(shí)現(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

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

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

首先我們應(yīng)建立一個(gè)圖紙模板,并在模板中設(shè)置好圖紙導(dǎo)出時(shí)視圖的默認(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)建圖紙的選項(xiàng)。具體如何設(shè)置,讀者可以在本文的2.3.2中介紹的User guide或者在VB API Wizard中搜索關(guān)鍵字drawingOptions,根據(jù)自己的需求設(shè)置。

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

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

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

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

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

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

4. Normalize此矩陣;

整個(gè)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)出,因?yàn)閂B的API里并沒有預(yù)留直接導(dǎo)出DWG文件的接口。此時(shí),可以用在程序里運(yùn)行宏代碼的方式實(shí)現(xiàn)。至于如何在程序中加入宏代碼,以及宏代碼在使用時(shí)的限制等,由于內(nèi)容較多,具體實(shí)現(xiàn)步驟筆者會(huì)在另外一篇文章里詳細(xì)敘述。在此只提供實(shí)例代碼如圖2。

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

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

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

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

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

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

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

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

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

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

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

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

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

5 結(jié)論

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

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

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

參考文獻(xiàn):

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

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

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

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

猜你喜歡
二次開發(fā)圖紙模型
一半模型
重要模型『一線三等角』
淺談汽車線束產(chǎn)品圖紙管理
重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
淺談基于Revit平臺(tái)的二次開發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
看圖紙
淺談Mastercam后處理器的二次開發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
3D打印中的模型分割與打包
酒店室內(nèi)裝修圖紙深化設(shè)計(jì)淺析
河南科技(2014年12期)2014-02-27 14:10:44
主站蜘蛛池模板: 孕妇高潮太爽了在线观看免费| 精品国产Av电影无码久久久| a毛片免费观看| 国产资源站| 欧美第二区| 日韩在线播放中文字幕| 久久久久久久97| 欧美天堂在线| 欧美一级大片在线观看| av在线无码浏览| 18禁不卡免费网站| 国禁国产you女视频网站| 国产毛片片精品天天看视频| 思思99思思久久最新精品| 国产一区二区人大臿蕉香蕉| 亚洲免费福利视频| 中文字幕久久精品波多野结| aaa国产一级毛片| 亚洲人在线| 97超碰精品成人国产| 亚洲浓毛av| 18禁黄无遮挡免费动漫网站| 欧美中文字幕在线二区| 亚洲国产av无码综合原创国产| 美女内射视频WWW网站午夜| 免费全部高H视频无码无遮掩| 国产成人综合亚洲欧洲色就色| 国产一区二区色淫影院| 国产成人1024精品| 四虎成人在线视频| 欧美在线观看不卡| 日韩欧美国产三级| 亚洲无码高清免费视频亚洲 | 日本欧美一二三区色视频| 精品国产免费观看| 欧美一级夜夜爽www| 色哟哟色院91精品网站| 亚洲人成网址| 精品国产成人国产在线| 波多野结衣一级毛片| 国产XXXX做受性欧美88| 免费国产一级 片内射老| 亚洲天堂免费观看| 激情五月婷婷综合网| 国产视频一二三区| 久久99精品国产麻豆宅宅| 精品综合久久久久久97| 色亚洲成人| 国产亚洲精品97AA片在线播放| 在线观看视频99| 国产视频一区二区在线观看| 免费视频在线2021入口| 亚洲人人视频| 被公侵犯人妻少妇一区二区三区| 国产成人综合网| 久久中文字幕不卡一二区| 国产精品成人第一区| 欧美高清国产| 国产精品成人AⅤ在线一二三四| 乱人伦中文视频在线观看免费| 91精品国产自产在线老师啪l| 极品私人尤物在线精品首页| 精品视频一区在线观看| 国产精品综合久久久 | 欧美不卡视频一区发布| 亚洲伦理一区二区| 久久综合结合久久狠狠狠97色| 精品视频第一页| 精品国产成人国产在线| 欧美日韩在线成人| 伊人激情久久综合中文字幕| 亚洲男人的天堂久久香蕉| 很黄的网站在线观看| 久久精品午夜视频| 亚洲全网成人资源在线观看| 欧美成人综合视频| 911亚洲精品| 极品尤物av美乳在线观看| 日韩毛片视频| 精品欧美一区二区三区在线| 国产成人一二三| 国产乱人伦AV在线A|