从TurboGrid BladeGen文件开始rotor37建模——Python脚本
基于TurboGr id导入 / BladeGen导出 文件通过SpaceClaim的脚本实现流体域的快速建模,并导出流体域的几何模型。
TurboGrid导入/ BladeGen导出文件包含轮毂(hub.curve)、轮缘(shroud.curve)和叶片型线(profile.curve)三个文件,几何单位为cm,rotor37叶片数为36,旋转轴为Z轴。
由于初衷是想建立单流道的模型,类似于TurboGrid中那样的形式,可以实现周期面的创建(按照叶片数量将全周切分单周期),然而没有成功…思路应该是按照各层叶型的中弧线延长到进出口来得到周期面,然后按照叶片数得到的单周期角度复制一个切分开,得到单流道模型。
不过rotor37这个模型的轮毂(hub.curve)、轮缘(shroud.curve)数据比较特殊,刚好是按照叶型中弧线输出,而且方向与叶型变化的方向是一致的,所以刚好可以用来创建周期面
轮毂hub.curve处理步骤,读取点文件并存入列表中,根据点创建NurbsCurve曲线(非均匀有理B样条曲线),创建曲线后旋转单周期的角度(360/blade_number)生成轮毂面。
print('*****开始处理hub*****')
ptList=List[Point]() #定义一个点的列表
with open(linux_path+"/hub.curve","r+")as data:
for i in data:
#创建点,并放入列表当中
ptList.Add(Point.Create(MM(scale_jm*float(i.split()[0])),MM(scale_jm*float(i.split()[1])),MM(scale_jm*float(i.split()[2]))))
ncurve = NurbsCurve.CreateThroughPoints(False, ptList, 0.0001) #创建一个样条曲线穿过所有创建的点
curveSegment = CurveSegment.Create(ncurve) #创建一个有限线段对象
designCurve = DesignCurve.Create(GetRootPart(),curveSegment) #创建DesignCurve对象
# 旋转 1 条草绘曲线
selection = Selection.Create(GetRootPart().Curves[0])
result = RevolveEdges.Execute(selection, Line.Create(Point.Create(MM(0), MM(0), MM(0)),
Direction.DirZ), DEG(360/blade_number), False, ExtrudeType.None)
# EndBlock
print('*****处理hub完成*****')
轮缘shroud.curve处理步骤与轮毂方式一致,读取点文件并存入列表中,根据点创建NurbsCurve曲线(非均匀有理B样条曲线),创建曲线后旋转单周期的角度(360/blade_number)生成轮毂面。
轮毂轮缘处理完成后,转动二分之一的单周期的角度(360/blade_number),将叶片包围,用来后续创建单流道实体模型。
#单周期hub、shroud位置旋转
# 旋转 Z 手柄
selection = BodySelection.Create([GetRootPart().Bodies[0],GetRootPart().Bodies[1]])
anchor = Selection.Create(GetRootPart().CoordinateSystems[0])
axis = Move.GetAxis(anchor)
options = MoveOptions()
result = Move.Rotate(selection, axis, DEG(-360/blade_number/2), options)
# EndBlock
叶片profile.curve处理步骤与轮毂方式相似,profile.curve包含的是不同叶高的叶型数据,所以叶片的处理相对麻烦一点,读取的过程中需要进行判断,读完一个叶高的数据后绘制NurbsCurve曲线,然后再读入下一个叶高的数据绘制曲线,这个过程中需要将创建的曲线依次加入到选择中,用于后续通过融合来创建叶片曲面。
源文件与脚本文件
以下内容为付费内容,请购买后观看
1人购买
源文件与脚本文件

工程师必备
- 项目客服
- 培训客服
- 平台客服
TOP
