|
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 |
|