本文为 WB二次开发 专篇的第 10 篇。专栏文章索引详见下文:
ANSYS WB二次开发专栏文章索引
SpaceCliam实体对象的生成方式有很多种,前文讲解了如何通过拉伸进行,本文讲解如何通过旋转和缩放进行。
首先旋转分为面的旋转以及线的旋转。
一、旋转成样
1、面的旋转
步骤:先选择旋转轴,然后在选择旋转的面,其次对旋转成体进行设置,选项与前面拉伸的选项一致
# 选择某条线作为旋转轴 旋转成样
selection = FaceSelection.Create(GetRootPart().Bodies[2].Faces[0])
axisSelection = Selection.Create(GetRootPart().Curves[0])
axis = RevolveFaces.GetAxisFromSelection(selection, axisSelection)
options = RevolveFaceOptions()
options.ExtrudeType = ExtrudeType.Cut
result = RevolveFaces.Execute(selection, axis, DEG(162), options)
# EndBlock
# 选择坐标轴作为旋转轴
selection = Selection.Create(GetRootPart().Bodies[0].Faces[0])
axisSelection = Selection.Create(GetRootPart().CoordinateSystems[0].Axes[1])
axis = RevolveFaces.GetAxisFromSelection(selection, axisSelection)
options = RevolveFaceOptions()
options.ExtrudeType = ExtrudeType.Add
result = RevolveFaces.Execute(selection, axis, DEG(57), options)
# EndBlock
2、线的旋转
需输入五个参数:
- 旋转轴的定义:无法通过选择定义,只有通过Create方法定义一个旋转轴,Line.Create指定旋转轴通过的点坐标以及方向向量
- 需要旋转的线,通过选择来定义
- 角度定义
- 是否两边对称旋转
- 扩展布尔运算类型
# 旋转 1 条边
selection = EdgeSelection.Create(GetRootPart().Bodies[1].Edges[26])
result = RevolveEdges.Execute(selection, Line.Create(Point.Create(MM(100), MM(0), MM(0)),
Direction.DirY), DEG(-19), False, ExtrudeType.None)
# EndBlock
3、扫掠
一般只关心面的扫掠,线的扫掠直接拉伸即可。首先选择面,然后选择扫掠的线或者曲线
# 扫掠 1 个面
selection = FaceSelection.Create(GetRootPart().Bodies[0].Faces[1])
trajectories = Selection.Create(GetRootPart().Curves[0])
options = SweepCommandOptions()
options.ExtrudeType = ExtrudeType.Add
result = Sweep.Execute(selection, trajectories, MM(55), options, None)
# EndBlock
二、缩放
步骤如下:
- 选择要缩放的体
- Preservehole 代表是否同步缩放体中的孔洞,默认为False,也即不缩放,当整体模型需要缩放时,应设置为yes
- 创建缩放的坐标原点
- 缩放三个方向的比例,0~1000表示缩小,大于1000表示放大,例如缩小5倍就填入500,放大2倍就填入2000
当三个方向的缩放比例不一致时,分别填入不同的缩放比例即可。三个方向由前面的Frame创建的方向控制
# 缩放 1 个对象
selection = BodySelection.Create(GetRootPart().Bodies[0])
preserveHoles = False
result = Scale.Execute(selection, Frame.Create(Point.Create(MM(373.560176881768), MM(-25), MM(-48.7531024732733)),
Direction.DirX,
Direction.DirY), Vector.Create(MM(500), MM(500), MM(500)), preserveHoles)
# EndBlock
三、圆角与填充
直到 UPTO 在手动操作的时候比较方便,但代码使用过程比较繁琐,不推荐使用
1、圆角
选择某个体的边界线,输入圆角半径即可创建
# 创建 1 个圆角
selection = EdgeSelection.Create(GetRootPart().Bodies[1].Edges[16])
options = ConstantRoundOptions()
result = ConstantRound.Execute(selection, MM(3.42), options, None)
# EndBlock
# 修改 1 个圆形
selection = FaceSelection.Create(GetRootPart().Bodies[1].Faces[14])
options = ConstantRoundOptions()
result = ConstantRound.Execute(selection, MM(8.01), options, None)
# EndBlock
2、填充
通过选择线或者曲线,在延伸成面,也可选择一个闭合面,填充成体
# 填充
selection = Selection.Create(Edge4, Edge5, Edge6, Edge7)
secondarySelection = Selection.Empty()
options = FillOptions()
result = Fill.Execute(selection, secondarySelection, options, FillMode.ThreeD, Info5)
# EndBlock
为更加方便大家系统学习WB脚本知识及软件二次开发流程,水哥特推出《基于Python脚本ANSYS Workbench 软件二次开发专题教程》,本教程分为6篇,分别为Python语言基础知识篇、SpaceClaim脚本知识篇、Mechanical脚本知识篇、Workbench项目管理脚本知识篇、项目脚本调试篇以及项目软件二次开发篇,本套课程总计约100课时,平均每个课时30~50分钟,全套课程总计约 70小时,通过本教程,学员可系统性的掌握利用Python语言进行ansys workbench二次开发的相关技巧,课程详情请点击下方文章了解:
基于Python脚本ANSYS Workbench软件二次开发专题教程
有时间麻烦帮忙点击下公众号文末的广告哦, 权当码字的辛苦费,感谢大家!
暂无评论内容