От полного нуля до ...

Автор Тема: От полного нуля до ...  (Прочитано 22856 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #15 : 17-10-2014, 12:32:09 »
P.S.: Кстати, приведенный тобой пример у меня заработал сразу.
Что я для этого сделал:
1) Создал новый проект при помощи AutoCAD .NET Wizard 2014
2) Удалил файл myCommands.cs
3) Заменил содержимое файла myPlugins.cs на то, которое ты написал
4) Откомпилировал пример, загрузил в AutoCAD и выполнил команду ADDLINE
5) Выполнил команду _ZOOM _ALL чтобы увидеть добавленный отрезок.
Отрезок на месте. Всё.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #16 : 17-10-2014, 12:37:50 »
Александр Ривилис,  да сори.
Цитировать
Ты как создавал проект? Вручную или при помощи AutoCAD .NET Wizard?
при помощи AutoCAD.NET Wizard
Цитировать
Ты сейчас про ObjectARX SDK 2014 или про AutoCAD .NET Wizard говоришь?
про ObjectARX SDK 2014.
Цитировать
2) Удалил файл myCommands.cs
не удалял, сейчас попробую.
Цитировать
3) Заменил содержимое файла myPlugins.cs на то, которое ты написал
да (полный текст см. выше).
Цитировать
4) Откомпилировал пример, загрузил в AutoCAD и выполнил команду ADDLINE
точно
Цитировать
5) Выполнил команду _ZOOM _ALL чтобы увидеть добавленный отрезок.
AutoCAD не принимает команду из пункта 4 ADDLINE.
Лень - двигатель прогресса.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #17 : 17-10-2014, 12:58:47 »
Удалил myCommands.cs и все сраслось :).
Лень - двигатель прогресса.

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #18 : 17-10-2014, 13:45:42 »
О! Где-то Андрей Бушман проводил исследования в каких случаях AutoCAD "видит" командные методы в нескольких классах, а в каких нет. Поэтому я предпочитаю все команды держать в одном классе и в одном файле.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: От полного нуля до ...
« Ответ #19 : 17-10-2014, 14:23:23 »
Насколько я знаю, AutoCAD не видит команды если:
- класс не public.
- метод команды не public (если к тому же не void - то еще и ошибку выдаст).
- в атрибуте сборки [assembly: CommandClass ... ] прописан другой класс. В этом случае будут грузиться только команды из указанного в атрибуте класса.

Других ограничений вроде не было. Хоть в одном классе команды, хоть в нескольких.
Но я тоже предпочитаю описывать команды в одном классе, а этот класс указывать в атрибуте CommandClass. При этом, разные команды для удобства можно разносить по различным файлам, как части класса (partial class).

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #20 : 29-10-2014, 17:42:56 »
Очередной глупый вопрос.
Где почитать что скрывают за собой(какие функции) библиотеки ObjectARX.
Крайне не хотелось бы изобретать велосипед и снова создавать(тем более, что получиться не ахти) функции, которые уже существуют.
Лень - двигатель прогресса.

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: От полного нуля до ...
« Ответ #21 : 29-10-2014, 22:20:35 »
Где-то Андрей Бушман проводил исследования в каких случаях AutoCAD "видит" командные методы в нескольких классах, а в каких нет.
Цитата: Загорулькин Дмитрий
Насколько я знаю
Дима "правильно знает". В дополнение к тому, что он написал, хочу добавить, что сборка может иметь столько атрибутов  CommandClass, сколько потребуется (т.е. вовсе не обязана ограничиваться лишь одним). Но если присутствует хотя бы один такой атрибут, то (как Дима уже сообщил) AutoCAD не будет искать команды нигде, кроме как в указанных при помощи этих атрибутах классах. Тут некоторый перевод SDK по теме.

А вот реализация IExtensionApplication в сборке должна быть одна, причём даже при наследовании классов её следует указывать явно (обусловлено криворукой реализацией Autodesk поиска IExtensionApplication) - подробности здесь.

Поэтому я предпочитаю все команды держать в одном классе и в одном файле.
Поскольку атрибутов CommandClass может быть сколько угодно и имеется возможность создавать частичные классы, то если команд много - я не леплю всё в одну, трудно перевариваемую кучу, но предпочитаю распределять логическими порциями по соответствующим классам. Так гораздо проще и удобней работать (имхо).

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

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: От полного нуля до ...
« Ответ #22 : 29-10-2014, 22:22:03 »
Где почитать что скрывают за собой(какие функции) библиотеки ObjectARX.
В документации ObjectARX SDK (см. подкаталог doc).

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #23 : 29-10-2014, 22:50:29 »
Андрей Бушман,
Спасибо.
Лень - двигатель прогресса.

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #24 : 11-06-2016, 09:58:53 »
и снова здравствуйте. Созрел для очередного вопроса. Итак:
Видел на просторах инета функцию, которая выдает длину и площадь выбранных примитивов, то есть, выбирается примитив - меняется цифера в форме, убирается примитив из набора (наверняка с помощью SHIFT) - меняется цифера. Попробовал сделать подобное, но все хорошо если нужен только конечный результат, то есть, закончил выбирать примитивы нажал ENTER - получил результат. Динамично не отслеживаются изменнения в SelectionSet.
На ум приходят несколько вариантов:
1. Как то получить набор примитивов, входящих в выбор, до того как создан окончательно SelectionSet.
2. Воспользовать Binding-ом WPF, но опять же надо к чему-то вязаться(этот вариант мне кажется более реальным).
3. SelectionSet - не правильный выбор, и решать задачу надо другим способом.
4. Вариант, которого я не знаю. :)
Пните в нужном направлении :).
код решения:
Plagin
Извините, вам запрещён просмотр содержимого спойлеров.

Data
Извините, вам запрещён просмотр содержимого спойлеров.

wpf
Извините, вам запрещён просмотр содержимого спойлеров.

Извините, вам запрещён просмотр содержимого спойлеров.
Лень - двигатель прогресса.

Отмечено как Решение nolte 12-06-2016, 22:45:10

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: От полного нуля до ...
« Ответ #25 : 11-06-2016, 10:12:11 »
Видел на просторах инета функцию, которая выдает длину и площадь выбранных примитивов, то есть, выбирается примитив - меняется цифера в форме, убирается примитив из набора (наверняка с помощью SHIFT) - меняется цифера.
Остальное не читал. Подписывайся на события Editor.SelectionAdded и Editor.SelectionRemoved и отслеживай в них текущее состояние набора выбранных примитивов.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: От полного нуля до ...
« Ответ #26 : 12-06-2016, 15:57:11 »
Editor.SelectionAdded и Editor.SelectionRemoved
Хм. А я подписывался на Document.ImpliedSelectionChanged и DocumentManager.DocumentActivated. Первое событие - для отслеживания изменения набора. Второе - чтобы обновлять данные при смене активного чертежа.
P.S> Еще раз перечитал "тз". Да, там не указано явно о каком выборе идет речь - предварительном или во время выполнения команды. Так что, может быть, я и не в тему.
P.S.S>
Цитировать
Видел на просторах инета функцию, которая выдает длину и площадь выбранных примитивов, то есть, выбирается примитив - меняется цифера в форме, убирается примитив из набора (наверняка с помощью SHIFT) - меняется цифера.
Александр Наумович, сдается мне, что речь идет о SelSim :)

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #27 : 12-06-2016, 16:45:20 »
вот еще бы и примерчик бросили, а то никак не могу дойти чего и как отслеживать.
Лень - двигатель прогресса.


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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
  • Skype: leoleo3172
Re: От полного нуля до ...
« Ответ #29 : 12-06-2016, 20:37:56 »
разбираюсь как раз с этими примерами
спасибо
Лень - двигатель прогресса.