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

29/03/2014

Изменение системных переменных DIMPOST и DIMAPOST в lisp

Вопрос: во время выполнения lisp я пробую изменить значение системной переменной DIMPOST в значение "\X". Программе не принимает передаваемое значение "\X". Кроме того, я хочу изменить засечки в размерном стиле, а установка значения "None" для первичных и альтернативных единиц эффекта не дает. Я могу сделать это вручную, но никак не в lisp.
Ответ: Первая часть вопроса связана с тем, как в lisp передаются слеши и служебные символы.
Если в строке встречается символ "\", то следующий за ним должен быть из перечня служебных символов:
\n - перевод на новую строку
\b - звуковой сигнал
\t - знак табуляции
и т.п.
Поэтому, если в строку надо передать, например "\X", то следует в lisp использовать конструкцию вида "\\X" - т.е. сделать слеши двойными.
Т.е. для того, чтобы установить DIMPOST равным "\X", надо выполнить либо
Код - Auto/Visual LISP: [Выделить]
  1. (command-s "dimpost" "\\X")
  2. ;; либо
  3. (setvar "dimpost" "\\X")

Чтобы установить значение DIMPOST или DIMAPOST в пустую строку, придется использовать не ожидаемую конструкцию
Код - Auto/Visual LISP: [Выделить]
  1. (command-s "dimpost" "")
  2. ;; либо
  3. (setvar "dimpost" "")

а
Код - Auto/Visual LISP: [Выделить]
  1. (command-s "dimpost" ".")
  2. ;; либо
  3. (setvar "dimpost" ".")

Аналогичным образом дело обстоит и с dimapost:
Код - Auto/Visual LISP: [Выделить]
  1. (command-s "dimapost" ".")
  2. ;; либо
  3. (setvar "dimapost" ".")

Источник: http://adndevblog.typepad.com...using-dimpost-in-a-lisp-routine.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=643

Опубликовано 29.03.2014