ANSA二次開發(fā)PID篩選案例介紹
2017-03-13 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
今天我們來介紹一個二次開發(fā)案例—ANSA中零件PID的篩選與操作。
首先先看一下需求:
如上圖所示。有一堆零件,軟件已經(jīng)自動區(qū)分出PID。它們的PID名字都以“part”加數(shù)字開頭。現(xiàn)在要求:
將名稱含PART1的PID僅顯示,topo
將名稱含PART2的PID僅顯示,topo
將名稱含PART3的PID僅顯示,topo(判斷是否有part4,如果有topo,繼續(xù)判斷PART5,6,7……如果沒有終止topo)
首先分析一下需求,將名稱含有XXX的PID做指定操作,其實就是對PID進行分類,通過名稱含有XXX來篩選,這剛好可以應(yīng)用字典來解決,那么剩下的就是邏輯了。
下面來具體寫一下這個程序:
importansa
from ansaimport base
from ansaimport constants
defmain3():
#根據(jù)SHELL_PROPERTY收集實體
shells=base.CollectEntities(constants.FLUENT,None,'SHELL_PROPERTY')
namelist=list()
adict={}
#對收集到的實體列表進行遍歷
for shell in shells:
val=('Name',)
#取到PID名字的字典(單個)
namedict=base.GetEntityCardValues(constants.FLUENT,shell,val)
#取到字典鍵‘Name’所對應(yīng)的值(PID名字)
name=namedict.get('Name')
#每次將PID名字加入名字列表里
namelist.append(name)
#對PID名字列表進行遍歷
for name in namelist:
if name[0:5]not in adict:
adict[name[0:5]]=[]
#取到字典鍵所對應(yīng)的值(列表)
list2=adict.get(name[0:5])
#將名字加入這個列表
list2.append(name)
print(adict)#測試
#取到字典鍵的列表
keys=list(adict.keys())
keys.sort()
parts=list()
#對字典鍵的列表進行遍歷
for key in keys:
#取到字典鍵所對應(yīng)的值(列表)
list3=adict.get(key)
i=0
#對這個存有PID名字的列表進行遍歷
for l in list3:
part=base.GetPartFromName(str(list3[i]))#取到PID名字所對應(yīng)的零件
parts.append(part)
i+=1
base.Or(parts)
base.Topo()
options=[ "UNCHECKEDFACES","NEEDLE FACES", "COLLAPSED CONS", "TRIPLECONS", "OVERLAPS", "CRACKS", "SINGLE CONS"]
fix=[1,1,1,1,1,1,1]
ret=base.CheckAndFixGeometry(parts,options,fix,True,True)
if ret==None:
print ('No errors!')
#清空parts列表
del parts
base.All()
#注:因為本身的PID名稱列表是無順序的,所以取到的名字的先后順序也是跟隨PID名稱列表的(無序的),就算能夠排序,但是不確定含有相同part字段的名字有幾個。所以在判斷名字中含有part幾的時候,不能使用part i,i+=1這種自增形式來順序的判斷part4、part5...
相關(guān)標(biāo)簽搜索:ANSA二次開發(fā)PID篩選案例介紹 ANSA培訓(xùn) ANSA培訓(xùn)課程 ANSA軟件培訓(xùn)班 ANSA在線視頻教程 ANSA學(xué)習(xí)教程 ANSA軟件教程 ANSA資料下載 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) Autoform培訓(xùn)