趙雄輝,涂 輝,王世選,孫 磊,施銀桃,夏東升
(武漢紡織大學(xué) 環(huán)境工程學(xué)院,湖北 武漢 430200)
?
AutoCAD VBA平臺(tái)下纖維過(guò)濾模型的構(gòu)建
趙雄輝,涂 輝,王世選,孫 磊,施銀桃,夏東升
(武漢紡織大學(xué) 環(huán)境工程學(xué)院,湖北 武漢 430200)
摘要:為了構(gòu)建纖維束三維模型,在ANAYS Fluent平臺(tái)下進(jìn)行了纖維過(guò)濾器流體模擬,通過(guò)AutoCAD的VBA平臺(tái)下編程的方法,研究了三維規(guī)則與隨機(jī)纖維模型的構(gòu)建,結(jié)果為在AutoCAD2014平臺(tái)下在VBA語(yǔ)言編程條件下,達(dá)到三維規(guī)則與隨機(jī)纖維模型快速、精確構(gòu)建,并且成功導(dǎo)入ANAYS ICEM的效果,表明了AutoCAD的VBA平臺(tái)下編程構(gòu)建三維纖維模型,進(jìn)行后期數(shù)值模擬是可行的。
關(guān)鍵詞:VBA;AutoCAD;數(shù)值模擬;纖維建模;ANSYS ICEM
1引言
ANSYS Workbench 集成了自身的模型構(gòu)造軟件ICEM CFD擁有強(qiáng)大的網(wǎng)格劃分能力,但是相比較傳統(tǒng)的CAD軟件如AutoCAD ,Solidworks,其幾何建模能力仍顯不足。VBA是Auto CAD二次開(kāi)發(fā)軟件中最為簡(jiǎn)單易用的工具之一,對(duì)于非專業(yè)計(jì)算機(jī)人員也能高效快速的進(jìn)行模型構(gòu)建。因此利用AutoCAD VBA建模而后導(dǎo)入ICEM CFD進(jìn)行網(wǎng)格劃分,將提高模型前處理的效率。
2窗體的創(chuàng)建
運(yùn)行AutoCAD 。單位設(shè)置為mm。輸入vbaman命令,打開(kāi)vba管理器。左擊新建,創(chuàng)建新的工程。左擊Visual Basic管理器,進(jìn)入代碼窗口。在代碼窗口中,選擇插入/用戶窗體,向當(dāng)前工程添加一個(gè)用戶窗體(圖1)。
部分控件設(shè)置見(jiàn)表1。
對(duì)所需進(jìn)行定義。在窗體中創(chuàng)建“確定”按鈕單擊事件,根據(jù)上圖所示的多頁(yè)空間頁(yè)面,創(chuàng)建與其對(duì)應(yīng)的纖維模型。
Private Sub cmdOk_Click()
ZoomExtents
Select Case MultiPage1.Value
Case 1 ’規(guī)則模型
Call Box
Call Fibres
Case 2 '隨機(jī)模型
Call Box
Call Cc
End Select
frmMain.Hide
End Sub
表1 窗體部分控件設(shè)置
3矩形容器的建立
纖維素過(guò)濾器為一矩形容器,其中心位于center處,而后移動(dòng)矩形容器至所建纖維模型中心處。
部分代碼如下:
’建立矩形體容器
Public Sub Box()
定義矩形體
center(0)=txtBX.Text
center(1)=txtBY.Text
center(2)=txtBZ.Text
Length=txtLength.Text
Width=txtWidth.Text
Height=txtHeight.Text
在模型空間中建立矩形體(3DSolid)對(duì)象,長(zhǎng)度兩側(cè)分別預(yù)留150mm作為首位導(dǎo)流段。
Set Boxobj=ThisDrawing.ModelSpace.AddBox(center, Length +300, Width, Height)
將矩形容器移動(dòng)至預(yù)定位置
Dim ptTo(0 To 2) As Double
ptTo(0)=0.5 * Length
ptTo(1)=0.5 * Width
ptTo(2)=0
Boxobj.Move center, ptTo
ZoomAll
End Sub
4三維規(guī)則纖維模型構(gòu)建
建立纖維圓柱體
Public Sub Fibres()
Dim Radius As Double ’纖維半徑
Dim HeightOfFibre As Double ’纖維長(zhǎng)度
Radius=txtRadiusOfFibre.Text
HeightOfFibre=txtHeightOfFibre.Text
’用戶輸入纖維長(zhǎng)度數(shù)值HeightOfFibre>容器高度Height時(shí),發(fā)出提示信息
If HeightOfFibre > Height Then
MsgBox (“輸入的纖維長(zhǎng)度數(shù)據(jù)必須不大于容器高度,請(qǐng)重新輸入!”)
End If
’創(chuàng)建首圓柱
Dim objCylinder As Acad3DSolid
Dim ptCen(0 To 2) As Double
ptCen(0)=center(0)+2*Radius:ptCen(1)=center(1)+2*Radius:ptCen(2)=center(2)
Set objCylinder=ThisDrawing.ModelSpace.AddCylinder(ptCen, Radius, HeightOfFibre)
采用矩陣函數(shù)ArrayRectangular將上述所建纖維圓柱體陣列形成規(guī)則纖維集合。
distanceBwtnColumns=txtdistanceBwtnColumns.Text+2 * Radius
distanceBwtnRows=txtdistanceBwtnRows.Text+2 * Radius
distanceBwtnLeves=0
numberOfColumns=LengthdistanceBwtnColumns
numberOfRows=WidthdistanceBwtnRows
numberOfLeves=1
’建立對(duì)象的陣列
Dim retObj As Variant
retObj=objCylinder.ArrayRectangular(numberOfRows,numberOfColumns,numberOfLeves,distanceBwtnRows,distanceBwtnColumns,distanceBwtnLeves)
ZoomAll
End Sub
輸入如下參數(shù):生成隨機(jī)模型,見(jiàn)圖2,圖3。
5三維隨機(jī)纖維模型構(gòu)建
部分代碼如下:
Dim upperbound As Integer
Dim lowerbound As Integer
r=txtRadiusOfFibre1.Text
d=txtMaxDisOfFibre.Text/r
HeightOfFibres=txtLengthOfFibre.Text
m=txtLength.Text/(d * r)
n = txtWidth.Text/(d * r)
’用戶輸入纖維長(zhǎng)度數(shù)值HeightOfFibres>容器高度Height時(shí),發(fā)出提示信息
If HeightOfFibres > Height Then
MsgBox(“輸入的纖維長(zhǎng)度數(shù)據(jù)必須不大于容器高度,請(qǐng)重新輸入!”)
End If
設(shè)置For函數(shù)對(duì)纖維圓心進(jìn)行隨機(jī)循環(huán)排列。排列思路見(jiàn)圖4。
主要代碼如下
For i=0 To m-1
For j=0 To n-1
upperbound=(d - 1) * r
lowerbound=r
x(0)=0 ’預(yù)排列初始值
y(0)=0
’隨機(jī)生成x坐標(biāo)軸方向 圓心坐標(biāo)
x(i+1)=d * i * r+Int((upperbound-lowerbound+1) * Rnd+lowerbound)
y(j+1)=d * j * r+Int((upperbound-lowerbound+1) * Rnd+lowerbound)
p(0)=x(i + 1)
p(1)=y(j + 1)
p(2)=0
’以點(diǎn)P為中心,r為半徑建立長(zhǎng)度為HeightOfFibres的纖維柱體
Dim objCylinder As Acad3DSolid
Set objCylinder=ThisDrawing.ModelSpace.AddCylinder(p,r,HeightOfFibres)
Next j
Next i
輸入如下參數(shù):生成隨機(jī)模型,見(jiàn)圖5,圖6。
設(shè)置最大間隔距離,調(diào)解容器內(nèi)纖維數(shù)量。分別設(shè)置最大距離d=32,d=40得到如下模型,見(jiàn)圖7,圖8。
驗(yàn)證:按照實(shí)驗(yàn)思路,當(dāng)最大距離設(shè)置為兩倍半徑時(shí),隨機(jī)圓模型呈現(xiàn)規(guī)則形狀排列。運(yùn)行程序得到模型,見(jiàn)圖9,圖10。
模型符合,驗(yàn)證通過(guò)。
圖8隨機(jī)纖維模型(d=40)
6模型導(dǎo)出
在AutoCAD中文件/輸出為IGES格式文件,導(dǎo)入到ANSYS ICEM CFD形成圖10所示幾何模型,從而進(jìn)行后續(xù)網(wǎng)格劃分及分析處理(圖11)。
7結(jié)語(yǔ)
利用AutoCAD內(nèi)嵌語(yǔ)言VBA編程構(gòu)建幾何模型,具有以下特點(diǎn)。
(1)界面明了。
(2)便于操作。
(3)運(yùn)行速度快。
(4)接口適應(yīng)性廣泛。
進(jìn)一步,通過(guò)不同函數(shù)的編譯,亦可以創(chuàng)建曲線纖維模型等更為真實(shí)準(zhǔn)確的幾何模型。
參考文獻(xiàn):
[1]蘇茜.AutoCAD VBA函數(shù)庫(kù)查詢辭典(附光盤)[M].北京:中國(guó)鐵道出版社,2003.
[2]張帆.AutoCAD VBA開(kāi)發(fā)精彩實(shí)例教程[M].北京:清華大學(xué)出版社,2004.
[3]張帆.AutoCAD VBA二次開(kāi)發(fā)教程[M].北京:清華大學(xué)出版社,2006.
[4]Liang Li,Kan Wu,Da-Wei Zhou.AutoCAD-based prediction of 3D dynamic ground movement for underground coal mining[J].International Journal of Rock Mechanics and Mining Sciences,2014(71):194~203.
[5]翟利軍,張燎軍,陳文龍.基于AutoCAD VBA的有限元快速建模技術(shù)[J].華北水利水電學(xué)院學(xué)報(bào),2003,24(4):15~17.
[6]潘晉,鄧安福,干騰君.AUTOCAD VBA開(kāi)發(fā)技術(shù)在有限元前處理程序中的應(yīng)用[J].地下空間與工程學(xué)報(bào),2003,23(1):52~55.
[7]Jun L I,Su-Hong L I. Design for evaluating straightness and roundness error software based on AutoCAD VBA[J].Machinery Design & Manufacture,2010(11).
[8]嚴(yán)飛,詹美禮,速寶玉.AutoCAD中VBA語(yǔ)言在滲流有限元前處理中的應(yīng)用[J].水利水電科技進(jìn)展,2003,23(1):28~29.
[9]Huang Z.Solid Modeling of Non-circular Gear based on AutoCAD VBA[J].Journal of Mechanical Transmission,2011(11).
[10]胡坤.ANSYS ICEM CFD工程實(shí)例詳解[M].北京:人民郵電出版社,2014.
[11]紀(jì)兵兵.ANSYS ICEM CFD 網(wǎng)格劃分技術(shù)實(shí)例詳解[M].北京:中國(guó)水利水電出版社,2012.
文章編號(hào):1674-9944(2016)02-0177-04
中圖分類號(hào):X506
文獻(xiàn)標(biāo)識(shí)碼:A
作者簡(jiǎn)介:趙雄輝(1989—),男,湖北襄陽(yáng)人,武漢紡織大學(xué)環(huán)境工程學(xué)院碩士研究生。
收稿日期:2015-11-09