![]() |
【转帖】sketchblockdefinition problem
sketchblockdefinition problem
hi, i am trying to insert a block to the drawing sheet. when i insert the block, it always go to the bottom left corner of the sheet. this happens even if the defined math point is different. below is the code i used. i am facing this problem in swx 2008. please let me know if you have any solution. sub main() dim swapp as sldworks.sldworks dim part as modeldoc2 dim selmgr as selectionmgr dim swsketchmgr as sldworks.sketchmanager dim npt(3) as double dim vpt as variant dim swmathpoint2 as sldworks.mathpoint dim swmathutil as sldworks.mathutility dim swsketchblockdef2 as sldworks.sketchblockdefinition dim swblockinst as sldworks.sketchblockinstance dim swdraw as sldworks.drawingdoc set swapp = application.sldworks set part = swapp.activedoc set swsketchmgr = part.sketchmanager set selmgr = part.selectionmanager swapp.activedoc.activeview.framestate = 1 set swdraw = part swdraw.activatesheet ("sheet1") set swsheet = swdraw.getcurrentsheet npt(0) = 1.2 * 0.0254 npt(1) = 1.2 * 0.0254 npt(2) = 0# vpt = npt set swmathutil = swapp.getmathutility set swmathpoint2 = swmathutil.createpoint(vpt) set swsketchblockdef2 = swsketchmgr.makesketchblockfromfile(swmathpoint2, "c:\ssgworks\tnb\templates\blocks\pole_orient_12 sided_flat.sldblk", false, 1, 0) part.graphicsredraw2 end sub edited: 11/20/2008 at 04:16 pm by chandrasekaran subramanian the make function should just create the block not insert it??with the returned block then try: swsketchmgr.insertsketchblockinstance(swsketchblockdef2, swmathpoint2, 0, 0) the problem exists even after inserting the sketch block instance. it is inserting on the extreme left bttom corner of the sheet(i guess (0,0)). have you tried this? here is a little something i was working and may help point you in the right direction. i fixed this issue by multiplying the x,y coordinates with sheet scale. below is the code for reference. sub main() dim swapp as sldworks.sldworks dim part as modeldoc2 dim selmgr as selectionmgr dim swsketchmgr as sldworks.sketchmanager dim npt(3) as double dim vpt as variant dim swmathpoint2 as sldworks.mathpoint dim swmathutil as sldworks.mathutility dim swsketchblockdef2 as sldworks.sketchblockdefinition dim swblockinst as sldworks.sketchblockinstance dim swdraw as sldworks.drawingdoc set swapp = application.sldworks set part = swapp.activedoc set swsketchmgr = part.sketchmanager set selmgr = part.selectionmanager swapp.activedoc.activeview.framestate = 1 set swdraw = part swdraw.activatesheet ("sheet1") set swsheet = swdraw.getcurrentsheet set vsheetprop=swsheet.getproperties npt(0) = 1.2 * 0.0254*vsheetprop(3) npt(1) = 1.2 * 0.0254*vsheetprop(3) npt(2) = 0# vpt = npt set swmathutil = swapp.getmathutility set swmathpoint2 = swmathutil.createpoint(vpt) set swsketchblockdef2 = swsketchmgr.makesketchblockfromfile(swmathpoint2, "c:\ssgworks\tnb\templates\blocks\pole_orient_12 sided_flat.sldblk", false, 1, 0) part.graphicsredraw2 end sub quick |
所有的时间均为北京时间。 现在的时间是 06:45 PM. |