![]() |
【转帖】urning the mark for drawings onoff
turning the mark for drawings on/off
looking for a way to auto-mate the turning off or on for dimensions the "mark for drawing" item. is there a way that this can be done in api? what we are doing is useing basic models for a particular reason for our drawings. we have realised that they have all of there dimensions "marked for drawing" we desire to uncheck the "mark for drawing" item off. we know this can be done manually, but it is time consumeing and we have over 900 models to clean. carl, is there any specific need for that as they will appear if you use insert model item with dimensions marked for drawing selected. deepak gupta sw2007 sp5.0 sw2009 sp2.1 go to the api help index and type in dimension then scroll down to iterate and there is a good example just add swdispdim.markedfordrawing = false to the second do while not swdispdim is nothing loop i have modified this example to work on assemblies fully resolve the assembly then select everything and run this macro to all the real programmers out there yes i know this code needs to be cleaned up but it did fix all the problems i had option explicit dim swapp as object dim selmgr as object dim part as object dim parttitle as string dim dot dim itemn as string dim comp as object sub main() dim i as integer set swapp = application.sldworks set part = swapp.activedoc set selmgr = part.selectionmanager parttitle = part.gettitle for i = 1 to selmgr.getselectedobjectcount2(-1) set comp = selmgr.getselectedobjectscomponent3(i, -1) set part = comp.getmodeldoc 'dim swapp as sldworks.sldworks 'dim swmodel as sldworks.modeldoc2 dim swfeat as sldworks.feature dim swsubfeat as sldworks.feature dim swdispdim as sldworks.displaydimension dim swdim as sldworks.dimension dim swann as sldworks.annotation dim bret as boolean 'set swapp = createobject("sldworks.application") 'set part = swapp.activedoc set swfeat = part.firstfeature debug.print "file = " & part.getpathname do while not swfeat is nothing debug.print " " + swfeat.name set swsubfeat = swfeat.getfirstsubfeature do while not swsubfeat is nothing debug.print " " + swsubfeat.name set swdispdim = swsubfeat.getfirstdisplaydimension do while not swdispdim is nothing set swann = swdispdim.getannotation set swdim = swdispdim.getdimension debug.print " [" & swdim.fullname & "] = " & swdim.getsystemvalue2("") set swdispdim = swsubfeat.getnextdisplaydimension(swdispdim) loop set swsubfeat = swsubfeat.getnextsubfeature loop set swdispdim = swfeat.getfirstdisplaydimension do while not swdispdim is nothing swdispdim.markedfordrawing = false set swann = swdispdim.getannotation set swdim = swdispdim.getdimension debug.print " [" & swdim.fullname & "] = " & swdim.getsystemvalue2("") set swdispdim = swfeat.getnextdisplaydimension(swdispdim) loop set swfeat = swfeat.getnextfeature loop next i end sub cswa, cswp, cswp-smtl, sw 2009 sp2.0 hp xw4600 xp32, x9650 4gb, quadro fx3500 swapp.setuserpreferencetoggle swconst.swdrawingmarkalldimensionsfordrawing, true solidworks 2006,2007,2008,2009 (office premium.) core 2 duo e6850 @ 3.00 mhz window xp pro sp3 32 bit ati firegl v7350 that is why we want to have the dimensions to be not marked for drawing. we know the location of the 3 dimensions that we want to use the insert model items for. quick |
所有的时间均为北京时间。 现在的时间是 02:30 AM. |