從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曲線,然后再讀入下一個葉高的數據繪制曲線,這個過程中需要將創建的曲線依次加入到選擇中,用于后續通過融合來創建葉片曲面。
源文件與腳本文件
以下內容為付費內容,請購買后觀看
3人購買
源文件與腳本文件
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















