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

ADN Club => AutoCAD .NET API => Тема начата: VitaliyB от 22-10-2021, 12:29:21

Название: Событие при нажатии левой кнопкой мыши
Отправлено: VitaliyB от 22-10-2021, 12:29:21
Добрый день! у меня есть ряд команд, которые определенным образом фильтруют выбор объектов.

Код - C# [Выбрать]
  1.  [CommandMethod("вв_(ПТО_№3:предыдущий выбор)")]
  2.         public void ViborLast()
  3.         {
  4.  
  5.             Document doc = acadApp.DocumentManager.MdiActiveDocument;
  6.             Database db = doc.Database;
  7.             Editor ed = doc.Editor;
  8.                 TypedValue[] acTypValAr = new TypedValue[2];
  9.                 acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, FiltrPerem.nameObj), 0);
  10.                 acTypValAr.SetValue(new TypedValue((int)DxfCode.LayerName, Layers.ActiveLayerName()), 1);
  11.                 SelectionFilter acSelFtr = new SelectionFilter(acTypValAr);
  12.                 PromptSelectionResult acSSPrompt;
  13.                 acSSPrompt = ed.GetSelection(acSelFtr);
  14. //далее обработка выбора
  15. }
  16.  

Хочется сделать условие (например checkBox на форме), при котором при нажатии левой кнопки мыши вместо обычной секущей рамки выбора autocad срабатывала бы эта команда. Такое возможно?
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: Александр Ривилис от 22-10-2021, 14:35:48
acSSPrompt = ed.SelectImplied();
Это зачем?
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: Александр Ривилис от 22-10-2021, 14:43:30
при котором при нажатии левой кнопки мыши вместо обычной секущей рамки выбора autocad срабатывала бы эта команда
При нажатии левой кнопки мыши где и когда? В каком состоянии AutoCAD в этот момент?
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: VitaliyB от 22-10-2021, 14:46:06
посмотрел в студии - у меня эта строчка там закомментирована. не удалил при переносе сюда, сейчас поправлю.
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: VitaliyB от 22-10-2021, 14:55:19
автокад в обычном состоянии своего покоя. сейчас попробую объяснить подробнее:
1. я сделал палитру, в которую записал необходимую мне информацию.
2. Состояние автокада - состояние покоя. То есть обычный режим работы автокада: нажал левую кнопку мыши - включил стандартный режим выбора- потянул мышь-выбрал объекты в области рамки.
3. Я хочу, чтобы при условии включенного чекбокса при левом нажатии мыши вместо вот этой стандартной возможности выбора включалась моя команда [CommandMethod("вв_(ПТО_№3:предыдущий выбор)")].


(https://i.postimg.cc/RqqDZ9bT/image.png) (https://postimg.cc/RqqDZ9bT)
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: Александр Ривилис от 22-10-2021, 15:12:53
VitaliyB,
Теоретически это возможно, хотя и с массой ограничений. Практически - очень рекомендую от этого отказаться и не портить стандартное поведение AutoCAD.
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: VitaliyB от 22-10-2021, 15:53:15
понял, спасибо
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: Александр Ривилис от 22-10-2021, 18:37:06
Я бы рекомендовал просто использовать команды для того, что ты собираешься делать. То же, что ты предполагал сделать очень трудоёмко. Кроме того я не уверен, что всё необходимое для этого есть в AutoCAD .NET API - в ObjectARX есть.
Название: Re: Событие при нажатии левой кнопкой мыши
Отправлено: VitaliyB от 22-10-2021, 19:17:33
Я понял - "овчинка выделки не стоит". Буду использовать команды. В общем-то я сейчас так и делаю. Воспользуюсь Вашим советом, спасибо