導(dǎo)讀:在我推出的《ANSA二次開(kāi)發(fā)從入門到精通》這門課程中從幾何檢查到網(wǎng)格劃分,再到常見(jiàn)連接(螺栓、焊點(diǎn)、焊線、膠粘),最后到界面設(shè)計(jì)給大家全面的講解了ANSA二次開(kāi)發(fā)中常用的函數(shù)及用法,也通過(guò)代碼+實(shí)例的方法逐步帶大家學(xué)習(xí)相關(guān)知識(shí)。但是大家有許多同學(xué)也是剛開(kāi)始接觸ANSA二次開(kāi)發(fā),所以我們?cè)谡n程中的例子還是比較簡(jiǎn)單的,想在工程實(shí)際應(yīng)用還需要多進(jìn)行練習(xí),但是也無(wú)非是課程中的知識(shí)的組合。
作為一名汽車仿真工程師做得最多的就是汽車相關(guān)工況的二次開(kāi)發(fā),本文就用一個(gè)最常見(jiàn)的白車身扭轉(zhuǎn)工況來(lái)帶大家再次領(lǐng)略ANSA二次開(kāi)發(fā)的魅力,后期也會(huì)有更多針對(duì)工程實(shí)例的課程、文章,歡迎大家關(guān)注我的仿真秀專欄-ANSA攻城獅。
一、認(rèn)識(shí)白車身扭轉(zhuǎn)工況
首先介紹一下白車身扭轉(zhuǎn)工況的具體加載、約束以及結(jié)果讀取吧。
1、加載
扭轉(zhuǎn)顧名思義需要在車身上加載一個(gè)扭矩,主流主機(jī)廠的仿真方法是在車身減震器安裝點(diǎn)位置左右分別施加兩個(gè)相反的力。如下圖所示
2、約束
為了保證在加載過(guò)程中車身不會(huì)發(fā)生剛體位移,我們需要施加約束。通常是在車身后部減震器安裝點(diǎn)位置約束1-3方向自由度,有的主機(jī)廠還會(huì)在保險(xiǎn)杠中部約束一個(gè)點(diǎn)的3方向自由度。
3、結(jié)果讀取與計(jì)算
不同企業(yè)的計(jì)算方法不同,這里選取一個(gè)比較主流的車身扭轉(zhuǎn)剛度計(jì)算方法
讀取前減震器z向位移Z1,Z2(單位m)。扭矩為T(單位N.m),前左右安裝點(diǎn)距離為D(單位m),車身扭轉(zhuǎn)剛度計(jì)算公式為:
最終計(jì)算出來(lái)的扭轉(zhuǎn)剛度單位為:N.m/deg
二、編程思路
首先創(chuàng)建一個(gè)界面用于和用戶進(jìn)行交互。
點(diǎn)擊選點(diǎn)按鈕后用戶選擇前后減震器安裝點(diǎn),軟件會(huì)自動(dòng)通過(guò)位置判斷每個(gè)選點(diǎn)的位置,然后為其創(chuàng)建對(duì)應(yīng)的集合
點(diǎn)擊創(chuàng)建模型按鈕后,軟件會(huì)自動(dòng)根據(jù)模型里面的集合來(lái)創(chuàng)建載荷以及約束。這樣做的好處就是下次在使用之前已經(jīng)選點(diǎn)好的模型進(jìn)行白車身扭轉(zhuǎn)剛度分析,只需要點(diǎn)擊“創(chuàng)建模型”按鈕就可以直接創(chuàng)建模型,而無(wú)需再次選點(diǎn)。
界面很簡(jiǎn)單,但是已經(jīng)能夠?qū)崿F(xiàn)基本的功能,大家也可以在此基礎(chǔ)上增加組件,實(shí)現(xiàn)更加復(fù)雜的交互功能。由于篇幅有限這里只進(jìn)行最基礎(chǔ)功能的實(shí)現(xiàn),更加復(fù)雜的功能與豐富的工程實(shí)例請(qǐng)大家繼續(xù)關(guān)注我后期的課程與文章。
總結(jié)下來(lái)我們一共要建立三個(gè)函數(shù):
1.搭建GUI界面的函數(shù)
2.允許用戶界面中選點(diǎn)的函數(shù)
3.創(chuàng)建載荷、約束、Header的函數(shù)
三、代碼編寫(xiě)實(shí)操
接下來(lái)我們開(kāi)始編寫(xiě)代碼
1、界面搭建
首先導(dǎo)入必要的庫(kù)
接下來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的界面,對(duì)代碼不熟悉的同學(xué)請(qǐng)自行查看幫助文檔或者跟著《ANSA二次開(kāi)發(fā)從入門到精通》課程系統(tǒng)學(xué)習(xí)
這里面我們先把選點(diǎn)的函數(shù)SelectNode以及創(chuàng)建模型的函數(shù)CreateHeader創(chuàng)建出來(lái),這樣子才能顯示出界面
2、用戶選點(diǎn)
這里給大家講解一下具體代碼的變成思路
下面這段代碼是允許用戶選點(diǎn),并且根據(jù)位置來(lái)判斷選取的點(diǎn)是前后減震器中的哪一個(gè)并創(chuàng)建對(duì)應(yīng)的集合,其中還加了一些邏輯判斷。
這段代碼中由四部分邏輯相同的部分,這里拿出來(lái)其中一部分進(jìn)行講解
(1)PickEntities()是允許用戶在界面中選擇節(jié)點(diǎn)的函數(shù),用戶可以選擇四個(gè)減震器安裝點(diǎn)中任意幾個(gè)。
(2)接下來(lái)通過(guò).position的類屬性來(lái)判斷改點(diǎn)所在位置,并進(jìn)行對(duì)應(yīng)集合的創(chuàng)建。
(3)然后通過(guò)GetEntity來(lái)獲取集合,如果存在我們就用已經(jīng)存在的集合,并且將集合中的點(diǎn)通過(guò)CollectEntities()搜集起來(lái),再通過(guò)RemoveFromSet()將集合中的點(diǎn)移除集合;不存在我們就使用CreateEntity()創(chuàng)建一個(gè)新的集合。
這樣做是為了我們?cè)谝呀?jīng)存在集合(之前選取過(guò)點(diǎn))的模型中重新選點(diǎn)時(shí)能夠使用新選擇的點(diǎn)來(lái)覆蓋舊的點(diǎn),增加程序的靈活性。當(dāng)然了我們每個(gè)位置點(diǎn)所建立的Set是有固定的ID的,這樣子方便索引。
(4)最后就是將這個(gè)點(diǎn)通過(guò)AddToSet()來(lái)儲(chǔ)存到幾何中進(jìn)行位置判斷時(shí)大家根據(jù)自己模型中的全局坐標(biāo)系進(jìn)行判斷就好,我這里的全局坐標(biāo)系如下圖所示:
進(jìn)行到這里大家可以測(cè)試一下程序能否正常運(yùn)行,效果就是這樣的
我們?cè)诘谝淮芜x擇時(shí)會(huì)創(chuàng)建新的Set來(lái)裝每個(gè)減震器安裝點(diǎn)的節(jié)點(diǎn),第二次選擇時(shí)則會(huì)覆蓋之前集合中的節(jié)點(diǎn)。見(jiàn)下視頻:
3、創(chuàng)建Header
代碼如下:
(5)首先通過(guò)GetEntity()獲取四個(gè)減震器安裝點(diǎn)儲(chǔ)存的集合
(6)然后我們判斷一下集合是否為空,如果為空我們彈出對(duì)話框提示用戶“請(qǐng)檢查約束點(diǎn)及加載點(diǎn)集合”
(7)集合不為空,我們搜集集合中的節(jié)點(diǎn),使用變量?jī)?chǔ)存
(8)使用CreateEntity分別創(chuàng)建Force及SPC
(9)最后使用CreateEntity創(chuàng)建Header,使用SetNastranHeader來(lái)設(shè)置Header中的內(nèi)容,進(jìn)行求解
效果如下:
到這里我們的程序就寫(xiě)完了,其實(shí)其中還可以增加很多的邏輯判斷來(lái)增強(qiáng)我們程序的容錯(cuò)率,不要出現(xiàn)錯(cuò)誤就異常退出,比如說(shuō)判斷集合中的節(jié)點(diǎn)數(shù)是否為1,如果節(jié)點(diǎn)數(shù)多余1說(shuō)明這個(gè)集合有問(wèn)題,這時(shí)候可以提示用戶檢查集合。再比如還可以增加在創(chuàng)建完Header后讓用戶選擇路徑輸出計(jì)算文件。這里大家就自由發(fā)揮想象。
審核編輯:湯梓紅
-
仿真
+關(guān)注
關(guān)注
51文章
4250瀏覽量
135433 -
Sansa
+關(guān)注
關(guān)注
0文章
4瀏覽量
2606 -
開(kāi)發(fā)程序
+關(guān)注
關(guān)注
0文章
4瀏覽量
1496
原文標(biāo)題:手把手教你編寫(xiě)白車身扭轉(zhuǎn)工況ANSA二次開(kāi)發(fā)程序
文章出處:【微信號(hào):sim_ol,微信公眾號(hào):模擬在線】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
AutoCAD的二次開(kāi)發(fā)
美女手把手教你如何裝機(jī)(中)
AutoCAD VBA二次開(kāi)發(fā)教程
手把手教你安裝Quartus II
手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)
手把手教你開(kāi)關(guān)電源PCB排板

手把手教你開(kāi)發(fā)基于單片機(jī)的wifi通信的物聯(lián)網(wǎng)項(xiàng)目(遠(yuǎn)程燈控制)

評(píng)論