![]() |
【转帖】sketchblockinstance set name problem
sketchblockinstance set name problem
hi, i am trying to set the name of a sketchblockinstance created from a sketchblockdefinition that is loaded from a block file using makesketchblockfromfile. when i set the name it also changes the name of the block definition and all the previous instances created from the definition. here is an example: swblockdef = swsketchmgr.makesketchblockfromfile(newposition, block_path, true, 1, 0) vblockinst = swblockdef.getinstances swblockinst = vblockinst(swblockdef.getinstancecount - 1) swblockinst.name = instance_name is there any way to change the name of an instance with out changing the definition name and other instances created from that definition? any help would be greatly appreciated! thanks! edited: 05/29/2008 at 09:50 pm by david mernin if you are loading/making a block from a file, you then need to insert an instance first. dim npt(2) as double dim vpt as object dim swmathutil as mathutility dim swmathpoint as mathpoint ' not sure if you will need set here or not, so try it with and without set swmathutil = swapp.getmathutility() ' define insertion point npt(0) = 0.0 / 1000.0 npt(1) = 0.0 / 1000.0 npt(2) = 0.0 vpt = npt swmathpoint = swmathutil.createpoint(vpt) swblockdef = swsketchmgr.makesketchblockfromfile(newposition, block_path, true, 1, 0) swblockinst = swsketchmgr.insertsketchblockinstance(swblockdef, swmathpoint, 0, 0) swblockinst.name = instance_name luke, how do you rename a blockinst created from swsketchmgr.makesketchblockfromselected? all elements get turned into a block but the swblockinst.name = blkitem1 doesn't work. using this for sketch into block. set swblockdef = swsketchmgr.makesketchblockfromselected(nothing) swblockinst.name = blkitem1 cadcam systems analyst -solidworks office premium 2009 sp3.0 -solidworks simulation premium 2009 sp3.0 -solidworks flow simulation 2009 sp3.0 -2 cpu (fx-62), 2.0 gb of ram -window xp pro sp2 -nvidia geforce 7950 gx2 (512mb) 6.14.11.6921 i figured it out . you do have to have an instance inserted to be renamed even if you create it on the fly. go figure. this worked. set swblockdef = swsketchmgr.makesketchblockfromselected(nothing) set swblockinst = swsketchmgr.insertsketchblockinstance(swblockdef, swmathpoint, 1, 0) swblockinst.name = blkitem1 cadcam systems analyst -solidworks office premium 2009 sp3.0 -solidworks simulation premium 2009 sp3.0 -solidworks flow simulation 2009 sp3.0 -2 cpu (fx-62), 2.0 gb of ram -window xp pro sp2 -nvidia geforce 7950 gx2 (512mb) 6.14.11.6921 i found a quick and dirty way to rename and get rid of that instance that was created. ' create block definition ' define insertion point inptb(0) = 1#: inptb(1) = 1#: inptb(2) = 0# ivptb = inptb set swmathpoint = swmathutil.createpoint(inptb) set swblockdef = swsketchmgr.makesketchblockfromselected(nothing) ' create block blockval = swblockinst.select(false, nothing) set swblockinst = swselmgr.getselectedobject6(1, -1) swblockinst.name = blkitem1 ' rename block swmodeldocext.deleteselection2 (true) ' remove block instance cadcam systems analyst -solidworks office premium 2009 sp3.0 -solidworks simulation premium 2009 sp3.0 -solidworks flow simulation 2009 sp3.0 -2 cpu (fx-62), 2.0 gb of ram -window xp pro sp2 -nvidia geforce 7950 gx2 (512mb) 6.14.11.6921 almost forgot, duh. you need to deselect before creation: blockval = swselmgr.deselect2(1, -1) ' create block definition ' define insertion point inptb(0) = 1#: inptb(1) = 1#: inptb(2) = 0# ivptb = inptb set swmathpoint = swmathutil.createpoint(inptb) set swblockdef = swsketchmgr.makesketchblockfromselected(nothing) ' create block blockval = swblockinst.select(true, nothing) '<---also set to true not false set swblockinst = swselmgr.getselectedobject6(1, -1) swblockinst.name = blkitem1 ' rename block swmodeldocext.deleteselection2 (true) ' remove block instance cadcam systems analyst -solidworks office premium 2009 sp3.0 -solidworks simulation premium 2009 sp3.0 -solidworks flow simulation 2009 sp3.0 -2 cpu (fx-62), 2.0 gb of ram -window xp pro sp2 -nvidia geforce 7950 gx2 (512mb) 6.14.11.6921 edited: 09/12/2008 at 08:03 pm by william crosby i found even a better and more reliable way. no mathpoints or mathutil required. ' create block definition set swblockdef = swsketchmgr.makesketchblockfromselected(nothing) ' create block set swentity = swblockdef blockval = swentity.select4(true, nothing) set swblockinst = swselmgr.getselectedobject6(1, -1) swblockinst.name = blkitem2 ' rename block swmodel.editdelete ' delete instance cadcam systems analyst -solidworks office premium 2009 sp3.0 -solidworks simulation premium 2009 sp3.0 -solidworks flow simulation 2009 sp3.0 -2 cpu (fx-62), 2.0 gb of ram -window xp pro sp2 -nvidia geforce 7950 gx2 (512mb) 6.14.11.6921 quick |
所有的时间均为北京时间。 现在的时间是 07:08 AM. |