Интегрирование WPF приложения в окно AutoCAD

Автор Тема: Интегрирование WPF приложения в окно AutoCAD  (Прочитано 13853 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн ДаниилАвтор темы

  • ADN Club
  • Сообщений: 31
  • Карма: 2
Здравствуйте. Я являюсь новичком в программирование для AutoCAD и начинающим в .net программировании. На новом рабочем месте получил тестовое задание, связанное как раз с AutoCAD и .net. Необходимо разработать плагин для AutoCAD, позволяющий вести диалог с пользователем.

Застрял на следующем этапе: вызов диалога с пользователь, реализованного как WPF приложение, в рабочем окне AutoCAD (Как элемент Palette). Нашел достаточное количество литературы по работе с API.AutoCAD и примеров, в том числе и по реализации WPF, однако не нашел четкой инструкции именно по тому, как я могу вызвать из AutoCAD свой WPF диалог.

Пробовал писать простейший плагин как Class Library, с этим проблем не было. Предположил, что для вызова WPF приложения необходимо вызывать его из отдельной dll командой ShowModalDialog.

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

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
WPF приложение... WPF диалог...
Ты определись с тем, что тебе нужно. Открыть в AutoCAD окно, созданное при помощи технологии WPF - это одно, а запустить внешнее приложение, с GUI построенным на WPF - это другое.

Оффлайн ДаниилАвтор темы

  • ADN Club
  • Сообщений: 31
  • Карма: 2
Задание подразумевает создание приложения-плагина к AutoCAD, которое позволяет редактировать слои и примитивы. Как я понимаю, плагин подразумевает дополнение, интегрируемое в основную программу. Поэтому, думаю, мне необходим первый вариант: "Открыть в AutoCAD окно, созданное при помощи технологии WPF".
 

Отмечено как Решение Александр Ривилис 31-01-2015, 18:47:03

Оффлайн ДаниилАвтор темы

  • ADN Club
  • Сообщений: 31
  • Карма: 2
Кажется, я все-таки нашел решение, все оказалось проще, чем я думал. Создал проект Class Library, в него внедрил элемент WPF - UserControl
в коде прописал создание экземпляра PaletteSet, а также экземпляра добавленного UserControl, добавление UserControl в PaletteSet. Помог один из англоязычных ресурсов, если кому понадобиться:

блог KEAN WALMSLEY "through the interface"

http://through-the-interface.typepad.com/through_the_interface/2009/08/hosting-wpf-content-inside-an-autocad-palette.html

В данном посте имеются ссылки на презентации Fenton Webb:

AutoCAD: Using WPF in your Applications - Part 1 (28.9 Mb)
AutoCAD: Using WPF in your Applications - Part 2 (16.3 Mb)

в архивах имеются исходники с простейшим примером вызова WPF в AutoCAD
« Последнее редактирование: 31-01-2015, 15:11:16 от Александр Ривилис »

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
запустить внешнее приложение, с GUI построенным на WPF
Я бы хотел по подробнее на этом остановится. Задача выглядит следующим образом: командой автокада вызывается диалоговые окно, пользователь щелкает по элементам управления и в автокаде что то происходит. Как это сделать?


Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Спасибо, буду изучать статью

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
запустить внешнее приложение, с GUI построенным на WPF
Я бы хотел по подробнее на этом остановится. Задача выглядит следующим образом: командой автокада вызывается диалоговые окно, пользователь щелкает по элементам управления и в автокаде что то происходит. Как это сделать?
А причем здесь внешнее приложение? Андрей Бушман имел в виду, что можно запустить из своего приложения, использующего AutoCAD .NET API внешний exe-файл, использующий WPF. Но судя по всему это не ваш случай. И уточните нужно ли вам модальное окно или палитра? Если палитра, то Дмитрий Загорулькин дал хороший хороший пример. А если модальное окно, то нужно ли WPF или достаточно Form?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Ситуация такая. Я хочу использовать технологию wpf вместе с AutoCAD .NET API. Последнюю я немного пощупал, написал пару dll. А вот wpf я только-только начал изучать. И для меня пока загадка как эти две технологии между собой могут взаимодействовать . Если я правильно понял, вышеперечисленные примеры - это примеры компиляции кодов wpf + AutoCAD .NET API в одну dll сборку(вариант палитры). А запуск exe приложения(вариант модального окна) я примеров не нашёл. Ну а какое из этих двух мне лучше использовать я сам не знаю ввиду не понимания преимуществ одной над второй. Думаю, в процессе изучения я пойму разницу и после определить.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
А запуск exe приложения(вариант модального окна) я примеров не нашёл.
Этот вариант я бы вообще не рассматривал, т.к. в этом exe-файле нельзя использовать AutoCAD .NET API совсем!
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 737
А запуск exe приложения(вариант модального окна)
Сдаётся мне, что нет понимания что такое "модальное окно": https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BE%D0%BA%D0%BD%D0%BE
я примеров не нашёл
Держите пример:

Оффлайн dmitrymaslakov

  • ADN OPEN
  • Сообщений: 40
  • Карма: 1
Всё, тогда вариант ехе файла исключаю.
нет понимания что такое "модальное окно
Есть такой момент, буду лечить невежество упорным обучением через чтение книг и вашей помощью)