從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

源文件與腳本文件

以下內容為付費內容,請購買后觀看

   3人購買

源文件與腳本文件

App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

1