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

标签:
actact技术workbench二次开发dm参数化建模workbench参数化建模 |
分类: Workbench技术及二次开发 |
Workbench的几何建模程序DesignModeler(DM)虽不支持APDL参数化建模,但是却支持Python和C#,大量的API函数也是基于IronPython的。灵活运用Python和DM中的API函数接口,可实现模型的参数化。
本次简单阐释一下利用Python和API函数进行派生几何模型的建立,也即是基本图元(Primitive)。
DM中的派生图元如下图所示。
图1
包括片体、线体和实体。
创建派生几何的API函数入口是:
ExtAPI.DataModel.GeometryBuilder.Primitives
下面分别创建片体、线体和实体。
(1)片体
以创建一个圆柱面为例,其Python代码如下所示:
def Ongenerate(feature,function):
该段代码将创建圆柱面的命令放在函数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为对象的属性。
最终创建的模型如下:
(2)创建线体
以创建一个多段线体为例,其Python代码如下所示:
def Ongenerate(feature,function):
函数定义了用于生成多段线体的四个点列表points_list,创建多段线的函数入口也在ExtAPI.DataModel.GeometryBuilder.Primitives下的Wire.CreatePolyline,CreatePolyline函数的使用格式为:
CreatePolyline(self: Wire, points: IEnumerable[float]) -> IWirePolyline
只需要指定所有的点即可。
最终生成的模型为如下:
图3
(3)实体
以创建一个矩形块为例,其Python代码如下所示:
def Ongenerate(feature,function):
CreateBox(self: Solid, pt1: IEnumerable[float], pt2: IEnumerable[float]) -> ISolidBox
指定两个点即可。最终生成的模型如下。
图4