利用Python在Workbench的DM中參數建模【轉發(fā)】

2017-07-03  by:CAE仿真在線  來源:互聯網



就Workbench的二次開發(fā)進行一些展開,文中所用到的代碼來自ANSYS的幫助手冊。

正文


Workbench的幾何建模程序DesignModeler(DM)雖不支持APDL參數化建模,但是卻支持PythonC#,大量的API函數也是基于IronPython的。靈活運用PythonDM中的API函數接口,可實現模型的參數化。

本次簡單闡釋一下利用Python和API函數進行派生幾何模型的建立,也即是基本圖元(Primitive)。

DM中的派生圖元如下圖所示。


利用Python在Workbench的DM中參數建模【轉發(fā)】ansys分析圖片1

圖1

包括片體、線體和實體。

創(chuàng)建派生幾何的API函數入口是:

ExtAPI.DataModel.GeometryBuilder.Primitives

下面分別創(chuàng)建片體、線體和實體。

(1)片體

以創(chuàng)建一個圓柱面為例,其Python代碼如下所示:

def Ongenerate(feature,function):

width = 0.015

height = 0.3

sheetBodies = []

primitive = ExtAPI.DataModel.GeometryBuilder.Primitives

cylinder = primitive.Sheet.CreateCylinder([0.,0.,0.],[0.,0.,height],width)

cylinder_generated = cylinder.Generate()

sheetBodies.Add(cylinder_generated)

feature.Bodies = sheetBodies

feature.MaterialType = MaterialTypeEnum.Freeze

return True


該段代碼將創(chuàng)建圓柱面的命令放在函數Ongenerate()中,該函數聲明的變量feature用于存儲所生成的模型。

函數開頭定義了兩個變量并賦值,width和height。

sheetBodies為空的列表。

通過ExtAPI.DataModel.GeometryBuilder.Primitives入口下屬的sheet. CreateCylinder函數創(chuàng)建一個圓柱面,其中CreateCylinder函數的使用格式為:

CreateCylinder(self: Sheet, center: IEnumerable[float], direction: IEnumerable[float], radius: float) -> IsheetCylinder。

需要通過坐標指定圓心位置,通過坐標向量指定方向和圓柱面的高度,還需要通過float數據類型指定半徑。

生成圓柱面之后將新生成的圓柱面添加到sheetbodies列表中,最后返回feature的Bodies,指定類型為Freeze。

這段代碼用到了API函數Generate、CreateCylinder、MaterialTypeEnum、Freeze,feature.Bodies與feature.MaterialType中的Bodies與MaterialType為對象的屬性。

最終創(chuàng)建的模型如下:

利用Python在Workbench的DM中參數建模【轉發(fā)】ansys分析圖片2

圖2

(2)創(chuàng)建線體

以創(chuàng)建一個多段線體為例,其Python代碼如下所示:

def Ongenerate(feature,function):

points_list = [0.,0.,0., 1.,0.,0., 1.,1.,0., 1.,1.,1.]

wireBodies = []

primitive = ExtAPI.DataModel.GeometryBuilder.Primitives

polyline = primitive.Wire.CreatePolyline(points_list)

polyline_generated = polyline.Generate()

wireBodies.Add(polyline_generated)

feature.Bodies = wireBodies

feature.MaterialType = MaterialTypeEnum.Add

return True

函數定義了用于生成多段線體的四個點列表points_list,創(chuàng)建多段線的函數入口也在ExtAPI.DataModel.GeometryBuilder.Primitives下的Wire.CreatePolyline,CreatePolyline函數的使用格式為:

CreatePolyline(self: Wire, points: IEnumerable[float]) -> IWirePolyline

只需要指定所有的點即可。

最終生成的模型為如下:

利用Python在Workbench的DM中參數建?!巨D發(fā)】ansys培訓課程圖片3

圖3

(3)實體

以創(chuàng)建一個矩形塊為例,其Python代碼如下所示:

def Ongenerate(feature,function):

point1 = [0.,0.,0.]

point2 = [1.,2.,2.]

solidBodies = []

primitive = ExtAPI.DataModel.GeometryBuilder.Primitives

box1 = primitive.Solid.CreateBox(point1, point2)

box1_generated = box1.Generate()

solidBodies.Add(box1_generated)

feature.Bodies = solidBodies

feature.MaterialType = MaterialTypeEnum.Freeze

return True

生成矩形塊只需要指定兩個角點,用到的函數是CreateBox,在ExtAPI.DataModel.GeometryBuilder.Primitives下的Solid.CreateBox,CreateBox的使用格式為:

CreateBox(self: Solid, pt1: IEnumerable[float], pt2: IEnumerable[float]) -> ISolidBox

指定兩個點即可。最終生成的模型如下。

利用Python在Workbench的DM中參數建模【轉發(fā)】ansys培訓課程圖片4

圖4






轉自公眾號:CAE技術分享

開放分享:優(yōu)質有限元技術文章,助你自學成才

相關標簽搜索:利用Python在Workbench的DM中參數建?!巨D發(fā)】 Ansys有限元培訓 Ansys workbench培訓 ansys視頻教程 ansys workbench教程 ansys APDL經典教程 ansys資料下載 ansys技術咨詢 ansys基礎知識 ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓 

編輯
在線報名:
  • 客服在線請直接聯系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com