【HyperMesh寶典】之名字和ID
本貼原創(chuàng),作者:AltairChina
本講假設(shè)求解器是OptiStruct,但是對ANSYS,NASTRAN等一系列求解器也適用。
《唐伯虎點(diǎn)秋香》里,唐伯虎進(jìn)華府做下人的時候,他的編號是9527,為什么不用名字而用編號呢?大概這樣管家可以少用一點(diǎn)內(nèi)存。
回到HyperMesh中來,HyperMesh中的對象除了以下37種對象有名字之外,其余類型的對象都只有編號。

名字基本上是前處理的概念,幾乎所有對象到了求解器就只剩ID號了。求解器讀取fem文件的時候是自動跳過這些信息的(fem文件的注釋)。大部分時候我們都希望名字里面能包含比較多的信息,比如component的名字要包含材料厚度信息,工況名字要包括工況的物理意義等。
不同的應(yīng)用場景會對名字和ID號有不同的要求,本文通過9個虛擬應(yīng)用場景展開講解,方便大家理解。
場景1:增加/修改/刪除asm/component/material/prop名的字后綴或者前綴
場景2:將prop的名字修改為component的名字,如果prop同時賦給了多個component,需要分別復(fù)制一份。
場景3:比場景2再進(jìn)一步:把屬性按照單元進(jìn)行分拆
場景4:把component的ID號改為屬性的ID號
場景5:按照空間位置的排列進(jìn)行編號
場景6:基于相鄰單元的連接關(guān)系對單元和節(jié)點(diǎn)進(jìn)行重新編號
場景7:載荷工況是標(biāo)準(zhǔn)化的include文件,要求網(wǎng)格文件中的加載點(diǎn)有確定的ID號。
場景8:為各個include文件指定不重疊的id范圍
場景9:沒有include文件,但希望各個component的單元ID號放在規(guī)定的ID號范圍內(nèi)。
##################################################################
名字
##################################################################
場景1:增加/修改/刪除asm/component/material/prop名的字后綴或者前綴
Step1,運(yùn)行腳本syncTools8.tcl
Step2,找到最后的工具并填寫相應(yīng)的后綴/前綴

Step3,點(diǎn)擊rename并在彈出的界面下選中要修改名稱的component
在model browser里面看到已經(jīng)完成了名字的修改

思考題:會寫tcl腳本的同學(xué)可以想一想如何避免對本來就是prt_開頭的零件不追加前綴。
場景2:將prop的名字修改為component的名字,如果prop同時賦給了多個component,需要分別復(fù)制一份。
模型如下:

它們的prop都是同一個叫做frm的殼單元屬性。
Step1,運(yùn)行腳本syncTools8.tcl
Step2,找到工具

運(yùn)行腳本后實(shí)現(xiàn)了屬性按照零件進(jìn)行分拆

場景3:比場景2再進(jìn)一步:把屬性按照單元進(jìn)行分拆。這樣可以直接在OptiStruct或者HyperStudy中把每一個單元的厚度創(chuàng)建成設(shè)計變量進(jìn)行優(yōu)化。
Step1,先為每一個單元創(chuàng)建一個component,并將該單元move進(jìn)去
開始時模型是這樣的一個component,只有一個屬性frm

運(yùn)行如下腳本

分拆后的components如下圖:

接下來選中這些components,并把frm1屬性賦給所有選中的components,這在HyperMesh2017版本中很容易實(shí)現(xiàn)。

Step2,運(yùn)行腳本syncTools8.tcl中的功能后結(jié)果如下(只顯示了一小部分)

##################################################################
ID
##################################################################
名字是給人看的,而ID號基本上是給程序用的。
在開始正式介紹各種ID管理功能之前,先說一下控制ID號有什么應(yīng)用上的價值。
1、方便選擇
HyperMesh在選擇對象的時候總是可以按照ID號進(jìn)行選擇,比如1-10000,選擇后你可以復(fù)制、移動、加載創(chuàng)建幾何等等各種操作。
HyperMesh支持各種書寫方式,總的規(guī)則是由5個部分組成:
<start number> - <end number> by <increment value>
后面的4個部分都是可以省略的
-可以用through或thru或t簡寫
by可以寫成b
以下是一些例子:
127
127 – 722
300 through 600
300 thru 600
300 t 600
1000 - 2000 by 100
1000 - 2000 b 100
另外,也可以使用英文的逗號將多個列表連接起來。
例如:
1, 3, 4, 5, 100
3, 5, 8 - 10, 800, 850
1 - 100 by 2, 77, 400 t 500 b 3
2、方便寫腳本
大部分HyperMesh用戶都是通過交互的方式使用軟件,但是對于腳本開發(fā)人員來說很多時候在腳本運(yùn)行期間需要通過命令自動選中需要的對象。如果ID號的規(guī)律是事先知道的,那腳本中就不需要再處理ID號了。
3、模型的重用
如果ID號是彼此分開的,模型的網(wǎng)格和工況只需要通過include文件就可以實(shí)現(xiàn)重用。
場景4:把component的ID號改為屬性的ID號(當(dāng)然這就要求每個component有專屬的屬性,否則就會有ID號重復(fù)的錯誤了)
這個工具也是在這個腳本里面

結(jié)果如下:

等一等,這個腳本并不是標(biāo)準(zhǔn)HyperMesh的一部分,你需要下載一下
下載鏈接:xxxxxxxxxxxxxxxxxxx
除了以上功能該腳本還提供了很多別的功能
1、同步HyperMesh數(shù)據(jù)庫id和求解器id,二次開發(fā)的人會關(guān)心,主要是對顯式分析求解器有影響,不搞二次開發(fā)的放心跳過。
2、各種rename功能,看名字就知道怎么用了

3、通過屬性創(chuàng)建component

一個腳本不可能解決所有問題,如果你在實(shí)際工作中遇到其它類似的問題又沒有解決方式,記得聯(lián)系澳汰爾公司的技術(shù)支持。
場景5:按照空間位置進(jìn)行編號。這部分內(nèi)容可以從幫助文件找到。用這種方法可以在用戶定義的局部坐標(biāo)系(笛卡爾坐標(biāo)或柱狀坐標(biāo))兩個相互垂直的方向上對四邊形單元或節(jié)點(diǎn)進(jìn)行重編號。
使用該工具需要先把user profile選擇為Aerospace

然后就可以在新增的Aerospace下拉菜單中找到Spatial ID manager

重新編碼前單元的ID如下:

按坐標(biāo)系重編號的步驟如下:
Step1,選擇需要重新編號的一組節(jié)點(diǎn)或者單元。
Step2,選擇局部坐標(biāo)系。
Step3,在Start Id那欄填入一個數(shù)字ID編號,新編號范圍不能與與現(xiàn)有的編號沖突。
Step4,指定第一根軸方向、容差和ID編號增量1。
Step5,指定第二根軸方向、容差和ID編號增量100。

Step6,點(diǎn)擊Renumber單元重新編碼后X增量為1,Y增量為100。

如果是回轉(zhuǎn)結(jié)構(gòu),需要使用圓柱坐標(biāo)系。操作方法類似

結(jié)果如下圖:

場景6:基于相鄰單元的連接關(guān)系對單元和節(jié)點(diǎn)進(jìn)行重新編號
有時單元和節(jié)點(diǎn)的重新編號是基于單元/節(jié)點(diǎn)的連接方向而不是局部坐標(biāo)系方向。這時場景5的方法就無法使用了。這時需要讓HyperMesh根據(jù)單元的相鄰關(guān)系來實(shí)現(xiàn)ID號的遞增。用這種方法必須選擇起始單元或節(jié)點(diǎn)和臨近的連接單元或節(jié)點(diǎn)來指示第一方向和第二方向(類似于坐標(biāo)系的原點(diǎn)/第一軸/第二軸)。這些被重新編號的單元必須是彼此相連的,而且必須是映射模式的四邊形單元。

操作過程如下:
1. 將類型(Type)選為Adjacent。
2. 為Select Entities指定單元或節(jié)點(diǎn),輸入Start Id即開始編號的數(shù)字。
3. 選擇第一方向的單元或節(jié)點(diǎn)、指定ID編號增量。此時選擇的單元或節(jié)點(diǎn)需要與起始的具有連接關(guān)系。
4. 選擇第二方向的單元或節(jié)點(diǎn)、指定ID編號增量。此時選擇的單元或節(jié)點(diǎn)也需要與起始的具有連接關(guān)系。

點(diǎn)擊Renumber按鈕實(shí)現(xiàn)單元(或節(jié)點(diǎn))重新編號

說明:容差的設(shè)置對重新編號的影響
容差是用來將節(jié)點(diǎn)或單元組合起來,以得到正確有序的重新編號的一種方法。例如,你有一個簡單的結(jié)構(gòu)化網(wǎng)格,該網(wǎng)格在局部X方向上,節(jié)點(diǎn)間距為5mm,在局部Y方向上,節(jié)點(diǎn)間距為2mm。你想以101為起始編號,重新對節(jié)點(diǎn)進(jìn)行編號。并且在局部X方向上,編號增量為1(例如101,101+1,101+2等等),在局部Y方向上,編號增量為10(例如101,101+10,101+20等等)。

如果你用的容差為1mm(該值<5mm并且<2mm的節(jié)點(diǎn)間隙),重新編號結(jié)果如下:

在實(shí)際場景中,很少能得到上述例子中那樣的網(wǎng)格,因?yàn)橥ǔ9?jié)點(diǎn)間的間隙是變化的,會如下圖所示。現(xiàn)在你想得到一樣的重新編號,用了同樣的容差(1mm)

得到的結(jié)果會是這樣的:

正如你在上圖所看到的,重新編號的效果不符合預(yù)期。這是因?yàn)楣?jié)點(diǎn)間的最小間隙是0.5mm,小于了1mm的容差。如果你將容差減小到0.1mm,就會得到正確的重新編號。
我們要介紹的最后一種ID管理工具叫ID manager,它可以規(guī)定每一個include文件的范圍,鎖定id,保留id給未來使用等,ID manager的界面如下:

場景7:載荷工況是標(biāo)準(zhǔn)化的include文件,要求網(wǎng)格文件中的加載點(diǎn)有固定的ID號。
原始模型如下(只看最下面的4個加載點(diǎn))

Step1,先用renumber面版將4個加載點(diǎn)分別renumber到1000000,2000000,3000000,4000000

結(jié)果如下:

Step2、打開ID Maganer,在node那一行右擊選擇lock>Discrete IDs

選擇4個節(jié)點(diǎn)后,后面#locks一列多了一個數(shù)字

這樣這4個節(jié)點(diǎn)就不會受renumber操作的影響了,除非在相同的界面右擊進(jìn)行unlock。這樣就可以放心大膽地把載荷工況做成固定ID號的include文件了。
場景8:為各個include文件指定不重疊的id范圍。目的是避免在導(dǎo)入的時候發(fā)生ID號沖突及自動renumber(HyperMesh會進(jìn)行重新編號,把沖突的ID號放在當(dāng)前最大ID號的后面)。
因?yàn)閕d管理經(jīng)常和include文件一起出現(xiàn),所以先介紹一下include文件的概念和基本操作。Include文件是為了方便對大模型的各個子系統(tǒng)分別進(jìn)行創(chuàng)建和管理。比如汽車的底盤、車身、車門等子系統(tǒng)分別保存在各自的include中,載荷工況數(shù)據(jù)也可以保存在單獨(dú)的include文件中,材料數(shù)據(jù)也可以是單獨(dú)的include文件。整車分析的時候只需要把各個子系統(tǒng)的include文件包含進(jìn)來并進(jìn)行連接(在整車模型中通常是在兩個RBE2的獨(dú)立節(jié)點(diǎn)之間創(chuàng)建cbush單元),然后再加上整車的工況include文件就可以進(jìn)行整車級的分析了。
Include文件格式和普通的求解器文件完全一致。順便提一句,有限元中的include文件和c語言中的#include頭文件是一樣的。例如python的c語言接口頭文件是開頭幾行是這樣的

意思是把后綴為.h的三個文件的內(nèi)容粘貼到這里。編程文件的頭文件可以進(jìn)行任意級嵌套,有限元的include文件也是如此,只不過除非是超級復(fù)雜的裝配模型,很少有人真的會去創(chuàng)建很多級的嵌套。
以下是一個簡單的include文件例子。
有如下兩個OptiStruct求解文件,其中input.fem是主文件(也就是提交求解的時候被選擇的文件),sub2.inc是include文件,提交求解的時候只需要放在相應(yīng)的目錄即可。

求解器實(shí)際讀取到的內(nèi)容相當(dāng)于用sub2.inc的文件內(nèi)容替代INCLUDE那一行

創(chuàng)建include文件在HyperMesh中只需要在model browser中右擊并選擇Create >Include File

將視圖類型調(diào)整到include view

就可以編輯include文件的存放路徑以及include文件的類型是模型/工況/IO了
然后把要放入某一個include文件的對象用鼠標(biāo)拖拽到include文件的名字上就可以了。

下例中已經(jīng)把模型中的各個零件按照include文件進(jìn)行了整理

接下來為各個include文件指定不同的ID號范圍(不允許有重疊)
Step1,打開ID manager

Step2,依次右擊每一個include文件,選擇edit,在對話框中輸入要求的id范圍。如果現(xiàn)有的對象id有不在該范圍的會出現(xiàn)在#Overflow列中。

編輯后的結(jié)果如下:

Step3,消除overflow
右擊Correct overflow即可完成

完成后的id情況如下

為了避免重復(fù)勞動,可以在空白處右鍵單擊將所有id管理的信息導(dǎo)出到csv文件進(jìn)行保存。下次直接導(dǎo)入csv文件即可完成ID號的設(shè)定。

更詳細(xì)的ID Manager使用方法請參考幫助文件。
場景9:希望把各個component的單元ID號放在規(guī)定的ID號范圍內(nèi),但是沒有include文件。
如果可以使用空間某個局部坐標(biāo)系將各個component區(qū)分開,可以使用前面場景5的方法,否則需要使用renumber面板進(jìn)行多次renumber。
Step1,將所有對象renumber到很大的ID號。目的是把后面步驟要用的ID段空出來。

Step2,對每個component分別進(jìn)行renumber(略)
如果,模型很小,這樣的手工操作是可以的,如果零件數(shù)量很多,可以考慮寫一個腳本
本文介紹的名字和ID都是很不起眼的工具,你可以完全忽略這些知識,但是技多不壓身,先收藏著也無妨,萬一哪天發(fā)現(xiàn)需要了可以再翻出來看看。
最后申明一點(diǎn):腳本有風(fēng)險,使用前請先備份好原始模型。
如有技術(shù)咨詢,可發(fā)郵件至support@altair.com.cn 或致電400 619 6186咨詢。
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺客服
TOP




















