|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
И из тех, и из этого лиспа:
Цитата:
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 16.01.2013
Сообщений: 11
|
Offtop: (По мотивам обнуления координаты z)
Написал для AUTOCAD LT 2009 Работает также и в AUTOCAD LT 2011 Корректно работает только для однострочных текстов -------------------------------------------------------------------------------------------------------------------------------------------- Кнопки на палитру находятся здесь http://dwg.ru/dnl/12625 Подробный разбор макроса смотрите здесь http://forum.dwg.ru/showpost.php?p=1...&postcount=672 Offtop: Добавил комментарий по просьбе АлексЮстасу Выравнивание однострочных текстов по X Указать точку выравнивания, выбрать только текстовые объекты (можно рамкой) Код:
Указать точку выравнивания, выбрать только текстовые объекты (можно рамкой) Код:
Последний раз редактировалось Stroit'el, 01.03.2014 в 23:53. Причина: правка оформления |
|||
|
||||
Stroit'el - круто!
Я не столько про действия макросов (действуют), сколько про неведомые мне возможности, в них использованные. Одни циклы меня серьезно впечатляют. Правда, мне в этих макросах мало что понятно. Можно их прокомментировать? Что в них что? Например, что такое "userr1", что такое "_id"? И т.д.
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 27.02.2014 в 03:06. |
||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Переменные ORTHOMODE и POLARMODE - не оно? Хоть напрямую прописывать имя переменной в макрос, хоть функцией setvar. Если нужно менять режимы во время выполнения команды, то название переменной в макросе предваряется апострофом. Надеюсь, правильно понял вопрос.
Добавлено: Пока писал ответ, вопрос уже исчез, получилось, будто я невпопад вообще что-то написал... Вопрос был в том, можно ли из макросов управлять режимами ОРТО и Отслеживания. Последний раз редактировалось skkkk, 27.02.2014 в 03:32. |
|||
|
||||
Пардон, я уже до этих переменных добрался - сразу не заметил их. И потому изменил свой вопрос.
Но про эти переменные и их применение тоже спасибо - ключевые моменты я не знал.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Offtop: Тем более удалить, что номер его - ужас, ужас, ужас
Все-таки не POLARMODE, а AUTOSNAP (+РЕЖИМРИС) == 8 отвечает за включение/отключение полярного отслеживания? Еще открытие для меня - этот плюс перед +РЕЖИМРИС! бывает и с плюсом?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
А POLARMODE==1 мне нужна для включения полярного отслеживания "от последнего сегмента".
Только вот привязки куда-то ичезли, хотя в настройках они включены! По умолчанию AUTOSNAP у меня был 39. Когда вместо своей AUTOSNAP==8 ставлю AUTOSNAP в 39, то привязки восстанавливаются. Т.е. как и установить и полярное отслеживание, и чтобы работали привязки одновременно?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
|
|||
|
||||
Да, похоже, дело в том, что значения AUTOSNAP не просто выставляются, а плюсуются. Если установил просто 8, то будет без привязок. А если взять текущее значение (у меня было 39) и прибавить 8 (т.е. будет 47), то одновременно будет и полярное, и привязка.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Регистрация: 20.03.2008
Сообщений: 2,653
|
Цитата:
Цитата:
Цитата:
|
|||
|
||||
Регистрация: 16.01.2013
Сообщений: 11
|
Цитата:
Сам макрос смотрите http://forum.dwg.ru/showpost.php?p=1...&postcount=662 Задача заключается в том, чтобы запомнить точку выравнивания, и затем по этой точке выровнять однострочные тексты, для этого используем переменную userr1. Идея выравнивания навеяна интересной макрокомандой обнуления координаты z. ------------------------------------------------------------------------------------------------------------------------------------------------------------------ userr1; - пользовательская переменная, ; - здесь, - подтверждение в ответ на запрос команды 0; ввод числа 0 - обнуление userr1, ; - здесь, - заканчивает работу команды _id; ввод команды id - получение координаты точки с чертежа, ; - здесь, - подтверждение ввода (аналог нажатия ENTER). \userr1; - после указания точки на чертеже присваиваем новое значение переменной userr1, которое получим с помощью координатного фильтра калькулятора командной строки, \ - ввод. Далее, userr1 - вызов команды присвоения значения переменной, ; - переход к получению значения (аналог нажатия ENTER). 'cal;rxof(@);\;; - 'cal - прозрачный вызов калькулятора командной строки, rxof - фильтр по координате х, @ - координаты последней точки, которые хранятся в памяти программы AUTOCAD, точка эта была указана вначале работы макроса (использовалась команда _id). _select;$M=$(if,$(getvar,cmdactive),\,) - выбор текстов в любом порядке, с учетом активности команды select (используется переменная cmdactive в выражении Дизель). Посмотрите примечание по этому поводу. _move;_pr;;1e99,0,0;;;_pr;;-1e99,0,0;;;_pr;; - перемещаем тексты по координате x в бесконечность (1e99) и затем возвращаем обратно (-1e99) по координате х в точку 0, здесь: _pr - предыдущий набор выбора. Команда перемещения снова вызывается по ";" (соответствует нажатию ENTER). Разделитель для ввода значений координат - запятая. 'cal;xof([$m=$(getvar,userr1),0,0]);; - перемещение текстов из точки 0 в точку, которая была указана (точка выравнивания), обратите внимание на квадратные скобки для ввода координат ------------------------------------------------------------------------------------------------------------------------------------------------------------------ PS. $m=$(getvar,userr1) - выражение на языке ДИЗЕЛЬ (в autocade LT есть очень удобный язык программирования ДИЗЕЛЬ и великолепный язык макрокоманд, спасибо разработчикам за то, что это у нас есть...) http://exchange.autodesk.com/autocad...30d6b-7b3c.htm \ - ввод в ответ на запрос команды, использование которого очень интересно тем, что, например, позволяет ввести какую-либо другую команду и затем указать объекты, таким образом возможно осуществлять комбинацию различных команд _ нижнее подчеркивание позволяет использовать англоязычные команды в локализованных версиях AUTOCAD (не используется для переменных). Есть замечательная книга Владимира Света "Язык макрокоманд и создание кнопок" http://dwg.ru/dnl/3480. *Примечание Ограничение использования данного макроса для всех объектов, кроме текстов, заключается в том, что макрос "плющит" такие объекты, например, отрезки становятся нулевой длины, поэтому рекомендуется использовать данный макрос только для текстов. Второй макрос работает аналогично. Спасибо за проявленный Вами интерес. Спасибо дорогому ФОРУМУ dwg.ru. Последний раз редактировалось Stroit'el, 02.03.2014 в 00:43. |
|||
|
||||
Можно ли в макросе запомнить текущее состояние параметров черчения (цвет, слой, вес, тип линий, ширину, масштаб типа линий), а также значение параметров черчения (AUTOSNAP), а после выполнения каких-то действий восстановить их?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,843
|
В макросе - нет (ну или использовать USER*-переменные. А там наверняка возникнет проблема с обратным восстановлением значений).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Если нельзя или не стоит командами, то, значит, программно?
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 04.03.2014 в 16:51. |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,843
|
Переменных USER* не так уж и много - 5 целых, 5 строковых и 5 действительных. При этом некоторые хранятся в чертеже, некоторые - нет.
Теперь смотри: слой (clayer) - строковое значение, хранить в USERS# цвет (cecolor) - опять строковое. Опять USERS# вес (celweight) - целое, с возможностью отрицательных. USERI# тип (celtype) - строка, USERS# масштаб типа линии (celtscale или ltscale) - двойной точности, USERR# Пока системных переменных немного, все хорошо, можно запомнить, где что лежит и как называется. А теперь добавь сюда, например, osmode (целое), autosnap (целое), - и очень быстро ты упрешься в то, что переменные USER* кончились ----- добавлено через ~3 мин. ----- Придется (по идее) либо писать лиспы, либо еще каким-то образом извращаться (и я даже догадываюсь каким )
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
Если для совсем-совсем-совсем тупых - как, например, переменной USERS1 присвоить значение clayer в макросе? Пишу, допустим: ^C^CUSERS1;CLAYER; - присваивает не значение CLAYER, а строку "CLAYER". Или (собезьянничал): ^C^C(setvar "USERS1" CLAYER) - ругается: ошибка: Настройка переменной AutoCAD отвергнута: "USERS1" nil. Или (тоже собезьянничал): ^C^C(setq USERS1 (getvar "CLAYER")) - не ругается, но и не присваивает ничего. Или (еще собезьянничал): ^C^C$USERS1=$(getvar,CLAYER) - тоже не ругается, и ничего не присваивает.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,843
|
Пишу без када, поэтому критика не принимается
^C^Cusers1;$(getvar,clayer); ^C^C(setvar "users1" (getvar "clayer")); P.S. Поищи функцию универсального обработчика ошибок (уж поминали такие вещи миллион раз)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Цитата:
тоже присваивает почему-то "0". Активный слой совсем-совсем не "0".
__________________
количество моих сообщений не говорит о знании Автокада |
||||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Мои динамические блоки | Shoorup | Динамические блоки | 2713 | 21.04.2011 23:34 |
Повторение выполнения макрокоманды по циклу. КАК? | Kostinok | AutoCAD | 12 | 05.12.2007 15:40 |
Мои проекты | Vova | Разное | 10 | 08.10.2007 23:18 |
Мои палитры инструментов на соседний компьютер | Pave1 | AutoCAD | 4 | 27.06.2006 09:45 |