利用Python在Workbench的DM中參數(shù)建?!巨D(zhuǎn)發(fā)】

2017-07-03  by:CAE仿真在線  來源:互聯(lián)網(wǎng)



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

正文


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

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

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


利用Python在Workbench的DM中參數(shù)建?!巨D(zhuǎn)發(fā)】ansys分析圖片1

圖1

包括片體、線體和實(shí)體。

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

ExtAPI.DataModel.GeometryBuilder.Primitives

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

(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)建圓柱面的命令放在函數(shù)Ongenerate()中,該函數(shù)聲明的變量feature用于存儲所生成的模型。

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

sheetBodies為空的列表。

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

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

需要通過坐標(biāo)指定圓心位置,通過坐標(biāo)向量指定方向和圓柱面的高度,還需要通過float數(shù)據(jù)類型指定半徑。

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

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

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

利用Python在Workbench的DM中參數(shù)建模【轉(zhuǎn)發(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

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

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

只需要指定所有的點(diǎn)即可。

最終生成的模型為如下:

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

圖3

(3)實(shí)體

以創(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

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

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

指定兩個點(diǎn)即可。最終生成的模型如下。

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

圖4






轉(zhuǎn)自公眾號:CAE技術(shù)分享

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

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

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

全國服務(wù)熱線

1358-032-9919

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