从TurboGrid BladeGen文件开始rotor37建模——Python脚本

基于TurboGr id导入 / BladeGen导出 文件通过SpaceClaim的脚本实现流体域的快速建模,并导出流体域的几何模型。

从TurboGrid BladeGen文件开始rotor37建模——Python脚本的图1

TurboGrid导入/ BladeGen导出文件包含轮毂(hub.curve)、轮缘(shroud.curve)和叶片型线(profile.curve)三个文件,几何单位为cm,rotor37叶片数为36,旋转轴为Z轴。

从TurboGrid BladeGen文件开始rotor37建模——Python脚本的图2

由于初衷是想建立单流道的模型,类似于TurboGrid中那样的形式,可以实现周期面的创建(按照叶片数量将全周切分单周期),然而没有成功…思路应该是按照各层叶型的中弧线延长到进出口来得到周期面,然后按照叶片数得到的单周期角度复制一个切分开,得到单流道模型。

不过rotor37这个模型的轮毂(hub.curve)、轮缘(shroud.curve)数据比较特殊,刚好是按照叶型中弧线输出,而且方向与叶型变化的方向是一致的,所以刚好可以用来创建周期面  

从TurboGrid BladeGen文件开始rotor37建模——Python脚本的图3

轮毂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曲线,然后再读入下一个叶高的数据绘制曲线,这个过程中需要将创建的曲线依次加入到选择中,用于后续通过融合来创建叶片曲面。  

从TurboGrid BladeGen文件开始rotor37建模——Python脚本的图4

从TurboGrid BladeGen文件开始rotor37建模——Python脚本的图5

源文件与脚本文件

以下内容为付费内容,请购买后观看

   1人购买

源文件与脚本文件

App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

1