![]() |
【转帖】recording a macro
recording a macro
hi all, as a newbie to macros & api please keep it as simple as possible thanks i have tried to recorded a macro for changing the document properties of a part from grams to kg but when i go to run it on another part its comming up with an error. i have saved the macro in c:\program files\solidworks\macros ' ****************************************************************************** ' c:\docume~1\solidw~1\locals~1\temp\swx3532\macro1.swb - macro recorded on 06/30/08 by solidworks ' ****************************************************************************** dim swapp as object dim part as object dim selmgr as object dim boolstatus as boolean dim longstatus as long, longwarnings as long dim feature as object sub main() set swapp = application.sldworks set part = swapp.activedoc set selmgr = part.selectionmanager dim pwphotoworks as photoworks.photoworks set pwphotoworks = swapp.getaddinobject("photoworks.photoworks") dim pwopt as photoworks.pwoptions set pwopt = pwphotoworks.pwoptions part.dimpreferences end sub looking at this code their seems to be a lot about photoworks but nothing about the document properties. is sw not recording the correct information once i start selecting operations which are not a direct part of the modeling process? any help on this greatly received thanks, michael sw office pro 2009 sp 2.1 windows xp sp2 hp xw4600 intel(r) core 2 duo cpu 3 gig ram nvidia quadro fx 1700 hi michael, that macro does not change the document properties! i think photoworks is just another addin of solidworks that you must have enabled. i found that the photoworks code is usually erroneous so i tend to remove it from my code. as for changing the document properties i will have a look in the api now and get back to you if i find something that works. --stav. in this world i am nobody... and nobody is perfect ;) !!! --------- solidworks office 2008 sp4.0 dell precision pws390 nvidia quadro fx 3450/4000 sdi hello again. the code below does the trick. what it does is for the active document it changes the mass to kg. dim swapp as sldworks.sldworks dim modeldoc as sldworks.modeldoc2 dim boolstatus as boolean sub main() set swapp = application.sldworks set modeldoc = swapp.activedoc boolstatus = modeldoc.setuserpreferenceintegervalue(swuserpreferenceintegervalue_e.swunitsmasspropmass, 3) end sub in this world i am nobody... and nobody is perfect ;) !!! --------- solidworks office 2008 sp4.0 dell precision pws390 nvidia quadro fx 3450/4000 sdi one of the first important lessons about api is that macro recording can miss some important api calls and also add lots of unnecessary steps. this is especially tru is selections are involved. take some time to learn vba outside of a sw context. get comfortable w/ vb and object-oriented programming before you go to far. answer thanks very much for that stavros, it has worked perfect roland, you are right, running blind at this will not work ( time for some homework ) sw office pro 2009 sp 2.1 windows xp sp2 hp xw4600 intel(r) core 2 duo cpu 3 gig ram nvidia quadro fx 1700 quick |
所有的时间均为北京时间。 现在的时间是 11:52 AM. |