04 января, 2014

Объявление переменных.

В предыдущей статье "Как явное сделать скрытым и наоборот"  я не до конца раскрыл тему объявления переменных в методе ActHeader.
Итак, по порядку. В секции Public объявляются переменные доступ, к которым должен быть извне:
  • из свойств AutoCAD;
  • из универсального маркера;
  • из таблиц СПДС;
  • из других объектов СПДС (параметрические или геометрические зависимости)
Это четыре основания для объявления переменных как Public. Если не подходит ни под одно из этих условий, то объявлять, как Public не надо. Это однозначно будет мусор, который увеличивает размер файла AutoCAD и замедляет работу программы.
Что бы не засорять панель свойств AutoCAD лишней информацией, то скрываем параметр, как было описано встатье; "Как явное сделать скрытым и наоборот".
В секции Changeable объявляем только те переменные, которые необходимо изменять вручную из окна свойств AutoCAD, естественно они должны быть Public, обработку изменения этих переменных проводим в методе OnChangeParameters. Больше никакие параметры сюда вносить не надо.
В принципе переменную можно не объявлять вообще, но в этом случае она сохраняет свое значение только на время действия сеанса скрипта, и при новом вызове какого либо метода скрипта параметрического объекта значение переменной будет неопределённо. Можно каждый раз присваивать переменной новое значение, но в случае если необходимо сохранить значение переменной и при этом она нужна только внутри скрипта, например: значения радиокнопок, чекбоксов и т.п., вот в этом случае объявляем переменную, как Protected.
Табличные параметры в случае, если нет необходимости во взаимодействии с другими объектами СПДС, таблицами или показывать их в свойствах AutoCAD, объявлять не требуется они и без этого прекрасно сохраняются.

8 комментариев :

  1. Насколько я понимаю, есть еще одно основание объявить параметр публичным - если он изменяется при помощи "ручек".
    К примеру объект болт, есть ручка изменяющая длину болта - в этом случае, параметр длины должен быть публичным.

    ОтветитьУдалить
    Ответы
    1. нет, для ручек публичным не надо объявлять, работать и так будет

      Удалить
    2. вот почему-то у меня не работает, хотя очень хочется уменьшить количество публичных переменных )

      Удалить
    3. я не экстрасенс, что не работает?, код в студию...

      Удалить
    4. https://drive.google.com/file/d/0B8-oPxxcEFR1REx4RzVMUmtKUm8/edit?usp=sharing
      Вот смотрите, есть ручка изменяющая положение выносной линии, за координаты этой ручки отвечают параметры a и b,
      ручка работает только если а и b - публичные параметры, иначе ручка не работает...

      Удалить
    5. если не публичные то то же работает, просто отрисовка происходит после изменения параметра.
      Графику объекта прописывали ручками, где-то в коде косяк

      Удалить
    6. пропишите в трубе СПДС, параметр L как Proteсted, все будет работать, единственное длина пропадет из видимых свойств объекта

      Удалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить