![]() |
【转帖】rying to get invalid surfaces in mates
trying to get invalid surfaces in mates
i am going through the feature tree of assemblies and picking out a certain component to check the mates because one of the mating surfaces has changed and is now invalid. in the tree i find the part then the mates folder then the mate. i then get the feature, the mate and the mate entity. i am having trouble figuring out how to find if the surface for the mate is valid or not. i found a mateentity2::referencetype2 in the api help but haven't been able to get it to work or it may not be what i need. any help to find if a part surface for a mate is invalid would be appreciated. thanks dan miel sw 2008 sp4 i've also looked into this with no luck. maybe i should put an sr in to see if they have an answer. hi matt i may have found a clue in the edit mate example (vb). i found these lines of code that error when there is an invalid surface. the debug.assert statement seems to be checking for something. i haven't had time to check it out today, i'm hoping to look at it tonight. thanks for the reply. dan miel set swent = swmateent.reference: debug.assert not swent is nothing swseldata.mark = nmark bret = swent.select4(true, swseldata): debug.assert bret selectmateentity = bret answer the following code will tell you if there is an invalid referece. this is the "edit mate example" boiled down. dan miel ' a mate must be selected option explicit dim swapp as sldworks.sldworks dim part as sldworks.modeldoc2 dim selmgr as sldworks.selectionmgr dim mate as sldworks.mate2 dim feat1 as sldworks.feature dim mateent as sldworks.mateentity2 dim c as integer dim surf as sldworks.entity sub main() set swapp = application.sldworks set part = swapp.activedoc set selmgr = part.selectionmanager set feat1 = selmgr.getselectedobject5(1) set mate = feat1.getspecificfeature2 debug.print "- new mate -" debug.print "mate name " & mate.name for c = 0 to mate.getmateentitycount - 1 set mateent = mate.mateentity(c) debug.print "" debug.print " mate type " & mate.type 'from swmatereferencetype_e" debug.print " mateent ref type " & mateent.referencetype 'from swmatereferencetype_e 'get mated surface object here set surf = mateent.reference if surf is nothing then debug.print " invalid " else debug.print " surf " & surf.gettype ' from swselecttype_e end if next c debug.print "" end sub edited: 09/29/2008 at 11:42 pm by dan miel quick |
所有的时间均为北京时间。 现在的时间是 08:45 PM. |