Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: bargool от 26-02-2015, 11:37:28

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