| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Можно ли подсветить грипсы во время выполнения команды?

Можно ли подсветить грипсы во время выполнения команды?

Ответ
Поиск в этой теме
Непрочитано 17.11.2004, 16:05 #1
Можно ли подсветить грипсы во время выполнения команды?
Torino
 
Штаб
Регистрация: 21.08.2003
Сообщений: 943

Можно ли подсветить грипсы во время выполнения встроенной в Акад команды?
Например: запускаю команду LINE и во время ее выполнения грипсы подсвечиваются.
Просмотров: 4898
 
Непрочитано 17.11.2004, 17:40
#2
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Не совсем понятно грипсы каких объектов нужно подсветить. Отрезка после отрисовки? Всех объектов, существующих до отрисовки?
В общем случае используется функция (sssetfirst...). Примерно так:
Код:
[Выделить все]
(sssetfirst nil set:objects_to_highlight)
setbjects_to_highlight - набор примитивов, у которых должны быть включены грипсы...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 17.11.2004, 18:46
#3
vk

сисадмин
 
Регистрация: 26.08.2003
Самара
Сообщений: 1,022
<phrase 1=


А что можно сделать с грипсами во время выполнения команды?
vk вне форума  
 
Автор темы   Непрочитано 17.11.2004, 21:50
#4
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


>>kos
Действительно, вопрос задал некорректно.
Идеальный вариант, если можно указать объект или группу объектов, у которых необходимо подсветить грипсы.
Т.е. так: Select object(s) to highlight grips: Выделяем объекты -> Enter -> Запускается команда LINE, а грипсы уже подсвечены.

>>vk
Чтобы видеть переломные (характерные) точки объектов. Например для полилинии определить, где началась касательная дуга.
Можно, конечно, использовать привязки (и они обязательно будут использоваться), но это получается тыкание наугад.
Torino вне форума  
 
Непрочитано 18.11.2004, 05:31
#5
виталич

конструктор
 
Регистрация: 04.09.2003
Новосибирск
Сообщений: 476


Цитата:
Сообщение от Torino
>>kos
Действительно, вопрос задал некорректно.
Идеальный вариант, если можно указать объект или группу объектов, у которых необходимо подсветить грипсы.
Т.е. так: Select object(s) to highlight grips: Выделяем объекты -> Enter -> Запускается команда LINE, а грипсы уже подсвечены.

>>vk
Чтобы видеть переломные (характерные) точки объектов. Например для полилинии определить, где началась касательная дуга.
Можно, конечно, использовать привязки (и они обязательно будут использоваться), но это получается тыкание наугад.
А между прочим, действительно актуально.
__________________
Не бывает так, чтобы не было никак. Как-нибудь да будет.
виталич вне форума  
 
Непрочитано 18.11.2004, 09:25
#6
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Вот накропал пример с использованием реакторов.
1. Создаем реакторы на события добавления примитива в БД и на завершение команды:
Код:
[Выделить все]
(setq vlr:addEntity (vlr-acdb-reactor nil (list (cons :vlr-objectAppended 'fun-addEntToSet))))

(setq vlr:endCommand (vlr-command-reactor nil (list (cons :vlr-commandEnded 'fun-entHighLight))))
2. Создаем обработчики этих событий:
Код:
[Выделить все]
(defun fun-addEntToSet (reactor paramsList)
  (if *setOfEnts*
    (ssadd (cadr paramsList) *setOfEnts*)
    (progn
      (setq *setOfEnts* (ssadd))
      (ssadd (cadr paramsList) *setOfEnts*)
    ) ;_ progn
  ) ;_ if
) ;_ defun


(defun fun-entHighLight (reactor paramsList)
  (if *setOfEnts*
    (progn
      (sssetfirst nil *setOfEnts*)
      (setq *setOfEnts* nil)
    ) ;_ progn
  ) ;_ if
) ;_ defun
Даннай код делает следующее: при добавлении примитива в БД помещает его в набор *setOfEnts*; при завершении команды включает грипсы у только что созданных примитивов.

Для Вашего случая, скорее всего, необходим реактор на событие :vlr-commandWillStart (вызвана команда AutoCAD) и в качестве набора для выделения нужно использовать заранее сформированный набор примитивов.

Внимание! Код никак не тестировался, никаких программных проверок перед выполнением не производится. При таком отношении к реакторам могут быть ба-а-а-альшие проблемы
Писано для AutoCAD 2005.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Автор темы   Непрочитано 18.11.2004, 10:31
#7
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


>>kos
Спасибо за лисп.
Создаю LINE, жму ENTER.
Команда завершается, грипсы у только что созданного объекта подсвечиваются.
Жму ENTER за повторного запуска команды.
Грипсы гаснут, команда запускается.

А идея в том, чтобы они были включены в момент работы команды LINE.
Torino вне форума  
 
Непрочитано 18.11.2004, 11:54
#8
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Цитата:
Сообщение от Torino
Команда завершается, грипсы у только что созданного объекта подсвечиваются.
Жму ENTER за повторного запуска команды.
Грипсы гаснут, команда запускается.
Да, именно так и должно быть.
Цитата:
Сообщение от Torino
А идея в том, чтобы они были включены в момент работы команды LINE.
Цитата:
Сообщение от kos
Для Вашего случая, скорее всего, необходим реактор на событие :vlr-commandWillStart (вызвана команда AutoCAD) и в качестве набора для выделения нужно использовать заранее сформированный набор примитивов.
К большому моему сожалению только что "положил" AutoCAD. Буду переставлять систему - давно к этому шло.
Дома вечером постараюсь реализовать...
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Непрочитано 18.11.2004, 16:46
#9
kos

LISP-программист
 
Регистрация: 25.08.2003
Тутэйшы
Сообщений: 238


Torino: Можно ли подсветить грипсы во время выполнения команды?

Хочу Вас разочаровать: нет!

Цитата:
Note Do not call sssetfirst when AutoCAD is in the middle of executing a command.
из help'а VisualLISP.

Кстати:
1. сам я раньше этого не знал.
2. или я не совсем разобрапся, или sssetfirst работает не так, как описано в help'е.
__________________
Там все есть для счастья - меня там только нет.
Так это значит, что я там - буду!
kos вне форума  
 
Автор темы   Непрочитано 18.11.2004, 19:38
#10
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


>>kos
Спасибо!
Как вариант можно временно поместить POINTs в переломные точки.
Но это уже совсем другая история
Torino вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Можно ли подсветить грипсы во время выполнения команды?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск