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

技術解答:模(mó)具零件(jiàn)毛坯尺寸的自動導出方法

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

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

 

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

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

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

能看正能量的短视频app-免费网站你懂我意思正能量软件-网站你懂我意思正能量www免费观看直播app官方版下载-正能量短视频软件免费APP推荐