利用Python在Workbench的DM中進(jìn)行幾何操作/運(yùn)算【轉(zhuǎn)發(fā)】
2017-07-03 by:CAE仿真在線(xiàn) 來(lái)源:互聯(lián)網(wǎng)
編者按
文中所出現(xiàn)的代碼來(lái)自于A(yíng)NSYS幫助手冊(cè),需要深究的話(huà)可以多研究研究手冊(cè)的內(nèi)容。
Workbench幾何部分除了建模還包括對(duì)幾何模型的一些操作,這些也能夠用Python和API函數(shù)完成。
正文
Workbench的幾何建模程序DesignModeler(DM)雖不支持APDL參數(shù)化建模,但是卻支持Python和C#,大量的API函數(shù)也是基于IronPython的。靈活運(yùn)用Python和DM中的API函數(shù)接口,可實(shí)現(xiàn)模型的參數(shù)化以及模型的一些操作,比如拉伸、旋轉(zhuǎn)、布爾運(yùn)算等。
本次對(duì)這些幾何模型的操作作簡(jiǎn)單闡述。
利用Python和API函數(shù)可進(jìn)行的操作如下圖所示,熟悉Workbench幾何建模的應(yīng)該對(duì)這些都不陌生。
圖1
這些API函數(shù)的入口為:ExtAPI.DataModel.GeometryBuilder.Operations。
(1)拉伸操作
利用Python和API函數(shù)進(jìn)行拉伸操作的代碼如下:
def Ongenerate(feature,function):
# 定義函數(shù)
length = 0.3
# 定義變量
bodies = []
# 定義空列表
builder = ExtAPI.DataModel.GeometryBuilder
# 獲取入口,并賦值給變量builder
polygon=builder.Primitives.Sheet.CreatePolygon([0.,0.,3*length,0.,0.,2.*length,length,0.,2.*length])
# 通過(guò)CreatePolygon創(chuàng)建三角形的三條邊
polygon_generated = polygon.Generate()
# 生成線(xiàn)體(對(duì)應(yīng)workbench的generate操作)
extrude = builder.Operations.CreateExtrudeOperation([0.,1.,0.],length/2.)
# 利用CreateExtrudeOperation函數(shù)進(jìn)行拉伸操作,定義方向向量和拉伸長(zhǎng)度
bodies.Add(extrude.ApplyTo(polygon_generated)[0])
# 定義拉伸的對(duì)象為前面生成的線(xiàn)體
feature.Bodies = bodies
# 生成的拉伸模型賦值給變量
feature.MaterialType = MaterialTypeEnum.Add
# 類(lèi)型為add
return True
上面代碼注意一個(gè): bodies.Add(extrude.ApplyTo(polygon_generated)[0]),其中有一個(gè)[0],這是因?yàn)锳pplyTo()會(huì)返回一個(gè)體列表,[0]表示這個(gè)列表的第一個(gè)體。
生成的圖形如下:
圖2
(2)轉(zhuǎn)換
利用Python和API函數(shù)進(jìn)行移動(dòng)操作的代碼如下:
def Ongenerate(feature,function):
# 定義函數(shù)
length = 0.3
# 定義變量
bodies = []
# 定義空列表
builder = ExtAPI.DataModel.GeometryBuilder
# 獲取入口,并賦值
polygon = builder.Primitives.Sheet.CreatePolygon([0.,0.,2.*length,0.,0.,1.*length,length,0.,0.7])
# 通過(guò)CreatePolygon函數(shù)創(chuàng)建線(xiàn)體
polygon_generated = polygon.Generate()
# 生成片體
body = builder.Operations.Tools.EdgesToWireBody(polygon_generated.Edges);
# 利用函數(shù)EdgesToWireBody將片體的邊轉(zhuǎn)換為線(xiàn)體
bodies.Add(body)
# 添加到列表
feature.Bodies = bodies
# 賦值
feature.MaterialType = MaterialTypeEnum.Add
# 定義類(lèi)型為Add
return True
最終如下所示,將一個(gè)三角形的面轉(zhuǎn)換為三條邊。
圖3
轉(zhuǎn)自公眾號(hào):CAE技術(shù)分享
相關(guān)標(biāo)簽搜索:利用Python在Workbench的DM中進(jìn)行幾何操作/運(yùn)算【轉(zhuǎn)發(fā)】 Ansys有限元培訓(xùn) Ansys workbench培訓(xùn) ansys視頻教程 ansys workbench教程 ansys APDL經(jīng)典教程 ansys資料下載 ansys技術(shù)咨詢(xún) ansys基礎(chǔ)知識(shí) ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓(xùn)