利用Python在Workbench的DM中參數(shù)建模【轉(zhuǎn)發(fā)】
2017-07-03 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
就Workbench的二次開發(fā)進行一些展開,文中所用到的代碼來自ANSYS的幫助手冊。
正文
Workbench的幾何建模程序DesignModeler(DM)雖不支持APDL參數(shù)化建模,但是卻支持Python和C#,大量的API函數(shù)也是基于IronPython的。靈活運用Python和DM中的API函數(shù)接口,可實現(xiàn)模型的參數(shù)化。
本次簡單闡釋一下利用Python和API函數(shù)進行派生幾何模型的建立,也即是基本圖元(Primitive)。
DM中的派生圖元如下圖所示。
圖1
包括片體、線體和實體。
創(chuàng)建派生幾何的API函數(shù)入口是:
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)建圓柱面的命令放在函數(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)建的模型如下:
圖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ù)定義了用于生成多段線體的四個點列表points_list,創(chuàng)建多段線的函數(shù)入口也在ExtAPI.DataModel.GeometryBuilder.Primitives下的Wire.CreatePolyline,CreatePolyline函數(shù)的使用格式為:
CreatePolyline(self: Wire, points: IEnumerable[float]) -> IWirePolyline
只需要指定所有的點即可。
最終生成的模型為如下:
圖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
生成矩形塊只需要指定兩個角點,用到的函數(shù)是CreateBox,在ExtAPI.DataModel.GeometryBuilder.Primitives下的Solid.CreateBox,CreateBox的使用格式為:
CreateBox(self: Solid, pt1: IEnumerable[float], pt2: IEnumerable[float]) -> ISolidBox
指定兩個點即可。最終生成的模型如下。
圖4
轉(zhuǎn)自公眾號:CAE技術(shù)分享
相關(guān)標(biāo)簽搜索:利用Python在Workbench的DM中參數(shù)建模【轉(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)