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 多次迴圈之後,但是總是出現意料之外的亂碼,除錯檢查...