RealDWG для Acad 2014

Автор Тема: RealDWG для Acad 2014  (Прочитано 16661 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
RealDWG для Acad 2014
« : 28-02-2016, 19:28:03 »
Доброго времени суток!
Редактирую базу данных dwg в проекте на основе .NET Framework 3.5.
И все хорошо работает с библиотеками AutoCAD 2012 64bit

Делаю так:
1) Описываю класс DwgHost
2) Редактирую базу нужного мне DWG-файла в подпрограмме EDIT_DWG и сохраняю результат в файле

Вот в чем вопрос
Пробую это сделать с библиотеками acad 2014 подключаю соотв. Net FrameWork 4.5. соотв. сборочки (3 шт.) AutoCAD 2014
И не получается. Отладчик  Visual Studio сообщает следующее:

Не удалось загрузить файл или сборку "Acdbmgd, Version=19.1.0.0,
Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей.
Была сделана попытка загрузить программу, имеющую неверный формат.

Единственное на что я обратил внимание - это то, что в AutoCAD 2014
нет теперь аналогичного как в AutoCAD 2012 файла acdb18enures.dll
Куда он пропал и какой файл его теперь заменяет не знаю?
Вроде как должен быть что-то типа acdb19enures.dll но его нету.
Ну то что его нет меня не удивляет. Ведь Autodesk может из состава исключить его.

Пример кода
Код - vb.net [Выбрать]
  1. Imports CAD_DBS = Autodesk.AutoCAD.DatabaseServices
  2. Imports CAD_RTM = Autodesk.AutoCAD.Runtime
  3. Imports CAD_GEO = Autodesk.AutoCAD.Geometry
  4. Imports CAD_PLT = Autodesk.AutoCAD.PlottingServices
  5. Imports CAD_APS = Autodesk.AutoCAD.ApplicationServices
  6.  
  7.     Public Class DwgHost
  8.         Inherits CAD_DBS.HostApplicationServices
  9.         Public Sub New()
  10.             CAD_RTM.RuntimeSystem.Initialize(Me, 1033)
  11.         End Sub
  12.         Protected Overrides Sub Finalize()
  13.             CAD_RTM.RuntimeSystem.Terminate()
  14.             MyBase.Finalize()
  15.         End Sub
  16.         Public Overrides Function FindFile(fileName As String, _
  17.                                            database As CAD_DBS.Database, _
  18.                                            hint As CAD_DBS.FindFileHint) As String
  19.             Return ""
  20.         End Function
  21.     End Class
  22.  
  23.     Public Sub EDIT_DWG(ByVal dwgFileName As String)
  24.         Dim acadHost As New DwgHost
  25.         Dim db As CAD_DBS.Database = Nothing
  26.         db = New CAD_DBS.Database
  27.         CAD_DBS.HostApplicationServices.WorkingDatabase = db
  28.         ' читаю базу чертежа
  29.         db.ReadDwgFile(dwgFileName, IO.FileShare.ReadWrite, False, Nothing)
  30.          ' ...      
  31.          ' редактирую базу как мне хочется
  32.          '...
  33.          ' закрываю базу
  34.          db.CloseInput(True)
  35.          ' ну и сохраняю результат в файле
  36.          db.SaveAs("C:\result.dwg", CAD_DBS.DwgVersion.Current)
  37.    End Sub
  38.  
  39.  



Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: RealDWG для Acad 2014
« Ответ #1 : 28-02-2016, 21:45:51 »
Алексей (IdeaSoft)
1) К сожалению вопросы связанные с RealDWG  тебе придётся задавать напрямую в ADN DevHelp. Я при всём моём желании помочь не могу.
2) Судя по всему описание DwgHost неполное. Посмотри этот пример: http://adndevblog.typepad.com/autocad/2012/05/fentons-recommended-hostapplicationservices-implementation-for-realdwg-net.html
3) По поводу версии .NET Framework 4.5 у меня большие сомнения, так как AutoCAD 2014 устанавливался с .NET Framework 4.0
4) Что касается acdb19resXXX.dll, то в AutoCAD 2014 языковые версии в других каталогах:
"C:\Program Files\Autodesk\AutoCAD 2014\en-US\acdb19res.dll"
"C:\Program Files\Autodesk\AutoCAD 2014\ru-RU\acdb19res.dll"
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: RealDWG для Acad 2014
« Ответ #2 : 28-02-2016, 22:29:46 »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13880
  • Карма: 1786
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: RealDWG для Acad 2014
« Ответ #3 : 28-02-2016, 22:33:23 »
Андрей Бушман
У RealDWG свои особенности.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Alexx

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 1
Re: RealDWG для Acad 2014
« Ответ #4 : 02-03-2016, 16:53:53 »
Была сделана попытка загрузить программу, имеющую неверный формат

Насколько я знаю, такая ошибка говорит о том, что в подгружаемой сборке используется отличная от выбранной в вашем проекте платформа (x86, x64...)

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: RealDWG для Acad 2014
« Ответ #5 : 02-03-2016, 20:02:26 »
Я сделал так помести свой exe-ник в корневую папку AutoCAD и все заработало.
А вот если мой  exe-ник находится вне корневой папки AutoCAD, то работать с ошибкой.

Оффлайн Alexx

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 1
Re: RealDWG для Acad 2014
« Ответ #6 : 02-03-2016, 20:32:14 »
А вот если мой  exe-ник находится вне корневой папки AutoCAD, то работать с ошибкой.

Алексей, я не совсем понял. Вы используете RealDWG или нет? При чем тут AutoCAD?

Исполняющая среда ищет сборки (файлы exe и dll) в GAC (Global Assembly Cache), в папке, где выполняется программа и в подпапках, типа .\acdbmgd.dll\acdbmdg.dll. Естественно, что когда Вы копируете свой exe в папку AutoCAD, то проблем с запуском не возникает, поскольку acdbmgd.dll и все зависимые сборки расположены в этой папке. Если вы запускаете exe  в другой папке, то .NET ищет acdbmgd.dll в GAC и в той же папке, где находится Ваш exe-файл. И если какая-то нужная сборка или сборка, от которой она зависит не найдена, выбрасывается исключение. Можно отлавливать это исключение (точнее подписаться на событие AppDomain.CurrentDomain.AssemblyResolve) и "подкладывать" исполняющей среде нужную сборку :)

P.S. Описал не все пути, где система ищет сборки. Подробнее можно почитать тут: https://msdn.microsoft.com/en-us/library/aa720133.aspx

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: RealDWG для Acad 2014
« Ответ #7 : 02-03-2016, 20:49:10 »
Объясню в чем проблема Да действительно Автокад тут не при причем.
RealDWG я пока не купил.
Прежде чем покупать RealDWG я хочу проверить на сколько все будет стабильно
работать без установки автокада.

Я для проверки выбрал нужные мне dll (для моей простой задачи -  мне нужно этих dll всего 8 шт.) 
С "библами" из автокада 2012 все работало, но тот же набор файлов из других версий автокад не работает.

А какой набор файлов в реальном пакете RealDWG я даже и не знаю.
Может кто подскажет существует ли демо-версия RealDWG что бы
мне проверить что все хорошо работать будет.

Оффлайн Alexx

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 1
Re: RealDWG для Acad 2014
« Ответ #8 : 02-03-2016, 21:02:20 »
Может кто подскажет существует ли демо-версия RealDWG что бы
мне проверить что все хорошо работать будет.

Сильно сомневаюсь.

С "библами" из автокада 2012 все работало, но тот же набор файлов из других версий автокад не работает.

Насколько я знаю, в RealDWG гораздо больше, чем 8 dll (там порядка 300 файлов, включая dll, dbx, tx и др.) :)
Вообще я полагаю должны быть утилиты, которые покажут Вам зависимости сборок. Нужно погуглить :)

Прежде чем покупать RealDWG я хочу проверить на сколько все будет стабильно
работать без установки автокада.

Есть, например, альтернатива в виде бесплатной DWG TrueView :)


Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: RealDWG для Acad 2014
« Ответ #9 : 02-03-2016, 21:04:49 »
Может кто подскажет существует ли демо-версия RealDWG
Зачем тебе вообще RealDWG? Условия его использования и цена (по деньгам), мягко говоря ни в какие ворота не лезут, насколько я помню.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: RealDWG для Acad 2014
« Ответ #10 : 02-03-2016, 21:09:38 »
Зачем тебе вообще RealDWG?
Да я так подумал может и не нужен вовсе этот RealDWG

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: RealDWG для Acad 2014
« Ответ #11 : 02-03-2016, 21:10:58 »
Да я так подумал может и не нужен вовсе этот RealDWG
Смотря какова твоя конечная цель.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: RealDWG для Acad 2014
« Ответ #12 : 02-03-2016, 21:11:03 »
там порядка 300 файлов
Я так подумал 300 файлов это конечно монстр наверное на 1G тянет на фига такую тяжесть таскать?

Оффлайн Alexx

  • ADN OPEN
  • **
  • Сообщений: 76
  • Карма: 1
Re: RealDWG для Acad 2014
« Ответ #13 : 02-03-2016, 21:15:55 »
300 файлов это конечно монстр наверное на 1G тянет

Да нет, там получается около 300 мб. И скорее всего использовать Вы будете не все возможности :)
Подписка правда денег стоит немалых. Перефразируя поговорку: "Тот, кто может себе позволить себе купить подписку RealDWG, может позволить себе с ним не работать" :)

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: RealDWG для Acad 2014
« Ответ #14 : 02-03-2016, 21:16:15 »
Смотря какова твоя конечная цель
Цель простая. Есть к примеру файл, в котором нужно заполнить определенные поля,
к примеру типовой шаблон какого-то проекта.
Для снижения лицензионной нагрузки в сети (для сетевой лицензии AutoCAD). проектировщикам
не нужно запускать интерфейс AutoCAD, а просто заполнить поля в файле DWG и все.
DXF не вариант, т.к. просто шаблон будет много весить.