利用Python在Workbench的DM中参数建模【转发】

2017-07-03  by:CAE仿真在线  来源:互联网



就Workbench的二次开发进行一些展开,文中所用到的代码来自ANSYS的帮助手册。

正文


Workbench的几何建模程序DesignModeler(DM)虽不支持APDL参数化建模,但是却支持PythonC#,大量的API函数也是基于IronPython的。灵活运用PythonDM中的API函数接口,可实现模型的参数化。

本次简单阐释一下利用Python和API函数进行派生几何模型的建立,也即是基本图元(Primitive)。

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


利用Python在Workbench的DM中参数建模【转发】ansys分析图片1

图1

包括片体、线体和实体。

创建派生几何的API函数入口是:

ExtAPI.DataModel.GeometryBuilder.Primitives

下面分别创建片体、线体和实体。

(1)片体

以创建一个圆柱面为例,其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


该段代码将创建圆柱面的命令放在函数Ongenerate()中,该函数声明的变量feature用于存储所生成的模型。

函数开头定义了两个变量并赋值,width和height。

sheetBodies为空的列表。

通过ExtAPI.DataModel.GeometryBuilder.Primitives入口下属的sheet. CreateCylinder函数创建一个圆柱面,其中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为对象的属性。

最终创建的模型如下:

利用Python在Workbench的DM中参数建模【转发】ansys分析图片2

图2

(2)创建线体

以创建一个多段线体为例,其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,创建多段线的函数入口也在ExtAPI.DataModel.GeometryBuilder.Primitives下的Wire.CreatePolyline,CreatePolyline函数的使用格式为:

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

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

最终生成的模型为如下:

利用Python在Workbench的DM中参数建模【转发】ansys培训课程图片3

图3

(3)实体

以创建一个矩形块为例,其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中参数建模【转发】ansys培训课程图片4

图4






转自公众号:CAE技术分享

开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:利用Python在Workbench的DM中参数建模【转发】 Ansys有限元培训 Ansys workbench培训 ansys视频教程 ansys workbench教程 ansys APDL经典教程 ansys资料下载 ansys技术咨询 ansys基础知识 ansys代做 Fluent、CFX流体分析 HFSS电磁分析 Abaqus培训 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com