從理論上說,理論和實踐沒有區別,但實際上是有的。
——Lawrence “yogi” Berra
紐約揚基隊棒球選手
上一講我們介紹了複雜注塑件中面抽取的流程和基本思路,本講我們將在下面這個例子中展示如何在實際工程案例中快速有效地得到高品質中面。
該件兩面有很多加強筋,我們處理的思路還是一樣的三步曲,只不過我們為了提高效率還可以做一些額外的改進使抽取中面變得更容易。
在正式開始造面之前我們可以先對模型進行一輪簡化,主要是去掉小的圓角,在本例中我們刪除所有半徑小於3.5的圓角。
step 1:
刪除所有solid,僅保留曲面,在手工抽取中面的過程中使用曲面就夠了。
step 2:
進入geometry>defeature>surface fillets
設置如下:
step 3:
选選擇所有曲面後點擊find,然後在下一頁點擊remove進行刪除。此時相鄰曲面會進行自動延伸相交。去除幾何圓角是一個技術難題,部分區域的圓角會無法去除,但是我們可以不去管它們,放心往前走,不會出事的。
這樣就得到了簡化之後的模型。
然後,還是通過offset得到base面。這步要得到一個連接關係正確的面組,後面要用它對其它加強筋面進行裁剪。如果零件base面的各個部位厚度差別較大,則可能需要offset多次並進行連接。為此專門寫了一個腳本幫大家顯示厚度資訊,腳本的具體使用說明如下。
使用腳本在模型上顯示各個板的厚度
1
第一步:表面網格劃分
HyperMesh可以使用2D單元進行厚度測量,所以我們需要先生成一些2D網格。選擇所有外表面劃分即可
得到的網格如下圖,不必在乎單元品質
2
第二步:在需要標注厚度的板的中間位置各選一個單元移入^th組
1.創建^th component
2.在需要標注厚度的板的中間位置各選一個單元移入^th組(F11),避開T形連接位置及圓角區域,確保所選單元所在位置兩側都是平整的面
3.刪除除^th組之外的所有單元
3
第三步:生成厚度資訊
1.打開下拉式功能表Mesh>Edit>Elements>Midmesh Thickness
2.按照下圖進行操作設置,然後點擊Calculate Thickness即可從幾何讀取厚度資訊。
3.生成的property如下:
4
第四步:運行tcl腳本生成帶厚度資訊的標籤(tags)
tcl腳本的內容如下:
*tagdisplay 1
*tagtextdisplaymode 1
*createmark elems 1 "all"
set elem_lst [hm_getmark elems 1]
set prop_lst [list]
set node_lst [list]
foreach elem $elem_lst {
set propid [hm_getvalue elems id=$elem dataname=property]
if {$propid != 0} {
lappend prop_lst $propid
set thickness [hm_getvalue props id=$propid dataname=95]
set x [hm_getvalue elems id=$elem dataname=centerx]
set y [hm_getvalue elems id=$elem dataname=centery]
set z [hm_getvalue elems id=$elem dataname=centerz]
*createnode $x $y $z 0 0 0
set newnode [hm_latestentityid nodes]
*tagcreate nodes $newnode "th$newnode" $thickness 4
lappend node_lst $newnode
}
}
生成的標籤會在螢幕上顯示各個單元處的厚度,結果如下:
從查詢結果可以看出除了局部加厚部位外,大部分base面厚度都是1.8,所以為了簡化base面offset的難度我們決定採取-0.9作為偏置的距離。
提醒:記得刪除所有單元,以免給後續操作帶來不必要的麻煩。麻烦。
說明:
-
使用該功能主要是為了避免反復測量板厚浪費時間,而且腳本比手工測量的精度更高。另外,在模型上顯示厚度有助於緩解建模工程師因害怕弄錯厚度而帶來的焦慮(就當是開玩笑吧)。
-
厚度值特別大的標籤可能是錯誤的,原因是單元可能選在了不適合測量板厚的位置,比如T形連接位置,倒角位置等。請忽略這些標籤(或直接刪除)
-
所以在選擇保留到^th組的單元的時候需要選擇能體現板厚的部位
- 腳本沒有清理模型,生成的屬性,單元,臨時節點等需要手工清理
前面部分只是簡化模型和標注厚度。雖然這部分工作也很重要,但是要真正解決問題還是需要按照上一講中的三步曲來走。
第一步
通過offset創建base面。
第一步的幾個要點如下:
-
選擇完整、簡單的面來偏置
-
不要選擇同一個加強筋的兩側
-
局部加厚部位可以先不抽取,因為我們希望這些局部的中面和其它中面共面,只是厚度不同,到時進行imprint或者曲面切割一下就可以了。
-
特別細小的面可以不用選擇,可以通過偏置後的幾何清理來完成
-
偏置後的面要先複製一份再偏置,偏置後的面要單獨放在base組裡面以備後續使用。
-
偏置的距離永遠是負數,因為實體外表面的法向總是朝外的。
-
整個零件的偏置操作最好一次完成(至少要用盡可能少的次數以便進行base面的連接),以免base之間彼此錯位。
step1:
創建base component
step2:
進入surfaces edit>offset選擇要偏置的面,並複製一份放在當前組。offset設置如下
接下來我們需要對base面進行修復
主要使用的工具包括edge edit面板下的toggle、replace,surfaces面板,surface edit等,具體操作請參考《庖丁解牛》那期。快來點擊下方連結一起複習一下吧。
HyperMesh寶典第十二期
【HyperMesh寶典】中面抽取看我庖丁解牛
考虑到曲面操作需要在各个面板之间反复切换,建议定义一些快捷键,关于快捷键的更详细说明请参考《快捷键任我行》那期。
HyperMesh寶典第十一期
【HyperMesh寶典】快速鍵任我行
這裡我們直接給出方老師使用的快速鍵定義語句。
bind . <space> quitpanel
proc quitpanel {} {hm_exitpanel}
bind . <Double-u> untrim
proc untrim {} {hm_pushpanelitem {surface edit} {untrim}};
bind . <s><e> surfaceedit
proc surfaceedit {} {hm_pushpanel {surface edit}};
bind . <Double-s> surfaces
proc surfaces {} {hm_pushpanel {surfaces}};
bind . <Double-l> lines
proc lines {} {hm_pushpanel {lines}};
bind . <l><e> lineedit
proc lineedit {} {hm_pushpanel {line edit}};
bind . <Double-t> surfacetrim
proc surfacetrim {} {hm_pushpanelitem {surface edit} {trim with surfs/plane}}
清理base面的操作請參考下面的視頻(考慮到視頻大小,這裡的視頻不是完整版,完整操作大約要18分鐘):
最終得到品質很高而且拓撲關係完全正確的base面如下圖所示。必須要強調一點:在曲面處理上偷懶一分鐘造成曲面缺失或連接錯誤,往往需要在網格處理階段用十倍的時間去彌補。
所以,在處理base面拓撲關係和曲面品質時不可以求快,品質才是最要緊的。為方便操作,可以只顯示當前操作的部分曲面並隨時在model browser中右鍵創建一個view一遍需要時恢復視圖。
實際上,base面的抽取會占去總時間的相當大一部分,所以,現在可以說已經進度過半了。
第二步
創建加強筋
世界上沒有百戰百勝的戰術,也沒有解決問題的萬能方法,所以我們需要根據問題的實際情況找到最佳方法。
對於注塑件來說,通常的情況是:
-
加強筋大部分是直線型的,
-
通常都是一群一群地出現
-
大部分零件只有一到兩個拔模方向。
我們先拿一群簡單的加強筋來試試牛刀。
使用的操作包括midsurf>final edit tool>surface pair和surface edit>extend
操作視頻如下
當然,真正的麻煩來源於中間那一大群格子狀的加強筋,操作過程會遇到各種麻煩,以下是部分操作視頻(整個操作需要30分鐘左右),其實還有更好的辦法處理這類加強筋(本文後續會講到)。
完成後的中面如下圖(隱藏共用邊後的效果):
局部放大並顯示共用邊的效果:
到這裡我們的工作就完成了。如果你看過《二次開發中的tcl流程控制結構》那一期你就會瞭解使用line的方法比用曲面的方法簡單很多。點擊下方連結快來複習一下吧
HyperMesh寶典第九期
如果要劃分2D網格我們還需要進行幾何清理才能高效進行。之後我們會再介紹2D網格劃分的,那時你就會發現,和抽取中面相比劃分網格難度更低。
該模型無法提供給大家做練習,請大家自己找一個類似的零件練習一下,能親手搞定才是真的會。其實本文的開頭的名人名言就是想要告訴大家這個道理。
留言列表