VB6. 0與 ActiveX Aut omati on技術(shù)開發(fā) CAM的分析


   ActiveX Aut omati on技術(shù)是微軟制定的一套標(biāo)準(zhǔn) ,使用這個(gè)標(biāo)準(zhǔn)可以使用不同語言開發(fā)的軟件構(gòu)件在網(wǎng)絡(luò)環(huán)境中相互操作 ,它允許通過外顯的對(duì)象由一個(gè) windows應(yīng)用程序控制另一個(gè) win2dows應(yīng)用程序 , CAD可以調(diào)用 CAM的對(duì)象 , CAM也可以調(diào)用CAD的對(duì)象。ActiveX Aut omati on被稱為第四代開發(fā)工具。 (第一代開發(fā)工具 - Aut olis p;第二代開發(fā)工具 - ads ;第三代開發(fā)工具- Visuallis p、 arx;第四代開發(fā)工具 - ActiveX aut omati on[ 1 ])

同其他三代開發(fā)工具相比 ,ActiveX Aut omati on提供了最大的靈活性和開發(fā)效率。它無需相關(guān)的控件的幫助 ,無需編寫復(fù)雜L ISP c語言程序 ,而是以對(duì)象的方式把 Aut oCAD的強(qiáng)大功能直接提供給應(yīng)用程序 ,既大大降低了開發(fā)工作量 ,又增強(qiáng)了系統(tǒng)的集成性、 對(duì)各種不同版本的適應(yīng)性和可維護(hù)性。Aut oCAD Ac2tiveX Aut omati on技術(shù)的出現(xiàn) ,標(biāo)志著 Aut oCAD的二次開發(fā)技術(shù)取得了歷史性轉(zhuǎn)折。首先 ,它首次完全實(shí)現(xiàn)了 OLE Aut omati on ,使得其他軟件可以方便地訪問 Aut oCAD ; 其次 ,Aut oCAD首次實(shí)現(xiàn)了面向?qū)ο蟮拈_發(fā)技術(shù) ,用戶可以操縱它提供所有的 Aut oCAD對(duì)象;最后 ,基于 ActiveX Aut omati on開發(fā)技術(shù)的開發(fā)工具得到空前的膨脹 ,已不再局限于 C C + +系列語言 , Visual Basic ,Del phi等工具都可以進(jìn)行開發(fā) ,本文介紹基于 Visual Basic Ac2tiveX Aut omati on技術(shù)開發(fā) CAM系統(tǒng)的過程。

1 CAM系統(tǒng)總體實(shí)現(xiàn)的方法

基于 Visual Basic ActiveX Aut omati on技術(shù) ,我公司已經(jīng)開發(fā)出了汽車縱梁沖孔生產(chǎn)線 CAM系統(tǒng)、 TP80型數(shù)控液壓板料沖孔機(jī) CAM系統(tǒng)、 數(shù)控沖床通用 CAM系統(tǒng)等 ,各種 CAM系統(tǒng)的功能雖然千差萬別 ,但總體實(shí)現(xiàn)的方法類似。下面談?wù)?/span> CAM系統(tǒng)實(shí)現(xiàn)的通用方法。

增加菜單項(xiàng)以實(shí)現(xiàn) CAM圖標(biāo) , VBA編寫接口 ,使圖標(biāo)與ActiveX控件相連 , VB編寫類生成 DLL,它是以 VB類的形式提供的開發(fā)接口 ,可用于定義模型的幾何、 窗體 ,拓?fù)湟约皩?shí)現(xiàn)其他功能。在應(yīng)用中 ,可直接通過類的公共 ( Public)數(shù)據(jù)成員和保護(hù)( Pr otected)數(shù)據(jù)成員以及成員函數(shù) (Member Functi on) ACIS相互作用。開發(fā)者也可以根據(jù)特殊的需要從 ACIS類派生出自己的應(yīng)用類 ,類接口在各版本中可能有變化 ,最終把菜單、 VBA工程、DLL、 各種文檔都封裝在 SET UP ,可以安裝在 Aut oCAD2000、2002、 2004、 2005、 2006、 2007中。示意圖如圖 1:


首先創(chuàng)建一個(gè) CAM系統(tǒng)圖標(biāo)菜單 ,編寫腳本 ( Scri p ts) j mcar .mns, AUT OCAD使用工具 自定義菜單 \JMCAR. MNS加載 , CAM菜單加載到 Aut oCAD系統(tǒng)中 ,以便用戶像點(diǎn)擊 Aut oCAD的圖標(biāo)一樣點(diǎn)擊 CAM圖標(biāo)。第二步用 VBA編寫 j mvb1 . dvb工程 ,用于調(diào)用 DLL工程中類的成員 ,第三步中使用 VisualBasic6 . 0創(chuàng)建工程 ,包括各種窗體、 模塊、 類、 過程、 函數(shù)和各種功能模塊 ,并編譯成 DLL工程 ,以備 VBA調(diào)用 ,該部分的工作量最大約占整個(gè)開發(fā)總量的 90%以上。最后集成打包封裝形成 SET UP安裝文檔。以汽車縱梁沖孔生產(chǎn)線 CAM系統(tǒng)為例 ,其流程圖如圖 2:


2 CAM開發(fā)中技術(shù)要點(diǎn)

從圖 1 CAD /CAM系統(tǒng)示意圖可以看出 ,開發(fā)過程有四步 ,分別是圖標(biāo)菜單文檔的編寫、 VBA工程的創(chuàng)建、 DLL工程的創(chuàng)建設(shè)計(jì)和整個(gè)系統(tǒng)的集成 ,第一步圖標(biāo)菜單文檔的編寫和第二步 VBA工程的創(chuàng)建韓學(xué)軍已在“ 汽車縱梁沖孔數(shù)控生產(chǎn)線自動(dòng)編程系統(tǒng)ActiveX Aut omati on技術(shù)的應(yīng)用 一文中介紹 (詳見《CAD /CAM與制造業(yè)信息化 2006 12 ) ,本文不再贅述。這里主要介紹第三步 DLL工程的創(chuàng)建設(shè)計(jì)中的要點(diǎn)問題。

2 . 1 Visual Basic 6 . 0工程的引用

動(dòng)態(tài)鏈接庫中存放了所有 Windows應(yīng)用程序可以共享的代碼和資源 ,這些代碼或函數(shù)可以用多種語言寫出。Visual Basic利用這些技術(shù)可以調(diào)用任何語言產(chǎn)生的 DLL,也可以調(diào)出 windows應(yīng)用程序接口 (AP I )函數(shù) ,以實(shí)現(xiàn) S DK所能實(shí)現(xiàn)的功能。對(duì)象的鏈接與嵌入是 VisualBasic訪問所有對(duì)象的一種方法。利用 OLE技術(shù) ,Visual Basic將其他應(yīng)用軟件作為一個(gè)對(duì)象嵌入到應(yīng)用程序中進(jìn)行操作 ,也可以將各種基于 windows的應(yīng)用程序嵌入到 Visu2al Basic應(yīng)用程序中[ 2 ]。

在“ 引用 對(duì)話框中 ,選擇 ActiveX部件的名稱 ,它包含在應(yīng)用程序的對(duì)象中??梢允褂?ldquo; 瀏覽 按鈕來搜索包含所需對(duì)象的類型庫文件。類型庫可以有. tlb. o1b擴(kuò)展文件名。可執(zhí)行( exe)文件與動(dòng)態(tài)鏈接庫 (DLL)也可以提供類型庫。在應(yīng)用程序中 ,在使用對(duì)象的屬性、 方法和事件之前 ,必須先聲明對(duì)象變量 ,然后將對(duì)象引用賦予該變量。如何賦值對(duì)象引用取決于兩個(gè)因素:

一、 該對(duì)象是頂層、 外部可創(chuàng)建對(duì)象 ,還是從屬對(duì)象。對(duì)于外部創(chuàng)建的對(duì)象的引用 ,可以直接賦值 ,而對(duì)從屬對(duì)象的引用則間接賦值。

二、 ActiveX部件是否提供類型庫。ActiveX部件的類型庫包含部件提供的全部對(duì)象的定義 ,包括全部可用的方法、 屬性和事件的定義。如果 ActiveX部件提供類型庫 ,在使用庫的對(duì)象前 ,需要在 visual Basic工程中添加一個(gè)對(duì)類型庫的引用。如果對(duì)象是外部可創(chuàng)建的 ,可在 Set語句中用 New關(guān)鍵字、CreateObject Get Objet從部件外面將對(duì)象引用賦予變量。如果對(duì)象是從屬對(duì)象 ,則需使用高層對(duì)象的方法 , set語句中指定一個(gè)對(duì)象的引用[ 3 ]。

缺省的引用有四個(gè):

visual basic for app licat ons

visual basic runti me objects and p rocedues

visual basic objects and p rocedures

ole aut omati on

根據(jù)各個(gè)不同版本增加四個(gè)引用:

對(duì)于 2007來說

AUT OCAD 2007 type library

AUT OCAD /Object obx commom 17 . 0 type library

對(duì)于 2004, 2005, 2006來說

AUT OCAD 2004

AUT OCAD /Object obx commom16 . 0

AUT OCAD Focus contr ol for vba type library

MicosoftActivex Data Objects 2 . 1 L ibrary

對(duì)于 2000, 2002來說

AUT OCAD 2000

AUT OCAD Focus contr ol for vba type library

AUT OCAD /Object obx commom 1 . 0

MicosoftActivex Data Objects 2 . 1 L ibrary

2  實(shí)現(xiàn) VB Aut oCAD之間的鏈接

Aut oCAD的所有對(duì)象可組成一個(gè)層狀結(jié)構(gòu) ,其最高層是 Ap2licati on對(duì)象 ,其它對(duì)象都是 App licati on對(duì)象的子對(duì)象。對(duì)象層中每個(gè)子對(duì)象都有屬于自己的子對(duì)象。為了獲得某個(gè)特定的對(duì)象 ,必須從 App licati on對(duì)象中對(duì)各層子對(duì)象進(jìn)行遍歷查詢 ,到找到該特定對(duì)象 , App licati on對(duì)象是 vb應(yīng)用程序與 Aut o2AD之間鏈接的關(guān)鍵。只有通過 App licati on對(duì)象才能獲取參數(shù)、 文檔集、 菜單欄、 菜單組。將 App licati on對(duì)象與 Aut oCAD之間行鏈接是實(shí)現(xiàn) CAM CAD連接的第一步。

對(duì)于 2007來說

Private Sub Form_Load ( ) 連接至 Aut oCAD圖形

On Err or Resume Next

Di m acadApp AsAcadApp licati on

Set acadApp = Get Object ( , "Aut oCAD. App licati on . 17" )

I f Err Then

Err . Clear

Set acadApp = CreateObject ( "Aut oCAD. App licati on . 17 . " )

I f Err Then

Msg Box Err . Descri p ti on

Exit Sub

End I f

End I f

Set acadDoc = acadApp. ActiveDocument

End Sub

對(duì)于 2004, 2005, 2006來說

Private Sub Form_Load ( ) 連接至 Aut oCAD程序

On Err or Resume Next

Di m acadApp AsAcadApp licati on

Set acadApp = Get Object ( , "Aut oCAD. App licati on . 16" )

I f Err Then

Err . Clear

Set acadApp = CreateObject ( "Aut oCAD. App licati on . 16" )

I f Err Then

Msg Box Err . Descri p ti on

Exit Sub

End I f

End I f

Set acadDoc = acadApp. ActiveDocument

End Sub

對(duì)于 2000, 2002來說

Private Sub Form_Load ( ) 連接至 Aut oCAD圖形

On Err or Resume Next

Di m acadApp AsAcadApp licati on

Set acadApp = Get Object ( , "Aut oCAD. App licati on" )

I f Err Then

Err . Clear

Set acadApp = CreateObject ( "Aut oCAD. App licati on . " )

I f Err Then

Msg Box Err . Descri p ti on

Exit Sub

End I f

End I f

Set acadDoc = acadApp. ActiveDocument

End Sub

2 . 3  在模塊中定義全局變量 ,獲取 Aut oCAD信息在模塊中定義 Aut oCAD應(yīng)用程序和 Aut oCAD文件Public acadApp AsAcadApp licati on cad應(yīng)用Public acadDoc AsAcadDocument cad文件用戶可以根據(jù)屏幕選取圖形、 可以根據(jù)圖層選取圖形 ,也可以根據(jù)某些條件過濾掉某些圖形元素 ,下面的過程是根據(jù)屏幕選取圖形放入選擇集中 ,然后把圖形元素放入動(dòng)態(tài)數(shù)組中 ,放入動(dòng)態(tài)數(shù)組中的目的是由于在選擇集中處理數(shù)據(jù)比較慢 ,而在動(dòng)態(tài)數(shù)組中處理數(shù)據(jù)的速度比較快。筆者做過一個(gè)試驗(yàn) ,在一個(gè)有 40個(gè)圖素的圖形文件中 ,用選擇集處理數(shù)據(jù)需要十分鐘 ,而用動(dòng)態(tài)數(shù)組處理需要 10秒。

Public Sub Aut ogetdata ( ) ’

Di m iAs I nteger, k As I nteger, ic As I nteger, lngCount as intege

Di m entAsAcadEntity

Di m sset ObjAs AcadSelecti onSet

Di m objEnts ( ) 定義動(dòng)態(tài)數(shù)組

On Err or GoTo ccc1

ic = acadDoc . Selecti onSets . Count 選擇集的個(gè)數(shù)

I f ic > 0 Then

For i = ic - 1 To 0 Step - 1

Set sset Obj = acadDoc . Selecti onSets ( i)

I f sset Obj . Name = " SSSS" Then sset Obj . Delete 存在該選擇集刪除它

Next

End I f

Set sset Obj = acadDoc . Selecti onSets . Add ( " SSSS" )

sset Obj . Select OnScreen

lngCount = sset Obj . Count 選擇集的圖元個(gè)數(shù)

I f lngCount > 0 Then

ReDi m objEnts (0 To lngCount - 1) 定義放實(shí)體的動(dòng)態(tài)數(shù)組

For ic = 0 To lngCount - 1 把選擇集的圖素放入實(shí)體數(shù)組中

Set objEnts ( ic) = ssSet obj ( ic)

Next

End I f

Ssset obj . delete

End sub

ObjEnts數(shù)組中存放了從屏幕上獲取的所有圖素。

2 . 4  向圖形數(shù)據(jù)庫添加 CAM圖形數(shù)據(jù)

圖形設(shè)計(jì)可以運(yùn)用 Pro /Engineer,UGII , I - DEAS, Euclid - IS,

CATI A, SolidWorks, Sigraph等專用 CAD軟件直接設(shè)計(jì)繪制 ,通過DXF、I - GES、 DWG格式放入 CAD CAM的一體化系統(tǒng) ,也可以用 Aut oCAD直接繪制。對(duì)于不同的 CAM系統(tǒng) ,向圖形數(shù)據(jù)庫添加的 CAM圖形數(shù)據(jù)也不同的 , TP80型數(shù)控液壓板料沖孔機(jī)為例 ,需要向圖形數(shù)據(jù)庫中加入板材信息、 夾鉗信息、 模具信息、 行程信息、 重定位信息、 模擬演示信息等等 ,然后根據(jù)從 CAD圖形數(shù)據(jù)庫中獲取的數(shù)據(jù)添加模具信息 ,該功能可以通過添加塊實(shí)現(xiàn) ,塊的屬性可以帶有 CAD信息 (如圓的圓心坐標(biāo)點(diǎn)、 圓的直徑 ,層、 線型、 顏色等 ) CAM信息 (刀具號(hào)、 刀具的直徑、 工位號(hào)、 沖壓類型、 重定位區(qū)域等 )。

自動(dòng)排刀的算法:首先建立刀具庫 ,并提取刀具信息如:圓刀的直徑 ,其他刀具的長(zhǎng)、 寬、 面積、 角度 ,刀具名稱等 ,設(shè)置正公差和負(fù)公差的范圍 ,以便進(jìn)行匹配刀具。第二步從 Aut oCAD中提取圖形信息放入選擇集中 ,并把圓孔、 長(zhǎng)方孔、 長(zhǎng)圓孔、 特殊孔四種篩選出來 ,去除板材線 ,尺寸線 ,文字等 ,第三步從選擇集中取一個(gè)圖素 ,判斷該圖素的類型 (上述四種 ) ,根據(jù)圖素的類型進(jìn)行相應(yīng)的處理。

利用循環(huán)原理 ,把實(shí)體數(shù)組中的圖素全部處理后 , CAM層上就自動(dòng)把合適的刀具適配上了 , CAM圖形為了區(qū)別于 CAD圖形 ,以特殊的顏色顯示 ,放在專用層上 ,以便于后續(xù)處理。由于篇幅所限 ,在這里只能給出程序框圖圖 3。

2 . 5  優(yōu)化

TP80型數(shù)控液壓板料沖孔機(jī)采用直列式模具庫 ,它的換模速度比較快 ,一般采用路徑優(yōu)化然后再進(jìn)行模具優(yōu)化的原則。它采用了夾鉗硬件自動(dòng)避讓的方式 ,軟件中不考慮夾鉗死區(qū)的避讓問題。


該優(yōu)化方法采用分組方式 ,每?jī)擅诪橐唤M ,每組內(nèi)先按模具優(yōu)化 ,相同模具按沖點(diǎn)的 X +所用模具的偏移值的距離進(jìn)行優(yōu)化 ,相同模具并且 X +所用模具的偏移值也相同的沖點(diǎn)按 Y+所用模具的偏移值的距離進(jìn)行比較 ,再按所有優(yōu)化路徑進(jìn)行比較 ,選出一個(gè)最佳路徑生成 NC代碼。

設(shè)計(jì)模擬演示、 生成 NC程序等模塊把菜單、 VBA工程、 Visu2al Basic編譯后形成的 DLL、 各種文檔都封裝在 SET UP中。ActiveX DLL的注冊(cè)與開發(fā)平臺(tái)無關(guān) ,在一種編程語言中開發(fā)出來的 ActiveX DLL,幾乎不作任何修改 ,便可以在另一種編程語言中使用。一般注冊(cè) VB6 . 0 ActiveX DLL的方法有很多種 ,這里只介紹手動(dòng)注冊(cè)和自動(dòng)注冊(cè):

(1)使用 Regsvr32 . exe程序?qū)?/span> VB ActiveX DLL進(jìn)行注冊(cè)。

(2)安裝過程中的自動(dòng)注冊(cè)。

TP80型數(shù)控液壓板料沖孔機(jī)自動(dòng)編程 CAM軟件采用的是

安裝過程中的自動(dòng)注冊(cè)。主圖標(biāo)菜單如圖 5:


3 結(jié)論

利用計(jì)算機(jī)圖形交互界面 ,采用二維模擬技術(shù)及面向?qū)ο蟮某绦蛟O(shè)計(jì)方法 , vb ActiveX Aut omati on技術(shù) ,設(shè)計(jì) TP80型數(shù)控液壓板料沖孔機(jī) CAM系統(tǒng) ,對(duì)刀具的刀具軌跡進(jìn)行模擬 ,直觀、 快速、 正確地驗(yàn)證數(shù)控代碼 ,且操作簡(jiǎn)單、 方便 ,提高了數(shù)控液壓板料沖孔機(jī)的工作效率。該開發(fā)思路還可以用于數(shù)控沖床、 數(shù)控車床、 數(shù)控銑床、 加工中心、 激光切割機(jī)、 等離子切割機(jī)等數(shù)控加工設(shè)備 ,以起到節(jié)能降耗、 降低成本、 落實(shí)科學(xué)發(fā)展觀 ,建設(shè)節(jié)約型社會(huì)、 向綠色金屬加工邁進(jìn)的作用。目前該系統(tǒng)已經(jīng)應(yīng)用在汽車縱梁沖孔生產(chǎn)線和各種數(shù)控液壓板料沖孔設(shè)備中 ,用戶滿意度較高 ,使用效果比國(guó)外同類軟件要好。

本文由 伯特利數(shù)控文章 整理發(fā)表,文章來自網(wǎng)絡(luò)僅參考學(xué)習(xí),本站不承擔(dān)任何法律責(zé)任。

http://www.bethel-cnc.com

專業(yè)制造

標(biāo)簽: 編程  
上一篇帶你分析89C51的數(shù)控算法
下一篇常用數(shù)控設(shè)備維修的實(shí)訓(xùn)實(shí)驗(yàn)和優(yōu)化設(shè)計(jì)方案

編程  相關(guān)內(nèi)容

——

11

2024-12

U600S五軸加工中心視頻

此視頻詳細(xì)介紹了U600S高性能五軸加工中心各種參數(shù)及說明!… [了解更多]

08

2024-11

Mastercam 2024【附安裝教程…

Mastercam以其強(qiáng)大的功能,用戶友好的界面和高效的編程能力被業(yè)界廣泛認(rèn)可。它支持多種機(jī)床和加工方式,包括銑床、車床、木雕機(jī)等,滿足不同的加工需求。此外,Mastercam還提供了豐富的輔助工具和功能,如智能教練,宏和腳本,以及用戶定義的選項(xiàng),以進(jìn)一步提高生產(chǎn)力和滿足個(gè)人需求… [了解更多]

08

2024-11

Mastercam 9.1【附安裝教程】…

Mastercam9.1是一款基于PC平臺(tái)的CAD/CAM軟件,此版本提供了多種先進(jìn)的粗加工技術(shù),以提高零件加工的效率和質(zhì)量,并且具有豐富的曲面精加工功能,可以從中選擇好的方法,加工最復(fù)雜的零件。Mastercam9.1提供超過400種的后置處理文件以適用于各種類型的數(shù)控系統(tǒng),比… [了解更多]

08

2024-11

Mastercam 2023【附安裝教程…

Mastercam 2023是一款主要用于機(jī)械加工的3D CAD/CAM軟件,它為用戶提供了開發(fā)產(chǎn)品和加工零件所需的一系列工具。Mastercam 2023不僅可以應(yīng)對(duì)常規(guī)的加工需求,還具備高級(jí)的CAM功能,為用戶提供了最先進(jìn)和靈活的方法和工具,使其可以輕松地完成從設(shè)計(jì)到加工的整… [了解更多]

08

2024-11

Mastercam 2020正式版【附安…

Mastercam 2020正式版是一款功能非常強(qiáng)大的CAD/CAM軟件,同時(shí)也是Mastercam 的最新版本,新版本集曲面設(shè)計(jì)、體素拼合、二維繪圖、三維實(shí)體造型、數(shù)控編程、刀具路徑摸擬及真實(shí)感摸擬等多種功能于一身。Mastercam 2020對(duì)舊版本的功能進(jìn)行了大量改進(jìn),包括… [了解更多]


產(chǎn)品中心

——