技(jì)術解答:模具零件毛坯(pī)尺寸的自動導(dǎo)出方法
08-14-2022

技術解答:模具(jù)零件毛坯(pī)尺寸的自動導出方法

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

技術解(jiě)答:模具零件毛坯(pī)尺寸的自動導出方法

 

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

零件毛坯尺寸自動(dòng)導出流程
(2)裝配狀態(tài)包含(hán)零件(jiàn)、子裝配、部(bù)件等多個對象,測量最小包圍盒時容易出錯,最好單獨打開零件進(jìn)行(háng)測量。
2.2 功能實現
2.2.1 查(chá)找零件(jiàn)
查找某文件夾及其子文件夾中的所有(yǒu)CATIA零件(*.CATPart),並將相關文件信息輸出到Excel表。
查找零件的子程序代碼如(rú)下。
Public n_File As Double '文件數量
Public FileName(1 To 65536) As String '文件名稱
Public FilePath(1 To 65536) As String '文件路(lù)徑
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 '子文件(jiàn)夾中遞歸調用(yòng)
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" '文件名(míng)稱所在列
C_FilePath = "B" '文(wén)件路徑所在列
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 讀取零(líng)件
讀取Excel表中的文件信息,並使(shǐ)用CATIA軟件依次打開零件模型,代碼(mǎ)如下。
For i = 1 to n_File
Set Model1 = CATIA.Documents.Open(FilePath (i) & “\” & FileName (i))
Next
2.2.3 測量零件
CATIA軟件(jiàn)未直接提供測量零件最小包圍盒(hé)MBB的函數,但可以通過以下2種方法獲得MBB尺寸。
(1)慣性主軸法。先使(shǐ)用GetPrincipalAxes函數獲得零件實體的慣性(xìng)主軸,然後使用AddNewExtremumPolar函(hán)數創建沿3個坐標軸方向的極點,極(jí)點沿(yán)坐標軸方向的跨度即組成了最小包圍盒尺寸。但是該方(fāng)法在創建極點時相當於對(duì)零件模型進行(háng)了更改(gǎi),容易引起存儲錯誤和文件關閉時(shí)彈(dàn)出提示問題,不利於(yú)程序的(de)穩定運行和模型(xíng)安全,降低(dī)了運行效率,不(bú)適合批量處理多個零件。
(2)測量慣量法。利用CATIA軟件的測(cè)量慣量(liàng)功能(自定義中需勾選“主軸”),對零件實體進行測量,此時結構樹上會出現測(cè)量(liàng)參數,如圖3所示。其中“BBLx”、“BBLy”、“BBLz”即為最小包圍(wéi)盒尺寸。該方法測量速(sù)度快、精度高,且未對零件模式進行(háng)更改,主要代碼如下。

結構樹上(shàng)的測量參數
Set sel = Model1.Selection
sel.Clear
Set part1 = Model1.Part
sel.Add part1.MainBody '選定零件實體
CATIA.StartCommand '調用測量慣量命令
C_RoughSize = "C" '毛坯尺寸所在列
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 實例驗證
為(wéi)驗(yàn)證該方法的使(shǐ)用(yòng)效果,先對圖1所示的(de)單個標準零件GB/T 70.1 M10x50(內六(liù)角圓柱頭螺釘)進行測試(shì),在處理(lǐ)器2.4 GHz、內存8 GB的電腦上處理時間約4 s,測試結果如圖4所示(shì)。然後對某複合材料(liào)產品(pǐn)的模壓模具組件進行測試,如圖5所示,處理12個零件用時約38 s,測試結果如圖6所示(shì)。經過手動測(cè)試複核,表明了測試結果準確(què)無誤。

网站地图 向日葵视频免费-向日葵视频污版-向日葵视频污成人-向日葵视频色版app下载污