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

ADN Club => AutoCAD .NET API => Тема начата: Александр Пекшев aka Modis от 07-11-2017, 13:16:32

Название: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Александр Пекшев aka Modis от 07-11-2017, 13:16:32
Всем привет. Пока никаких кодов, потому-что я даже не знаю где это можно сделать (если и можно) - в GripData, GripOverrule или еще где

Есть у меня примитив с GripOverrule. Есть свои грипы. При работе с этими грипами должно происходить только растягивание. Однако автокад позволяет помимо растягивания еще задать базовую точку, Копировать, Отменить и выход:
(https://s1.postimg.org/4hg1tu6iob/Screenshot_3.png) (https://postimg.org/image/4hg1tu6iob/)
Вот мне не нужна возможность копирования - только растягивание. Остальное не мешает

Но дальше больше - если я выберу грип, начну его тянуть и буду нажимать пробел, то будут меняться команды:
(https://s1.postimg.org/196gpivm5n/Screenshot_4.png) (https://postimg.org/image/196gpivm5n/)
Вот это вообще плохо - при работе моего "примитива" начинаются всякие глюки, которые я даже не знаю как обрабатывать. Да и не сильно хочу

Вот и вопрос - можно ли заставить грип работать только в одном режиме Растягивание?
Название: Re: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Александр Ривилис от 07-11-2017, 13:23:27
Вот и вопрос - можно ли заставить грип работать только в одном режиме Растягивание?
Вообще-то насколько я помню для любой (даже стандартной) ручки есть все эти опции. Так что отключить их без какого-то хитрого хака ты не сможешь.
Название: Re: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Александр Пекшев aka Modis от 07-11-2017, 15:48:59
Есть предположение, что получится как-то через метод OnGripStatusChanged класса GripData это сделать. У статуса ручки много интересных вариантов:

(https://s1.postimg.org/50wvq7zi7f/Screenshot_5.png) (https://postimg.org/image/50wvq7zi7f/)

Может это как раз то, что мне нужно? Правда пока не могу придумать, что делать в ненужных мне условиях
Название: Re: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Александр Ривилис от 07-11-2017, 16:43:17
Может это как раз то, что мне нужно?
Сомневаюсь, что это тебе поможет. Попробуй поиграться с GripMode.
Название: Re: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Александр Пекшев aka Modis от 07-11-2017, 18:13:19
Александр Ривилис, наткнулся на пример, выложенный Вами, в этой теме (http://adn-cis.org/forum/index.php?topic=7174.0) - вроде то, что мне нужно. Я его затестил - кроме перемещения ручки там ничего нельзя сделать. Буду пробовать и разбираться
Название: Re: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Александр Пекшев aka Modis от 07-11-2017, 22:01:27
Получил хороший ответ на форуме автодеска (https://forums.autodesk.com/t5/net/gripoverrule-is-it-possible-to-disable-options-available-in-the/td-p/7523817). Звучит так:
Цитировать
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 (http://help.autodesk.com/view/OARX/2018/ENU/?guid=OREF-AcDbGripData__disableModeKeywords_bool). В справке к Net  как обычно глухо как в танке ))
В итоге все решение проблемы свелось к добавлению одной строчки!
Название: Re: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Владимир Шу от 08-11-2017, 07:44:37
В итоге все решение проблемы свелось к добавлению одной строчки!
А строчку показать в контексте?
Название: Re: GripOverrule - возможно ли отключить доступные в автокаде варианты поведения
Отправлено: Александр Пекшев aka Modis от 08-11-2017, 10:03:41
А строчку показать в контексте?
Если вы создаете GripData (что скорее всего), то самый простой способ, который я и использовал - задать свойство прям в конструкторе. Типа того:
Код - C# [Выбрать]
  1. public class MyGripData : GripData
  2. {
  3.     public MyGripData()
  4.     {
  5.         this.ModeKeywordsDisabled = true;
  6.     }
  7.     //..... other
  8. }