技術解答:模具零件毛坯尺寸的自動導出方法
08-14-2022

技術解答:模具零(líng)件毛坯尺寸的自(zì)動導出方法

毛坯尺(chǐ)寸是零件的基本屬(shǔ)性之一,為模具、工裝和機加產品等的(de)結構設計、幹(gàn)涉分析、材料準備、成(chéng)本分析、確定加工周期等方麵提供了重要的參考作用。目前主流的三維設計軟件均提供測量零件包絡體的功能,主(zhǔ)要有2種測量模式[1],一(yī)種(zhǒng)為軸對齊包圍盒AABB(axis-aligned bounding box),另一種為最小包圍盒MBB(minimum bounding box),如(rú)圖1所示。最小包圍盒MBB尺寸加上適當的加工餘量(機加零件一般(bān)為10 mm),即(jí)可得到零件的毛坯尺(chǐ)寸。

技術解答:模具零件毛坯尺寸的自(zì)動導出方法

 

零件(jiàn)的AABB和MBB包圍盒
對於最小包圍盒MBB的算法,不少學(xué)者和專家對其進行了大量(liàng)研(yán)究(jiū)工作。G BAREQUET等[2]提出利用三維點集來近似求解最小(xiǎo)包圍盒的算法,首先對實體(tǐ)模型進行離散化,但想要獲得較高精度的計(jì)算結果,必須使得(dé)離散化程度(dù)更高,從而降低了運行效率;陳柏鬆等[3]提出一種基於非線性主(zhǔ)成分(fèn)分析的最小(xiǎo)包圍盒計算方法,首(shǒu)先計算頂點區域麵積,然後用每個頂點區域麵積對頂點進行調製,再使用(yòng)傳統主成分分析(xī)得到目標正交坐標係,從而得(dé)到最小包圍盒,該方法計算穩定,但處理較多頂點(diǎn)時速度較慢,且無法處理設有連接關係的點集數據;陳華等[4]提出(chū)一種確定任意形狀物體最小包圍盒的方法,利用實體模型分別繞3個坐標軸旋(xuán)轉一定角度時計算一(yī)次方向包圍盒(hé)OBB(oriented bounding box),最後(hòu)找出(chū)體積最小的OBB作為(wéi)最小包圍(wéi)盒,但該方法計算速度慢(màn)、效率低;孔垂品等[1]提出一(yī)種零(líng)件的最小包圍盒生成算(suàn)法,根據旋轉投影的外輪廓確定最小包圍盒,采用逐步細分法,通過2輪旋轉來提高計算效率,但處理(lǐ)單個複雜零件耗時已超過100 s,不適合一(yī)次性處理(lǐ)較(jiào)多零件。
對於一般機加工產品,目前測(cè)量最小包圍盒的方法為:利用三維設計軟件,采用手動方式逐個對零件進行測量,再將測量結果逐一手動記錄。但(dàn)對於(yú)大型的(de)模具、工裝和機加工(gōng)產品,零件數量可能(néng)成百上千,如果再采用手動測量和記(jì)錄的方式,工作量巨大且容易出錯,影響工作效率。王(wáng)孟等[5]基(jī)於CATIA/CAA對三維型材的毛坯(pī)模型生成技術進行了研究,龍軍等[6]將(jiāng)UG二次開發技術用於鑄件毛坯三維實體自動生成,該方法主要用於識別孔、凹槽、倒角等加工(gōng)特征(zhēng),並將零件模型恢複到機加工前狀態,無法準確用於測量零件的最小包圍盒。針對該問題,需要編製一套高效可靠的程序,快速(sù)自動測量和輸出最(zuì)小(xiǎo)包圍盒尺寸,並最終獲得零(líng)件的毛坯尺寸,提高工作效率。
1 開發工(gōng)具
CATIA是一款CAD/CAE/CAM一(yī)體化軟件[7],廣泛應用於機械設計、航空航天、汽車製造、造(zào)船、電子電器等行業。為(wéi)了滿足用戶(hù)個性化和專業化需求,CATIA為用戶提供了多種二次開發接口[8],其中包括基(jī)於構件的應用編程接口(CAA)[5]和自動化對象編程接口(VBA)[9]。CAA是CATIA已有組件的定製開發,主要為Visual C++和Java語(yǔ)言,並要具備連接端口等方麵的知識,入門相對困難;VBA是交互式的定製開發,主(zhǔ)要為Visual Basic語言[10],雖在功能上不及CAA強大,但簡(jiǎn)單實用,可以(yǐ)滿足一般專業化需求。現主要介紹(shào)在CATIA中采用VBA二次開發接口,使用VB語言進行編程,實現自動(dòng)批量導(dǎo)出零(líng)件毛坯(pī)尺寸的功能。
2 程序設計方法
2.1 設計思路和原理
程序設計應簡(jiǎn)單實(shí)用、穩定運行和計算正確,主要從以下2個方麵進行考慮。
(1)可對某文件夾中(zhōng)的(de)所有零件進行自動批量(liàng)處理,並將結果輸出到Excel表中,方便後續(xù)操作。采用遞歸算法遍曆某文件夾及其子文件夾中的全部零件,程序執行的主要流程如圖2所示。

零件毛坯尺寸自動導(dǎo)出流程
(2)裝配狀態包含零件、子裝配、部件等多個(gè)對象,測量最小包圍盒時容易出錯,最好(hǎo)單獨打開零件進行測量。
2.2 功能(néng)實現
2.2.1 查找零件
查找某文件夾及其子文件夾中(zhōng)的所有CATIA零件(*.CATPart),並將相關文件(jiàn)信息輸出到Excel表。
查找(zhǎo)零件的(de)子程序代碼如下。
Public n_File As Double '文件數量
Public FileName(1 To 65536) As String '文件名(míng)稱
Public FilePath(1 To 65536) As String '文件路徑
Public Sub SerachFile(ByVal Path1 As String)
For Each file In CreateObject("Scripting.FileSystemObject").GetFolder(Path1).Files
If InStr(file.Name, ".CATPart") <> 0 Then '判斷是否為零件類文件
n_File = n_File + 1
FileName(n_File) = file.Name
FilePath(n_File) = Left(file.Path, InStrRev(file.Path, "\"))
End if
Next
If CreateObject("Scripting.FileSystemObject").GetFolder(Path1).SubFolders.Count > 0 Then
For Each Folder In CreateObject("Scripting.FileSystemObject").GetFolder(Path1).SubFolders '子文件夾中遞歸調(diào)用
SerachFile Folder.Path
Next
End If
End Sub
將文件信息輸出到Excel表的代碼如下。
Dim EXCEL1 As Workbook
Set EXCEL1 = Excel.Workbooks.Add '新建Excel表
EXCEL1.Application.Visible = True
Dim sheets1 As Worksheet
Set sheets1 = EXCEL1.Worksheets(1)
C_FileName = "A" '文件名稱所在列(liè)
C_FilePath = "B" '文件路徑(jìng)所在列
For Each file In fils
n_File = n_File + 1
sheets1.Range(C_FileName & n_File + 1).Value = CStr(file.Name)
sheets1.Range(C_FilePath & n_File + 1).Value = FilePath1
Next
2.2.2 讀取零件
讀取Excel表中的文件信息,並使用CATIA軟件依次打開零件模(mó)型,代碼如下。
For i = 1 to n_File
Set Model1 = CATIA.Documents.Open(FilePath (i) & “\” & FileName (i))
Next
2.2.3 測量零(líng)件
CATIA軟件未直接提供測量零件最小包圍(wéi)盒MBB的函數,但可以(yǐ)通過以下2種方法獲得MBB尺寸。
(1)慣性(xìng)主軸法。先(xiān)使用GetPrincipalAxes函數獲(huò)得零件實體的(de)慣性主軸,然後(hòu)使用(yòng)AddNewExtremumPolar函數創建沿3個坐標軸方向(xiàng)的極點,極點沿坐標軸方向的跨度即組成了最小包圍盒尺寸。但是該方法在創建極點時相當於對零件模型進行了更改,容易引(yǐn)起存儲(chǔ)錯誤和文(wén)件關閉時彈出提示問(wèn)題,不利於程序(xù)的穩定運行(háng)和模型安全,降低了運行效率,不適合批量處理多個零件(jiàn)。
(2)測量慣量法。利用CATIA軟件的測量慣量功能(néng)(自定(dìng)義中需勾選“主軸”),對零件實體進(jìn)行測量,此時結構樹上(shàng)會出現測(cè)量參數,如圖3所示。其中“BBLx”、“BBLy”、“BBLz”即為最小包圍盒尺寸。該方法測量(liàng)速度快、精度高,且(qiě)未對(duì)零件模式進行更改,主(zhǔ)要代碼如下。

結構(gòu)樹上的(de)測量參數
Set sel = Model1.Selection
sel.Clear
Set part1 = Model1.Part
sel.Add part1.MainBody '選定零(líng)件實體
CATIA.StartCommand '調用測量慣量命令
C_RoughSize = "C" '毛(máo)坯尺(chǐ)寸所在列
sheets1.Range(C_RoughSize & i).Value = Round(part1.Parameters.GetItem("BBLx").Value + 10, 1) & "*" & Round(part1.Parameters.GetItem("BBLy").Value + 10, 1) & "*" & Round(part1.Parameters.GetItem("BBLz").Value + 10, 1) '+10表示加工餘量為10mm
2.3 實例驗證
為驗證該方法的使用效果,先對圖1所(suǒ)示的單個標準零件GB/T 70.1 M10x50(內六角圓柱(zhù)頭螺釘)進行測試,在處(chù)理器2.4 GHz、內存8 GB的電腦上處理時(shí)間約4 s,測試結果如圖4所示(shì)。然後對某複合材料產品的模壓模具組件進行測試,如圖5所示(shì),處理12個零件用時約38 s,測試結果如圖6所示。經過手動測試複核,表明了測試結果準確無誤。

www.91-91视频网站-91.n-91视频网址