加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

利用Python在Workbench的DM中参数建模

(2017-05-18 11:19:20)
标签:

act

act技术

workbench二次开发

dm参数化建模

workbench参数化建模

分类: Workbench技术及二次开发

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

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

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

 

利用Python在Workbench的DM中参数建模

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用于存储所生成的模型。

函数开头定义了两个变量并赋值,widthheight

sheetBodies为空的列表。

通过ExtAPI.DataModel.GeometryBuilder.Primitives入口下属的sheet. CreateCylinder函数创建一个圆柱面,其中CreateCylinder函数的使用格式为:

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

需要通过坐标指定圆心位置,通过坐标向量指定方向和圆柱面的高度,还需要通过float数据类型指定半径。

生成圆柱面之后将新生成的圆柱面添加到sheetbodies列表中,最后返回featureBodies,指定类型为Freeze

这段代码用到了API函数GenerateCreateCylinderMaterialTypeEnumFreezefeature.Bodiesfeature.MaterialType中的BodiesMaterialType为对象的属性。

最终创建的模型如下:

 

利用Python在Workbench的DM中参数建模
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.CreatePolylineCreatePolyline函数的使用格式为:

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

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

最终生成的模型为如下:

 

利用Python在Workbench的DM中参数建模

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.CreateBoxCreateBox的使用格式为:

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

指定两个点即可。最终生成的模型如下。

 

利用Python在Workbench的DM中参数建模

4

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有