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

ADN Club => AutoCAD .NET API => Тема начата: Evgivachev от 23-10-2018, 17:47:58

Название: Чтение Database не открывая AutoCad
Отправлено: Evgivachev от 23-10-2018, 17:47:58
Подскажите, пожалуйста, такая задача:
необходимо получить элементы в чертеже dwg из другого приложения.
Возможно ли сделать это не из самого автокада, а получить database файла чертежа??
Название: Re: Чтение Database не открывая AutoCad
Отправлено: avc от 23-10-2018, 19:40:58
Если на компьютере установлен автокад,  то можно через его библиотеки открыть БД чертежа. Если не установлен,  то надо покупать realdwg или аналоги. это дорого
Название: Re: Чтение Database не открывая AutoCad
Отправлено: Evgivachev от 24-10-2018, 09:55:09
Да, так и пробовал, но выпадает исключение во время выполнения:
Цитировать
"System.IO.FileNotFoundException" в Неизвестный модуль.
Дополнительные сведения: Не удалось загрузить файл или сборку "Acdbmgd, Version=20.1.0.0, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Не удается найти указанный файл.

Если же параметр сборки Copy local перевести в true, то вылетает исключение при попытке обращения уже к полям и свойствам database
Цитировать
Необработанное исключение типа "System.InvalidProgramException" в FixtureAutocad.exe
Дополнительные сведения: Среда выполнения Common Language Runtime обнаружила недопустимую программу.

Что я делаю не так?


Название: Re: Чтение Database не открывая AutoCad
Отправлено: trir от 24-10-2018, 10:12:49
ха
https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/where-is-the-realdwg-sdk-and-can-i-use-it-without-an-autocad/td-p/6356468
https://www.autodesk.com/developer-network/platform-technologies/realdwg

Acdbmgd будет работать только в запушщеном AutoCAD'е, без него нужно использовать realdwg
Есть и другой способ - но здесь запрещенно его называть  ;D

Через COM можно скрытно от пользователя запустить AutoCAD, и загрузить в него .NET-сборку которая будет работать как сервер
Или можно просто отказатся от .dwg в пользу .dxf
Название: Re: Чтение Database не открывая AutoCad
Отправлено: avc от 24-10-2018, 10:29:59
Или можно просто отказатся от .dwg в пользу .dxf
А в чем собственно разница dwg и dxf. Есть какие-то специфичные способы читать dxf?
Название: Re: Чтение Database не открывая AutoCad
Отправлено: trir от 24-10-2018, 10:31:39
Цитировать
А в чем собственно разница dwg и dxf. Есть какие-то специфичные способы читать dxf?
.dxf открытый формат - есть куча библиотек для работы с ним или можно написать свою
Название: Re: Чтение Database не открывая AutoCad
Отправлено: Александр Ривилис от 24-10-2018, 10:58:22
Да, так и пробовал, но выпадает исключение во время выполнения:
Цитировать
"System.IO.FileNotFoundException" в Неизвестный модуль.
Дополнительные сведения: Не удалось загрузить файл или сборку "Acdbmgd, Version=20.1.0.0, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Не удается найти указанный файл.

Если же параметр сборки Copy local перевести в true, то вылетает исключение при попытке обращения уже к полям и свойствам database
Цитировать
Необработанное исключение типа "System.InvalidProgramException" в FixtureAutocad.exe
Дополнительные сведения: Среда выполнения Common Language Runtime обнаружила недопустимую программу.

Что я делаю не так?



Использовать AutoCAD .NET API (т.е. сборки acdbmgd.dll, accoremgd.dll, acmgd.dll) можно только из приложения загруженного внутрь AutoCAD. Из внешних приложений работать не будет.