3 Replies Latest reply on Nov 26, 2014 10:02 PM by Andrei Popov

    Clearing the memory cache

    jason van clark

      So, you may have noticed that SolidWorks 2013 is now doing some strange things when it comes to 'keeping models in memory' even if you close all of the files you have open.  It seems like SWX doesn't quite let everything go, resulting in strange warnings when you open more files ('File xxxx is already opened, whould like to use this already opened file?, file references magically pointing to the wrong folders, etc).  In addition, ever notice how SWX just takes a lot of memory to run?  Well, here's a little code that takes care of these issues:


      Private Sub flushmemory()





                  If (System.Environment.OSVersion.Platform = PlatformID.Win32NT) Then


      Dim myProcesses As Process() = Process.GetProcessesByName("SLDWORKS")

      Dim myProcess As Process

      For Each myProcess In myProcesses

      SetProcessWorkingSetSize(myProcess.Handle, -1, -1)


                  End If

              Catch ex As Exception


              End Try

          End Sub


          Private Declare Auto Function SetProcessWorkingSetSize Lib "kernel32.dll" (ByVal procHandle As IntPtr, ByVal min As Int32, ByVal max As Int32) As Boolean


          Function sldOnIdle() As Integer

              If openDocs.Count = 0 AndAlso idleFlag Then

                  Dim workDir As String = iSwApp.GetCurrentWorkingDirectory()

      idleFlag = False



              End If

          End Function



      Note that I have this code in an add-in that is always 'listening' to solidworks, so you would have to add the appropriate handlers, etc.  But, this takes care of the 'files in memory' problems and also make solidworks a little less memory-intensive