Background
I have a Revit 2016 add-in that does batch exporting to DWF from the main model and its linked models. It works by exporting sheets from the main model and looping through the linked models to export additional sheets. It uses UIApplication.OpenAndActivateDocument
to open a document and Document.Close
to close it. Because the Revit API does not allow you to close the active document it must open a placeholder document before it closes the active document and opens the next one. This has been working since at least Revit 2014 but has stopped working since the release of Revit 2016 R2.
Now it fails on the call to UIApplication.OpenAndActivateDocument
when you export more than a couple of sheets. Even with the most recent release of Revit 2016 R2 Update 4 the issue still exists.
Error
The error is thrown from the UIApplication.OpenAndActivateDocument
method. It looks like this:
System.ComponentModel.Win32Exception was unhandled ErrorCode=-2147467259 HResult=-2147467259 Message=Not enough quota is available to process this command NativeErrorCode=1816 Source=WindowsBase StackTrace: at MS.Win32.UnsafeNativeMethods.PostMessage(HandleRef hwnd, WindowMessage msg, IntPtr wparam, IntPtr lparam) at System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean enableRenderTarget, Nullable`1 channelSet) at System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr lParam) at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam) at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs) at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
Here is what the end of the journal file shows:
' 2.510552 2:< ' 1:< ***NOBLE invalidated secondary data id = 130129 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 130130 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 130131 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 130134 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 138258 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 138259 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 138983 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 140000 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 5964554 due to the modified link document.
' 1:< ***NOBLE invalidated secondary data id = 6073456 due to the modified link document.
' 1:< 0 ModelServerState "Destroyed": Current server = "Not Queried", Model server = "", Model server state = "Not Applicable"
' 6:< --TB- Level 368 - Levels : Level : FF EL
' 0.104902 6:<<--TB- recomputeCircuits
' 1.094590!!!!! 4:!!!BIG_GAP ;PERF;MISC;regenerating
' 1.315856 3:<<;PERF;MISC;regenerating/ALL_GAPS 1.210954/TurnOff_GAPs 100%
' 1:< Managed exception occurred:
'C 03-May-2016 08:43:03.892; 1:< Not enough quota is available to process this command
'C 03-May-2016 08:43:03.892; 1:< ExceptionCode=0xe0434352 ExceptionFlags=0x00000001 ExceptionAddress=000007FEFCD0A06D
' 1:< System (MB) [Available / Total ] [Revit Memory Usage (MB) ]
' 1:< RAM Statistics: 9845/ 16323 3199=InUse 3243=Peak
' 1:< VM Statistics: 8381636 / 8388607 3089=InUse 3120=Peak
' 0:< [00002088]QueueMinder stopped
' 2:< ::100:: Delta VM: Avail +3 -> 8381638 MB, Used 3089 MB; RAM: Avail +109 -> 9955 MB, Used -1 -> 3198 MB
'C 03-May-2016 08:43:04.652; 2:< OMICRON finished virtualization services
'C 03-May-2016 08:43:04.652; 2:< OMICRON finished worker services
'C 03-May-2016 08:43:04.652; 2:< OMICRON erased queues
' 0.760501 2:<< ' 1:< SLOG $2360798f 2016-05-03 08:43:04.736 >Crash
' 1:< SLOG System (MB) [Available / Total ] [Revit Memory Usage (MB) ]
' 1:< SLOG RAM Statistics: 9957 / 16323 3198=InUse 3243=Peak
' 1:< SLOG VM Statistics: 8381643 / 8388607 3089=InUse 3120=Peak
' 1:< SLOG $2360798f 2016-05-03 08:43:04.746 ' 1:< FileCheckTrigger dependencies update
' 1:< Third Party Updater 'Revit: ObjectNumberingUpdater' has been unregistered.
' 1:< Third Party Updater 'Revit: ObjectNumberingUpdater' has been unregistered.
' 1:< Before : Destroy Display Manager
' 1:< System (MB) [Available / Total ] [Revit Memory Usage (MB) ]
' 1:< RAM Statistics: 9956 / 16323 3198=InUse 3243=Peak
' 1:< VM Statistics: 8381643 / 8388607 3089=InUse 3120=Peak
' 1:< After : Destroy Display Manager
' 1:< System (MB) [Available / Total ] [Revit Memory Usage (MB) ]
' 1:< RAM Statistics: 9956 / 16323 3198=InUse 3243=Peak
' 1:< VM Statistics: 8381643 / 8388607 3089=InUse 3120=Peak
' 1:< compact data space: 380388 blocks, occupying total of 165719148 bytes > ' 1:< freed 380388 blocks
' 2:<::100:: Delta VM: Avail +36 -> 8381675 MB, Used 3089 MB; RAM: Avail -2 -> 9953 MB, Used -1 -> 3197 MB
' 2:< DBG_INFO: Detected unfrozen change of selection.: line 609 of d:\sunrise\2016_px64\source\revit\revitui\modscope\ModScope.cpp.
' 2:< ;PERF;MISC;FullUpdateGraphicCacheUpdater::updateAll() DBViewProject id=275: 2545 elements need cache update
' 1:< Unconverted MessageBox "A fatal error has occurred. The application will be terminated. You have the opportunity to save recovery files for all of your changed projects.
Theory
I'm guessing that the problem has started because of the new feature introduced in 2016 R2 which causes DWFs to be exported using multiple processes instead of a single one as in previous versions. I've tried to post my problem on the Autodesk Forums but have yet to receive a response from their support.
I'm also guessing that it's tied to memory as I've read about the "Not enough quota is available to process this command message" from several internet sources but my machine has 16GB of RAM which is supposed to be suitable for Revit.
Does anyone else have any ideas?