UG二次開發 遍歷物件的方法(Python)

2021-10-18 21:36:38 字數 2733 閱讀 1567

ug對python二次開發的幫助文件,好像不是很用心,裡面缺失很多內容,大家在學習的時候建議參考.net的nxopen內容。並且網上也有很多.net的開發例子,python中很多用法和.net的用法類似。

通常在開發的過程中,需要遍歷模型中的所有元素,找到我們所需要的物件,本文介紹兩種方法,一種是在模型model模組,即建模模組中,一種是在cae模組中的方法

建模模組中,幫助文件有介紹,不多做介紹,直接從文件中複製過來的

def processbodyedges(bodyobject):

for edgeobject in bodyobject.getedges():

processedge(edgeobject)

def processbodyfaces(bodyobject):

for faceobject in bodyobject.getfaces():

processface(faceobject)

def processpart(partobject):

for bodyobject in partobject.bodies:

processbodyfaces(bodyobject)

processbodyedges(bodyobject)        

def processface(faceobject):

for edgeobject in faceobject.getedges():

processedge(edgeobject)

bodyofface = faceobject.getbody()

def processedge(edgeobject):

for faceobject in edgeobject.getfaces():

processedgeface(faceobject)

bodyofedge = edgeobject.getbody()

(startpoint,endpoint)=edgeobject.getvertices()#獲取點座標

從上也很容易發現,模型的構成很清晰,幾何元素點(vertice),線(edge),面(face),體(body),一級一級的展開

大家知道,ug這種3d建模軟體都是基於特徵建模,每個特徵不僅僅包含了幾何元素,還有其它關聯資訊,獲取part中所有特徵的方法

thesession  = nxopen.session.getsession()

workpart = thesession.parts.work

displaypart = thesession.parts.display

features=workpart.features

allfeatures=features.getfeatures()#返回所有特徵的列表

以上是建模模組或者是prt檔案的幾何元素的遍歷方法,層次結構非常清楚,但是對於cae模組(**模組)中,對幾何元素的層次結構查詢方式並沒有part類似的方法。我查閱了幫助文件,也沒有類似的方法。好在網上論壇有類似的問題,但是針對.net的方法,裡面所用的函式類,在nxopen python中都可以找到,功夫不負有心人,經過好大一番周折,找到問題突破口,**如下

thesession  = nxopen.session.getsession()

myufsession=nxopen.uf.ufsession.getufsession()

mylw=thesession.listingwindow

null_tag=0

objtag=0

mylw.open()

objtag=myufsession.obj.cycleobjsinpart(workfempart.tag,nxopen.uf.ufconstants.uf_caegeom_type,objtag)

while objtag != null_tag:    

(objtype,objsubtype)=myufsession.obj.asktypeandsubtype(objtag)

if objsubtype == nxopen.uf.ufconstants.uf_caegeom_face_subtype:

tmp=nxopen.taggedobjectmanager.gettaggedobject(objtag)

mylw.writefullline('tagid is %d,jid is %s,color is %s'%(tmp.tag,tmp.journalidentifier,tmp.color))

objtag=myufsession.obj.cycleobjsinpart(workfempart.tag,nxopen.uf.ufconstants.uf_caegeom_type,objtag)

又是用到uf類,這方面的介紹使用方法,網上真心不好找。我用的ug10.0版本,nxopen python幫助文件裡面根本就沒有nxopen.taggedobjectmanager,ufconstants的介紹,我是參照.net的開發幫助手冊,搗鼓出來了。這種方法的具體細節,如何進行體(body),面(face),線(edge),vertex(點)按逐級展開的方法,還沒有仔細的研究,能不能逐級遍歷還不知道,等後續更新吧。

另外,nxopen python中每個物件都有兩個id,用於查詢物件,獲取物件,乙個是journalidentifier,乙個是tag。就是說只要知道物件的這兩個id的任何乙個,可分別用findobject(journalidentifier),nxopen.taggedobjectmanager.gettaggedobject(tag)的方法去獲取物件,再獲取物件的屬性和方法。

ug二次開發環境配置

一 系統安裝配置 1.1 安裝ug 安裝vs,假設ug安裝目錄 d program files nx10.0 假設vs安裝目錄 d program files microsoft visual studio 10.0 1.2 拷貝d program files nx10.0 ugopen vs fi...

UG二次開發與Visual Studio的配置

環境準備 nx8.0與vs2010配置。1.安裝vs到 1 e software microsoft visual studio 10.0 安裝nx8.0到e software nx8.0 2 拷貝e sofware nx8.0 ugopen vs files vc vcprojects資料夾下所有...

UG二次開發to string的坑

最開始向list傳遞的double資料是這樣的 string out put uf ui open listing window for int i 0 isize i uf ui write listing window out put.data 多次迴圈之後,但是總是出現意料之外的亂碼,除錯檢查...