Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: bargool от 26-02-2015, 11:37:28
-
Пытаюсь пакетно разобраться с внешними ссылками в файлах. Открываю их через Database.ReadDwgFile. WorkingDatabase переключаю на вновь открытый файл.
Database.ResolveXrefs падает с System.AccessViolationException в файлах, где audit показывает ошибку
objects auditedAcDbTable(1D11) BTR Id invalid
По крайней мере, это единственное, что я увидел общего в этих файлах
Подскажите, что с этим делать?
-
В начале обработки сделал Wblock (т.к. я всё равно его использую), проблема похоже отпала О_о
Хотя это не решение, а костыль (но ведь аудит не сделать, как я выяснил в соседней теме)
-
но ведь аудит не сделать, как я выяснил в соседней теме
ты в своём коде .net можешь для этого использовать функционал, предоставленный в COM (А.Н. ведь показал имя нужного метода).
-
Подскажите, что с этим делать?
До работы твоей программы выполнить пакетную проверку всех файлов. AutoCAD .NET API подразумевает что мы работам с нормальными файлами.
-
ты в своём коде .net можешь для этого использовать функционал, предоставленный в COM (А.Н. ведь показал имя нужного метода).
Это если AcadDocument есть при открытии файла через ReadDwgFile. Надо будет проверить.
До работы твоей программы выполнить пакетную проверку всех файлов. AutoCAD .NET API подразумевает что мы работам с нормальными файлами.
Понял. Просто в данном случае, я думаю, можно говорить о баге в API. Ибо ну не должно оно падать с неотлавливаемым исключением System.AccessViolationException. Товарищи разработчики не обрабатывают соответствующие возможные ошибки, которые они умеют обрабатывать при аудите.
-
Это если AcadDocument есть при открытии файла через ReadDwgFile. Надо будет проверить.
Его точно нет если второй параметр конструктора Database равен true (т.е. документ не создаётся совсем).
-
Товарищи разработчики не обрабатывают соответствующие возможные ошибки, которые они умеют обрабатывать при аудите.
Для того аудит и существует, чтобы такие ошибки отлавливать. Представь себе, что при любой операции в чертеже будет запускаться что-то типа Audit. Сколько времени будет занимать каждая операция...