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

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 28-02-2016, 19:28:03

Название: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 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.  


Название: Re: RealDWG для Acad 2014
Отправлено: Александр Ривилис от 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"
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 28-02-2016, 22:29:46
По поводу версии .NET Framework 4.5 у меня большие сомнения
http://bushman-andrey.blogspot.ru/2014/04/net-autocad-net-framework-ms-visual.html
Название: Re: RealDWG для Acad 2014
Отправлено: Александр Ривилис от 28-02-2016, 22:33:23
Андрей Бушман
У RealDWG свои особенности.
Название: Re: RealDWG для Acad 2014
Отправлено: Alexx от 02-03-2016, 16:53:53
Была сделана попытка загрузить программу, имеющую неверный формат

Насколько я знаю, такая ошибка говорит о том, что в подгружаемой сборке используется отличная от выбранной в вашем проекте платформа (x86, x64...)
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 20:02:26
Я сделал так помести свой exe-ник в корневую папку AutoCAD и все заработало.
А вот если мой  exe-ник находится вне корневой папки AutoCAD, то работать с ошибкой.
Название: Re: RealDWG для Acad 2014
Отправлено: Alexx от 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 (https://msdn.microsoft.com/en-us/library/aa720133.aspx)
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 20:49:10
Объясню в чем проблема Да действительно Автокад тут не при причем.
RealDWG я пока не купил.
Прежде чем покупать RealDWG я хочу проверить на сколько все будет стабильно
работать без установки автокада.

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

А какой набор файлов в реальном пакете RealDWG я даже и не знаю.
Может кто подскажет существует ли демо-версия RealDWG что бы
мне проверить что все хорошо работать будет.
Название: Re: RealDWG для Acad 2014
Отправлено: Alexx от 02-03-2016, 21:02:20
Может кто подскажет существует ли демо-версия RealDWG что бы
мне проверить что все хорошо работать будет.

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

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

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

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

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

Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 21:04:49
Может кто подскажет существует ли демо-версия RealDWG
Зачем тебе вообще RealDWG? Условия его использования и цена (по деньгам), мягко говоря ни в какие ворота не лезут, насколько я помню.
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 21:09:38
Зачем тебе вообще RealDWG?
Да я так подумал может и не нужен вовсе этот RealDWG
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 21:10:58
Да я так подумал может и не нужен вовсе этот RealDWG
Смотря какова твоя конечная цель.
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 21:11:03
там порядка 300 файлов
Я так подумал 300 файлов это конечно монстр наверное на 1G тянет на фига такую тяжесть таскать?
Название: Re: RealDWG для Acad 2014
Отправлено: Alexx от 02-03-2016, 21:15:55
300 файлов это конечно монстр наверное на 1G тянет

Да нет, там получается около 300 мб. И скорее всего использовать Вы будете не все возможности :)
Подписка правда денег стоит немалых. Перефразируя поговорку: "Тот, кто может себе позволить себе купить подписку RealDWG, может позволить себе с ним не работать" :)
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 21:16:15
Смотря какова твоя конечная цель
Цель простая. Есть к примеру файл, в котором нужно заполнить определенные поля,
к примеру типовой шаблон какого-то проекта.
Для снижения лицензионной нагрузки в сети (для сетевой лицензии AutoCAD). проектировщикам
не нужно запускать интерфейс AutoCAD, а просто заполнить поля в файле DWG и все.
DXF не вариант, т.к. просто шаблон будет много весить.
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 21:18:14
"Тот, кто может себе позволить себе купить подписку RealDWG, может позволить себе с ним не работать"
Молодец - хорошо сказал добавлю тебе кармы
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 21:20:43
Off-Topic: показать
Цель простая. Есть к примеру файл, в котором нужно заполнить определенные поля,
к примеру типовой шаблон какого-то проекта.
Чем не устроила Teigha?
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 21:23:00
Off-Topic: показать
Чем не устроила Teigha?
Пробовал ее в 2011 году - была сыровата. Сейчас не знаю. На последней конференции в 2015 г. ребята
из Nano говорили, что много доработали,
А сами проектировщики о Nano отзываются не очень.
А чья это Teigha вообще она что OPEN Source?
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 21:27:41
Off-Topic: показать
Пробовал ее в 2011 году - была сыровата. Сейчас не знаю. На последней конференции в 2015 г. ребята
из Nano говорили, что много доработали,
А сами проектировщики о Nano отзываются не очень.
На заборе тоже много чего пишут. :) "Вы не любите кошек? Так может вы просто не умеете их готовить? ©". Напоминает ситуацию на двг.ру - там куча "спецов", рассуждающих о плюсах и минусах подшивок, в то время как сами даже понятия не имеют о том, как работают оставшиеся две вкладки менеджера подшивок. :) А про page setup override и callout blocks они и вовсе судят по звучанию. :) Автокад и сам, мягко говоря, далёк от идеала в плане "сыроватости", однако это тебя не смущает. :)
Название: Re: RealDWG для Acad 2014
Отправлено: Алексей (IdeaSoft) от 02-03-2016, 21:36:14
далёк от идеала
Любая программа имеет свои ошибки.
Даже если прога хорошо, она обязательно кому-то не понравится.
Если программный продукт нравится более чем 60% пользователей - думаю это уже успех.
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 21:42:41
Ясно. Значит тебе действительно нужен RealDWG (смысла доказывать что-то не вижу). Надеюсь, что обозначенные тобой проценты взяты не с потолка и учитывают то, что более 800 компаний (https://www.opendesign.com/member_list), разрабатывающих софт, используют обозначенный мною альтернативный, "сыроватый" API. Количество компаний, использующих RealDWG мне не известно, но что-то подсказывает мне, что по карману это далеко не многим. :)
Название: Re: RealDWG для Acad 2014
Отправлено: Alexx от 02-03-2016, 22:01:50
Для снижения лицензионной нагрузки

Кидайте свой exe-шник в папку DWG TrueView и будет Вам счастье :)
Название: Re: RealDWG для Acad 2014
Отправлено: Александр Ривилис от 02-03-2016, 22:03:21
Андрей Бушман
Напоминаю про правила форума. Offtop прекращаем.
Алексей (IdeaSoft)
Возможно тебя устроит accoreconsole.
По поводу твоего трюка с RealDWG 2014 - насмешил.
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 22:05:40
Цитата: Алексей (IdeaSoft) от 02-03-2016, 21:16:15

    Для снижения лицензионной нагрузки


Кидайте свой exe-шник в папку DWG TrueView и будет Вам счастье :)
Тогда уж предварительно уточнив, не является ли такой способ нарушением лицензии. :) Вряд ли автодеск даст зелёный свет подобным фокусам.
Название: Re: RealDWG для Acad 2014
Отправлено: Александр Ривилис от 02-03-2016, 22:06:55
Если не закончите offtop и хакерские штучки - тему закрою.
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 22:07:10
Алексей (IdeaSoft)
Возможно тебя устроит accoreconsole.
Зависит от того, чего именно он хочет. Я пытался выяснить это выше, но безрезультатно.
Название: Re: RealDWG для Acad 2014
Отправлено: Alexx от 02-03-2016, 22:09:58
Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: RealDWG для Acad 2014
Отправлено: Андрей Бушман от 02-03-2016, 22:12:51
Извините, вам запрещён просмотр содержимого спойлеров.