GripOverrule - возможно ли отключить доступные в автокаде варианты поведения

Автор Тема: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения  (Прочитано 3418 раз)

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

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

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Всем привет. Пока никаких кодов, потому-что я даже не знаю где это можно сделать (если и можно) - в GripData, GripOverrule или еще где

Есть у меня примитив с GripOverrule. Есть свои грипы. При работе с этими грипами должно происходить только растягивание. Однако автокад позволяет помимо растягивания еще задать базовую точку, Копировать, Отменить и выход:

Вот мне не нужна возможность копирования - только растягивание. Остальное не мешает

Но дальше больше - если я выберу грип, начну его тянуть и буду нажимать пробел, то будут меняться команды:

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

Вот и вопрос - можно ли заставить грип работать только в одном режиме Растягивание?

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

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

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Есть предположение, что получится как-то через метод OnGripStatusChanged класса GripData это сделать. У статуса ручки много интересных вариантов:



Может это как раз то, что мне нужно? Правда пока не могу придумать, что делать в ненужных мне условиях

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Может это как раз то, что мне нужно?
Сомневаюсь, что это тебе поможет. Попробуй поиграться с GripMode.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Александр Ривилис, наткнулся на пример, выложенный Вами, в этой теме - вроде то, что мне нужно. Я его затестил - кроме перемещения ручки там ничего нельзя сделать. Буду пробовать и разбираться

Отмечено как Решение Александр Пекшев aka Modis 07-11-2017, 22:01:39

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Получил хороший ответ на форуме автодеска. Звучит так:
Цитировать
I'm pretty sure that the GripData.DisableModeKeywords is what you need to set, but don't look in the managed docs for it, because they're 'empty'.  See the native docs for AcDbGripData::disableModeKeywords()
Ссылка на справку ObjectARX. В справке к Net  как обычно глухо как в танке ))
В итоге все решение проблемы свелось к добавлению одной строчки!

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
В итоге все решение проблемы свелось к добавлению одной строчки!
А строчку показать в контексте?

Оффлайн Александр Пекшев aka ModisАвтор темы

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
А строчку показать в контексте?
Если вы создаете GripData (что скорее всего), то самый простой способ, который я и использовал - задать свойство прям в конструкторе. Типа того:
Код - C# [Выбрать]
  1. public class MyGripData : GripData
  2. {
  3.     public MyGripData()
  4.     {
  5.         this.ModeKeywordsDisabled = true;
  6.     }
  7.     //..... other
  8. }