Группы пользователей Autodesk


Расширение возможностей реакторов


Окончательная компоновка

 

Окончательная компоновка  

Расширение возможностей реакторов

На занятии 6 мы назначили функцию отклика gp:command-will-start реакторному событию :vlr-commandWillStart. На текущем этапе функция только выводит некоторые сообщения и присваивает двум глобальным переменным *polyToChange* и *reactorsToRemove* значение nil.

Для расширения возможностей функции отклика gp:command-will-start

  1. Откройте файл gpreact.lsp.
  2. Измените функцию gp:command-will-start, добавив к вызову функции setq две переменные, следующим образом:
  3. ;; Reset all four reactor globals to nil.

    (setq *lostAssociativity* nil

    *polyToChange* nil

    *reactorsToChange* nil

    *reactorsToRemove* nil)

  4. Замените оставшийся код функции gp:command-will-start, до последнего вызова функции princ, следующим кодом:
  5. (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

 




Начало  Назад  Вперед