本文为 WB二次开发 专篇的第 11 篇。专栏文章索引详见下文:
ANSYS WB二次开发专栏文章索引
查看移动大类的函数 Move ,使用频率最高的 Move.Translate以及Move.Rotate
一、对于平移而言:
1、首先要选择对象,如面、曲线、几何体等
2、指定方向,如果不是沿着坐标轴移动,可通过Direction.Create通过方向向量进行创建
3、通过控制MoveOptions的选项Copy值(True\False)来确定是否是平移复制,默认为False, 也即是移动
4、默认平移方向是以对象的几何中心作为参考点,但也可选择其他曲线作为移动轨迹
5、通过指定达到点来移动,这种方式通常情况下需要指定参考点,以及到达点,默认参考点为对象几何中心。
指定参考点可手动创建,也即通过位置坐标定义选择集,但是参考点一定要用Move.GetAnchorPoint进行定义。
# 平移 X 手柄
selection = BodySelection.Create(GetRootPart().Bodies[0])
direction = Direction.DirX
options = MoveOptions()
result = Move.Translate(selection, direction, MM(13.49), options)
# EndBlock
#按指定方向进行平移复制
# 平移 X 手柄
selection = BodySelection.Create(GetRootPart().Bodies[0])
direction = Direction.DirX
options = MoveOptions()
options.Copy=True
result = Move.Translate(selection, direction, MM(13.49), options)
# EndBlock
# 沿迹线移动—距离是通过输入与曲线长度的比例值来确定
selection = BodySelection.Create(GetRootPart().Bodies[0])
trajectory = EdgeSelection.Create(GetRootPart().Bodies[0].Edges[11])
options = MoveOptions()
result = Move.AlongTrajectory(selection, trajectory, 0.5, options)
# EndBlock
# 向上移动至所选对象
selection = BodySelection.Create(GetRootPart().Bodies[0])
upToSelection = Selection.Create(GetRootPart().Bodies[0].Edges[12].GetChildren[ICurvePoint]()[1])
anchorPoint = Move.GetAnchorPoint(Selection.Create(GetRootPart().Bodies[0].Edges[13].GetChildren[ICurvePoint]()[1]))
options = MoveOptions()
result = Move.UpTo(selection, upToSelection, anchorPoint, options)
# EndBlock
二、对于旋转而言:
操作思路:
通过选择几何体指定旋转中心
如果是指定的几何线,则直接通过GetAxis指定旋转轴
# 旋转 Z 手柄
selection = BodySelection.Create(GetRootPart().Bodies[0])
anchor = EdgeSelection.Create(GetRootPart().Bodies[0].Edges[11])
axis = Move.GetAxis(anchor)
options = MoveOptions()
result = Move.Rotate(selection, axis, DEG(89), options)
# EndBlock
选择一个面,然后获取该面的几何中心,创建旋转轴
# 旋转 Y 手柄
selection = BodySelection.Create(GetRootPart().Bodies[0])
anchor = FaceSelection.Create(GetRootPart().Bodies[0].Faces[6])
anchorPoint = Move.GetAnchorPoint(anchor)
axis = Line.Create(anchorPoint, Direction.DirY)
options = MoveOptions()
result = Move.Rotate(selection, axis, DEG(36), options)
# EndBlock
选择一个几何点,然后创建旋转轴
# 旋转 Y 手柄
selection = BodySelection.Create(GetRootPart().Bodies[0])
anchor = Selection.Create(GetRootPart().Bodies[0].Edges[13].GetChildren[ICurvePoint]()[1])
anchorPoint = Move.GetAnchorPoint(anchor)
axis = Line.Create(anchorPoint, Direction.DirY)
options = MoveOptions()
result = Move.Rotate(selection, axis, DEG(63), options)
创建一个三维点和旋转轴,适用于旋转的基点不在几何体本身上面
# Toggle 3D Sketch
# 创建一个三维点作为旋转的基点
Sketch3D.Set3DSketchMode(True)
P1=Point.Create(MM(50),MM(0),MM(0))
Re=SketchPoint.Create(P1)
Re=InteractionMode.Solid
Re=ViewHelper.SetViewMode(Re)
#选择基点和需要旋转的体
sel2=Selection.Create(GetRootPart().Curves[0])
sel1= BodySelection.Create(GetRootPart().Bodies[0])
anchorPoint = Move.GetAnchorPoint(sel2)
axis = Line.Create(anchorPoint, Direction.DirY)
options = MoveOptions()
result = Move.Rotate(sel1, axis, DEG(60), options)
#将options中的copy值设为true,则可利用循环创建类似阵列的效果
Options.Copy=True
for i in range(1,5):
AA=60*i
result = Move.Rotate(sel1, axis, DEG(AA), options)
#对创建的多余的三维点及时的删除
Re=Delete.Execute(sel2)
为更加方便大家系统学习WB脚本知识及软件二次开发流程,水哥特推出《基于Python脚本ANSYS Workbench 软件二次开发专题教程》,本教程分为6篇,分别为Python语言基础知识篇、SpaceClaim脚本知识篇、Mechanical脚本知识篇、Workbench项目管理脚本知识篇、项目脚本调试篇以及项目软件二次开发篇,本套课程总计约100课时,平均每个课时30~50分钟,全套课程总计约 70小时,通过本教程,学员可系统性的掌握利用Python语言进行ansys workbench二次开发的相关技巧,课程详情请点击下方文章了解:
暂无评论内容