29/03/2014
Изменение системных переменных DIMPOST и DIMAPOST в lisp
Вопрос: во время выполнения lisp я пробую изменить значение системной переменной DIMPOST в значение "\X". Программе не принимает передаваемое значение "\X". Кроме того, я хочу изменить засечки в размерном стиле, а установка значения "None" для первичных и альтернативных единиц эффекта не дает. Я могу сделать это вручную, но никак не в lisp.Ответ: Первая часть вопроса связана с тем, как в lisp передаются слеши и служебные символы.
Если в строке встречается символ "\", то следующий за ним должен быть из перечня служебных символов:
\n - перевод на новую строку
\b - звуковой сигнал
\t - знак табуляции
и т.п.
Поэтому, если в строку надо передать, например "\X", то следует в lisp использовать конструкцию вида "\\X" - т.е. сделать слеши двойными.
Т.е. для того, чтобы установить DIMPOST равным "\X", надо выполнить либо
Код - Auto/Visual LISP: [Выделить]
- (command-s "dimpost" "\\X")
- ;; либо
- (setvar "dimpost" "\\X")
Чтобы установить значение DIMPOST или DIMAPOST в пустую строку, придется использовать не ожидаемую конструкцию
Код - Auto/Visual LISP: [Выделить]
- (command-s "dimpost" "")
- ;; либо
- (setvar "dimpost" "")
а
Код - Auto/Visual LISP: [Выделить]
- (command-s "dimpost" ".")
- ;; либо
- (setvar "dimpost" ".")
Аналогичным образом дело обстоит и с dimapost:
Код - Auto/Visual LISP: [Выделить]
- (command-s "dimapost" ".")
- ;; либо
- (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