|
determine if file is loaded in solidworks [solved]
update::
turns out enumdocuments2 does return them all; i had copied some code from my previous project and overlooked a check i did for modeldoc2::visible, effectively skipping the hidden documents, which is not what i wanted for this case. fixed now but i will leave this post up for future reference.
i am after an efficient way to detect whether or not a solidworks file is opened in solidworks (ie. locked to that solidworks so if someone else wen't to open it it would say it is opened by another user or whatever).
the problem is, the first check is whether or not the file is locked on the filesystem at all, if it isn't then sw does not have it open.
then i try to check whether solidworks has the file open, and the only way i know to do this so far is to call the activatedoc2 function and see if it succeeds, if it does it was loaded into sw even if it wasn't visible (for example a part from an assembly when the assembly is open). the problem with this is it is extremely inefficient for determining if a file is loaded.
using enumdocuments2 also will not work as it only enumerates the direct documents, not the ones loaded in the background as i am running out-of-process and even though the documentation states that enumdocuments2 will only work with in-process dll's it does work out-of-process (but does not return the file references even though it states it should) * see note below.
does anyone have a solution for this?
* note for enumdocuments2 *
allows access to a documents enumeration. can only be used in in-process dlls.
the list of modeldoc2 objects in the enumdocuments2 object contains all open modeldoc2 pointers, including modeldoc2 objects opened as file references (for example, from an assembly or drawing). you can use modeldoc2::visible to determine if a particular document has its own window and is visible to the user.
edited: 08/15/2008 at 10:16 am by luke malpass
quick |
|