Расширение возможностей реакторов
Окончательная компоновка
|
| ||||
Расширение возможностей реакторов | |||||
На занятии 6 мы назначили функцию отклика gp:command-will-start реакторному событию :vlr-commandWillStart. На текущем этапе функция только выводит некоторые сообщения и присваивает двум глобальным переменным *polyToChange* и *reactorsToRemove* значение nil.
Для расширения возможностей функции отклика gp:command-will-start;; Reset all four reactor globals to nil. (setq *lostAssociativity* nil *polyToChange* nil *reactorsToChange* nil *reactorsToRemove* nil) (if (member (setq currentCommandName (car command-list)) '( "U" "UNDO" "STRETCH" "MOVE" "ROTATE" "SCALE" "BREAK" "GRIP_MOVE" "GRIP_ROTATE" "GRIP_SCALE" "GRIP_MIRROR") ) ;_ end of member (progn (setq *lostAssociativity* T) (princ "\nПРИМЕЧАНИЕ: ") (princ currentCommandName) (princ " command will break a path's associativity .") ) ;_ end of progn ) ;_ end of if Здесь производится проверка, не запустил ли пользователь команду, разрушающую ассоциативность между плитками и границей дорожки. Если это произошло, программа устанавливает глобальную переменную *lostAssociativity* и выдает пользователю предупреждение. Поэкспериментировав с приложением построения парковой дорожки, можно выявить дополнительные команды редактирования, способные внести изменения в нарисованную дорожку и привести к потере ассоциативности. Эти команды также следует занести в список, чтобы предупредить пользователя о последствиях их применения. Функция вызывается, когда пользователь запустил команду, но еще не выбрал объекты для изменения. В этот момент пользователь еще может прервать выполнение команды. Темы: Доработка функций отклика для объектных реакторов Разработка функции отклика gp:command-ended Обработка нескольких типов объектов Использование методов ActiveX в функциях отклика реакторов Обработка нелинейных последовательностей реакторов Написание функции command-ended Обновление функции gp:Calculate-and-Draw-Tiles Изменение других вызовов функции gp:Calculate-and-Draw-Tiles
|