ARXDBG и MGDDBG - утилиты для анализа AutoCAD, чертежа и т.д.

Автор Тема: ARXDBG и MGDDBG - утилиты для анализа AutoCAD, чертежа и т.д.  (Прочитано 14764 раз)

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

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
Очень полезной для разработчиков ObjectARX и .NET-модулей  для AutoCAD и его вертикальных приложений являются утилиты ARXDBG и MGDDBG.
Они во многом похожи между собой, но есть и различия. ARXDBG создан с использованием технологии ObjectARX и написан на C++, а MGDDBG основан на AutoCAD .NET API и написан на C#. Исходный код утилиты ARXDBG есть в составе ObjectARX SDK (в каталоге samples\database\ARXDBG). Её BUNDLE для версий AutoCAD начиная с 2012 можно скачать здесь: http://adn-cis.org/assets/gallery/AutoCAD/ArxDbg.bundle.zip
Исходный текст MGDDBG есть в составе BUNDLE, который можно скачать здесь: http://adn-cis.org/assets/gallery/AutoCAD/MgdDbg.zip
Чтобы установить ARXDBG и MGDDBG необходимо их BUNDLE'ы разархивировать в каталог  %ProgramFiles%\Autodesk\ApplicationPlugins
После автоматической загрузки этих приложений в AutoCAD при следующем запуске его в контекстном меню вы увидите следующие пункты:


Инструкция по использованию ARXDBG есть в составе ObjectARX SDK: samples\database\ARXDBG\ArxDbg.doc
Краткое описание MGDDBG в составе BUNDLE: Autodesk DWG MgdDBG.bundle\Contents\Resources\helpfile.html

P.S.: Возможно Windows воспримет эти приложения как загруженные из интернета, заблокирует их и не захочет загружать в AutoCAD. Чтобы разблокировать arx/dll-файлы (да и другие исполняемые файлы) необходимо выполнить разблокировку этих файлов, т.е. следующее:

Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Максим Маркевич

  • ADN Club
  • ****
  • Сообщений: 254
  • Карма: 28
  • Skype: evthisrel
P.S.: Возможно Windows воспримет эти приложения как загруженные из интернета, заблокирует их и не захочет загружать в AutoCAD. Чтобы разблокировать arx/dll-файлы (да и другие исполняемые файлы) необходимо выполнить разблокировку этих файлов, т.е. следующее:
Подтверждаю, у меня на одном компе так и вышло.:) Тогда, учитывая тот факт, что файлов в MGDDBG побольше, достаточно напряжно их всех разблокировывать. Тогда проще проверить, заблокирован ли сам архив. Соответственно, если разблокировать его, то все извлеченные файлы будут разблокированы.

Возможно, несколько очевидное дополнение, но я вот полез сразу все подряд анлочить, быстро надоело, вот и подумал, что, возможно, проще вначале это проверить.

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
Дмитрий Загорулькин обнаружил ошибку в ARXDBG и MGDDBG для версий 2015...2017, когда при включенных документных реакторах при переключении на вкладку Начало (Start) или закрытии всех открытых документов возникала ошибка (Fatal Error для ARXDBG и Exception для MGDDBG). Я исправил эти ошибки и выложил исправленные версии.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2054
  • Карма: 528
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
При загруженном через Bundle ARXDBG при сохранении чертежа в комстроку выдает такое:
APPMSG: ArxDbg, kSaveMsgТак должно быть, или это сигнализирует о чем-то?

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
Так должно быть, или это сигнализирует о чем-то?
Так должно быть. Всё в порядке. Это диагностическое сообщение о событии сохранения чертежа (при автосохранении тоже).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2054
  • Карма: 528
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Наткнулся на еще одну ошибку в MgdDBG при попытке посмотреть свойства штриховки типа "SOLID":
Autodesk.AutoCAD.Runtime.Exception: eNotApplicable
   в Autodesk.AutoCAD.DatabaseServices.Hatch.GetHatchLinesData()
   в MgdDbg.Snoop.CollectorExts.Entity.Stream(ArrayList data, Hatch hatch) в e:\RAN\C#\DWGMgdDbgSource\Snoop\CollectorExts\Entity.cs:строка 1395
   в MgdDbg.Snoop.CollectorExts.Entity.Stream(ArrayList data, Entity ent) в e:\RAN\C#\DWGMgdDbgSource\Snoop\CollectorExts\Entity.cs:строка 213
   в MgdDbg.Snoop.CollectorExts.Entity.CollectEvent(Object sender, CollectorEventArgs e) в e:\RAN\C#\DWGMgdDbgSource\Snoop\CollectorExts\Entity.cs:строка 59
   в MgdDbg.Snoop.Collectors.Collector.CollectorExt.Invoke(Object sender, CollectorEventArgs e)
   в MgdDbg.Snoop.Collectors.Collector.FireEvent_CollectExt(Object objToSnoop) в e:\RAN\C#\DWGMgdDbgSource\Snoop\Collectors\Collector.cs:строка 63
   в MgdDbg.Snoop.Collectors.Objects.Collect(Object obj) в e:\RAN\C#\DWGMgdDbgSource\Snoop\Collectors\Objects.cs:строка 52
   в MgdDbg.Snoop.Forms.DBObjects.TreeNodeSelected(Object sender, TreeViewEventArgs e) в e:\RAN\C#\DWGMgdDbgSource\Snoop\Forms\DBObjects.cs:строка 452
   в System.Windows.Forms.TreeView.OnAfterSelect(TreeViewEventArgs e)
   в System.Windows.Forms.TreeView.TvnSelected(NMTREEVIEW* nmtv)
   в System.Windows.Forms.TreeView.WmNotify(Message& m)
   в System.Windows.Forms.TreeView.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
В какой версии AutoCAD проверял?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение


Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
Надо будет там try/catch поставить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2054
  • Карма: 528
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Еще одна ошибка. Похоже, из той же серии. Теперь, при попытке посмотреть свойства мультивыноски:
Autodesk.AutoCAD.Runtime.Exception: eInvalidContext
   в Autodesk.AutoCAD.DatabaseServices.MLeader.get_BlockPosition()
   в MgdDbg.Snoop.CollectorExts.Entity.Stream(ArrayList data, MLeader mleader) в e:\RAN\C#\DWGMgdDbgSource\Snoop\CollectorExts\Entity.cs:строка 897
   в MgdDbg.Snoop.CollectorExts.Entity.Stream(ArrayList data, Entity ent) в e:\RAN\C#\DWGMgdDbgSource\Snoop\CollectorExts\Entity.cs:строка 255
   в MgdDbg.Snoop.CollectorExts.Entity.CollectEvent(Object sender, CollectorEventArgs e) в e:\RAN\C#\DWGMgdDbgSource\Snoop\CollectorExts\Entity.cs:строка 59
   в MgdDbg.Snoop.Collectors.Collector.CollectorExt.Invoke(Object sender, CollectorEventArgs e)
   в MgdDbg.Snoop.Collectors.Collector.FireEvent_CollectExt(Object objToSnoop) в e:\RAN\C#\DWGMgdDbgSource\Snoop\Collectors\Collector.cs:строка 63
   в MgdDbg.Snoop.Collectors.Objects.Collect(Object obj) в e:\RAN\C#\DWGMgdDbgSource\Snoop\Collectors\Objects.cs:строка 52
   в MgdDbg.Snoop.Forms.DBObjects.TreeNodeSelected(Object sender, TreeViewEventArgs e) в e:\RAN\C#\DWGMgdDbgSource\Snoop\Forms\DBObjects.cs:строка 452
   в System.Windows.Forms.TreeView.OnAfterSelect(TreeViewEventArgs e)
   в System.Windows.Forms.TreeView.TvnSelected(NMTREEVIEW* nmtv)
   в System.Windows.Forms.TreeView.WmNotify(Message& m)
   в System.Windows.Forms.TreeView.WndProc(Message& m)
   в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Пробовал в AutoCAD Civil 3D 2014-2017 - везде есть эта ошибка.

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
Отметил для себя. Буду делать порт для новой версии AutoCAD - исправлю сразу  все замечания.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
Решил не дожидаться, исправил и выложил исправленную версию. Тестируйте. Не забывайте про необходимость разблокировать arx/dll-файлы.
« Последнее редактирование: 10-02-2017, 23:23:10 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2054
  • Карма: 528
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Сегодня копался в исходниках MgdDbg и, похоже, нашел ошибку. В файле Utils/ReferenceFiler.cs строки 126-130:
Код - C# [Выбрать]
  1. public override void
  2. WriteSoftPointerId(ObjectId value)
  3. {
  4.     if (value.IsNull == false)
  5.         m_hardPointerIds.Add(value);
  6. }
  7.  
По логике, вместо m_hardPointerIds должно быть m_softPointerIds.

Оффлайн Александр РивилисАвтор темы

  • Administrator
  • *****
  • Сообщений: 9696
  • Карма: 1241
  • Рыцарь ObjectARX
  • Skype: rivilis
Дмитрий Загорулькин,
Я посмотрю, но похоже ты прав.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2054
  • Карма: 528
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Ни то ни другое приложение не хотят воспринимать значения типа Int64 из записи в словаре :(
Забыл уточнить. MgdDbg еще и перед тем как выдать результат, выводит окошко с ошибкой. И нужно несколько раз нажать "Пропустить". Я так подозреваю, что столько же раз, сколько записей с данными типа Int64.