Hi,
I have some problems after upgrading to RealDWG 2015, with some DWG files the program crashes when trying to fetch objects from model space. The crash seems to occur in BlockTableRecord.GetEnumerator() inside RealDWG. I don't get an exception it just crashes the program. Other files work fine. I think even if the file is corrupt it would be nice to not crash my application.
Is this a known issues? Is there any patch that I can download somewhere?
Can you run your code with the corrupted drawing file on AutoCAD 2015, by this way you may think about AutoCAD 2015 runtime issue.
You can test this code with RealDWG 2014 to check if it raises the same crash or not.
We use RealDWG to read data from DWG files into a stand alone program that is not connected to Autocad. It worked ok when using RealDWG 2014 but not after upgrading to 2015, some DWG files work ok but others do not.
We use a try-catch block but the application just shuts down, there is no exception that we can catch. I got this message in acdb.err file
!!dbspace.cpp@2116: eOk
I think it would be a problem to handle “corrupted” drawings with RealDWG 2015 vs 2014. Even with a try-catch block, the program may shut down suddenly without a jump to exception.
Can you please share your simple code used to read your drawing info (just only what’s needed), and a simplified drawing (without your business info) which is suspected to be corrupted, I will try to test at my end with RealDWG 2015 and 2014.
You can also try your AutoCAD 2015 version of your RealDWG application to test your code.
This seems to only happen when the application is set to "large address aware" maybe RealDWG does not support that?
I don't know how you set "large address aware" in your RealDWG application to increase virtual memory usage. However, memory usage is the big issue in RealDWG if the application processes a large batch of drawings. Memory will keep increasing until the whole batch finish. You have to optimize your code to carefully dispose used objects (database, entity...) after each drawing process, then call .NET garbage collection to reclaim used memory. Hope this will help to avoid "large address aware".