基于Catia和Abaqus的一種通用參數化建模及自動化仿真分析方法


基于Catia和Abaqus的一種通用參數化建模及自動化仿真分析方法

        自動化仿真分析和結構參數優化的功能,通常均需要通過腳本程序實現。然而,對于不同拓撲結構的產品,仿真分析中需要加載/約束的位置通常會有所不同,使得實現自動化仿真的程序很難做到通用。因此,當產品結構的拓撲構型變化時,自動化仿真程序也需要相應的修改,程序不具有通用性。例如:Abaqus中一般通過線/面上點的坐標或線/面的索引id來獲取,但當結構拓撲改變時,所需加載/約束的點/線/面也會改變,其索引id和其上點的坐標均會改變,使得程序中線/面的選擇很難實現通用。此外,針對較復雜的結構,仿真程序中需要選擇的線/面等較多,通過程序實現約束位置的選擇十分不便。本文提出了一種通用的參數化建模及自動化仿真分析方法,可用于不同拓撲結構的產品自動化仿真分析和結構參數優化。實現思路如下:

        (1)在第三方CAD軟件(本文以Catia為例)建立結構的參數化模型,并將該模型的所有加載/約束的點/線/面提取出來,并按照一定的命名規則進行命名(如:pressure、cload、tie、symmetry、disp等);

        (2)將CAD模型導入CAE軟件(文本以Abaqus為例)中,通過事先約定的“名稱---載荷/約束類型”規則,對CAD模型中的點/線/面施加對應的約束/載荷(如:pressure---該位置施加壓力載荷、cload---該位置施加集中力載荷、tie---該位置施加固定約束、symmetry---該位置施加對稱約束、disp---該位置施加位移約束等)。

        該方法也適用于將結構的幾何模型導入第三方網格劃分軟件生成網格模型,再導入Abaqus中實現在孤立網格上的自動約束和加載。

1. 基于Catia的參數化建模

        不失一般性,本文以如下圖結構作為示例,詳細介紹為實現通用結構的自動化仿真分析,采用商用CAD軟件Catia的參數化建模方法。

基于Catia和Abaqus的一種通用參數化建模及自動化仿真分析方法的圖1

圖 Catia中結構參數化模型

        如上圖所示,零件由兩個幾何體組成,并建立了兩個設計參數(totalLength和totalWidth),并將設計參數導出到designTable中(鏈接到文件designTable.txt)。提取所需加載/約束的線/面特征存放入幾何圖形集中,并按照一定的規則命名(本示例中,temp_pressure表示該面施加壓力載荷,temp_disp123表示該面施加XYZ三個方向的約束,其余類似)。

        由于Abaqus對其導入的幾何模型(sat、igs、stp、Catia V5等)通常采用默認的命名方式(-1、-2,-3等)進行命名,無法延用幾何模型中零部件/幾何集等原有的名稱(stp格式也僅可以保留裝配模型的零部件名稱)。因此,無法直接滿足 “名稱---載荷/約束類型”的命名規則。為了解決該問題,可以將幾何模型與每個載荷約束面分別存儲為一個文件,文件名遵循 “名稱---載荷/約束類型”規則,并分別導入Abaqus中。

        本文基于Python語言對Catia進行二次開發,自動輸出以下文件(本文以stp格式為例)。

基于Catia和Abaqus的一種通用參數化建模及自動化仿真分析方法的圖2

        其中,testPart.stp為實體幾何模型文件,其余stp文件為待加載/約束的幾何線/面特征。

        部分代碼如下:

def updateModel():

  import win32com.client

  import os

  current_path = os.getcwd()

  fileList = os.listdir(current_path)

  for file in fileList:

    if file.endswith('stp'):

      os.remove(file)

  catia = win32com.client.Dispatch('catia.application')

  docs = catia.documents

  partDoc = docs.open(os.path.join(current_path, "testPart.CATPart"))

  part = partDoc.part

  relations = part.Relations

  table = relations.item("designTable")

  table.FilePath = os.path.join(current_path, 'designTable.txt')

  part.Update()

  partDoc.ExportData(os.path.join(current_path, "testPart.stp"), "stp")

    …………

2. 基于Abaqus的自動化仿真分析

        (1) 將第1節中的所有stp文件均導入Abaqus中,并對除testPart.stp幾何模型外的所有幾何線/面特征創建set和surface,名稱沿用“名稱---載荷/約束類型”的命名規則;

        (2) 將第1節中的所有stp文件對應的幾何特征進行布爾運算,生成新部件(新部件保留了原始部件所創建的set和surface,便于材料的賦予和約束載荷的直接施加,而無需使用程序實現對線/面等的提取);

        (3) 對新部件進行網格劃分;

        (4) 根據set和surface的名稱,創建對應的載荷/約束。

基于Catia和Abaqus的一種通用參數化建模及自動化仿真分析方法的圖3

        注意:對于幾何線特征,布爾運算時無法進行合并,因此,當需要對幾何線施加約束或載荷時,需要額外處理(下圖中的createSetWithNodes函數)。處理思路為:

        (1) 獲取結構外表面的所有節點;

        (2) 判斷節點是否位于幾何特征線上;

        (3) 存儲所有位于幾何特征線的節點,并創建set。

        代碼框架如下:

分析腳本.png

3. 應用推廣

        以上方法/程序具有如下通用性:

        (1) 上述基于Catia的參數化建模可以用其它CAD軟件替代,只需保證加載/約束線/面的命名規則,并分別導出即可;

        (2) 若結構拓撲不變,僅尺寸變化,則只需更新designTable.txt文件中的設計參數值即可,自動化仿真程序保持不變,可用于結構尺寸優化;

        (3) 若結構拓撲不變,而加載/約束的線/面有變化,則只需更新catia模型文件中提取的幾何圖形集中對應的線/面,自動化仿真程序保持不變;

        (4) 若加載/約束的類型有增加,只需在自動化仿真程序中擴充相應加載/約束程序(補充一次即可);

        (5) 若拓撲構型有變化,需要在Catia中重新建立參數化模型,并根據命名規則提取待加載/約束的幾何特征,而自動化仿真程序保持不變(或少量修改)。

以下內容為付費內容,請購買后觀看

文章中涉及到的所有腳本程序及案例文件

App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

2
1
2