Autocad макрос не повторяется при нажатии enter
Когда об AutoCAD говорят как о «САПР», мне всегда хочется внести уточнение: «голый» AutoCAD это еще не САПР (система автоматизированного проектирования), а универсальная платформа (можно даже сказать «заготовка») для создания САПР под свои нужды. Ведь именно автоматизации в свежеустановленной программе как раз и нет, но зато есть колоссальные возможности по ее внедрению!
И большинство пользователей рано или поздно начинают потихоньку упрощать себе жизнь: создают свои шаблоны, осваивают поля, динамические блоки, наполняют ими палитры, запоминают псевдонимы команд и т.д. Это, можно сказать, «начальный уровень» автоматизации. По другую сторону лежит программирование в чистом виде: код в AutoCAD можно писать на встроенном LISP или VBA, или же вообще создавать внешние плагины и расширения (add-ons) под свои узкоспециализированные нужды. Возможности тут открываются поистине фантастические, но разобраться в этом уже сложнее, все-таки, программирование — это отдельная профессия. И туда мы (пока что) не полезем.
Кстати, стоит отметить, что писать код с нуля нужно далеко не всегда — в сети есть огромное количество различных LISP-ов и аддонов (как платных, так и бесплатных) для решения практически любых задач, главное, хорошо поискать.
[Собственно, о макросах]
Но если до программирования вы пока не доросли, а автоматизировать свою рутину ну очень хочется, советую обратить внимание на макросы. Чтобы не было путаницы, уточним, речь в статье пойдет о макросах (макрокомандах), набранных пользователем в текстовом виде.
Просто еще в программе есть возможность записывать действия пользователя через рекордер операций, и это тоже будет называться «макросом». Но о рекордере операций мы (может быть) напишем отдельную статью, а еще есть «сценарии» и это отдельная тема. В общем, писать и писать мне. =)
Под макросом мы будем понимать последовательность действий с использованием стандартных команд AutoCAD, которую программа будет выполнять по нажатию всего одной кнопки. Например, создание в документе нового слоя с конкретными параметрами или построение прямоугольника с заданными размерами. Эти примеры довольно простые, но зато понятные каждому. В целом же, возможности макросов довольно велики, но мы будем двигаться постепенно.
Перед тем как записать макрос, нужно понять где же мы его разместим? — Речь о той самой кнопке, по нажатию на которую и будет происходить вся магия. Вариантов тут несколько. Я предлагаю рассмотреть два самых популярных — кнопка на панели быстрого доступа и кнопка на палитре. В общем-то именно созданию кнопок и посвящен данный материал. Это вводная статья небольшого цикла о макросах. А учиться писать сами макросы мы будем уже во второй части.
Правая кнопка мыши
При определенных настройках щелчок правой кнопки мыши в режиме ожидания приведет к повторению предыдущей команды. Как настроить такое поведение мы уже рассматривали в посте Использование мыши при работе в AutoCAD
[Собственно, о макросах]
Но если до программирования вы пока не доросли, а автоматизировать свою рутину ну очень хочется, советую обратить внимание на макросы. Чтобы не было путаницы, уточним, речь в статье пойдет о макросах (макрокомандах), набранных пользователем в текстовом виде.
Просто еще в программе есть возможность записывать действия пользователя через рекордер операций, и это тоже будет называться «макросом». Но о рекордере операций мы (может быть) напишем отдельную статью, а еще есть «сценарии» и это отдельная тема. В общем, писать и писать мне. =)
Под макросом мы будем понимать последовательность действий с использованием стандартных команд AutoCAD, которую программа будет выполнять по нажатию всего одной кнопки. Например, создание в документе нового слоя с конкретными параметрами или построение прямоугольника с заданными размерами. Эти примеры довольно простые, но зато понятные каждому. В целом же, возможности макросов довольно велики, но мы будем двигаться постепенно.
Перед тем как записать макрос, нужно понять где же мы его разместим? — Речь о той самой кнопке, по нажатию на которую и будет происходить вся магия. Вариантов тут несколько. Я предлагаю рассмотреть два самых популярных — кнопка на панели быстрого доступа и кнопка на палитре. В общем-то именно созданию кнопок и посвящен данный материал. Это вводная статья небольшого цикла о макросах. А учиться писать сами макросы мы будем уже во второй части.
[Горизонтальная и вертикальная прямая]
Ну и под конец, совсем простенький макрос для быстрого рисования прямых — горизонтальной и вертикальной. Команда _xline (ПРЯМАЯ) обычно запрашивает первую точку, после чего проводит через эту точку бесконечную прямую, которая будет вращаться до тех пор, пока не указана вторая точка. Кнопка вызова данной команды находится здесь:
Я использую прямые для быстрой проверки проекционной связи видов (смотрю, чтобы вид не выходил за допустимые границы), либо в качестве осей. В общем, у меня они всегда либо горизонтальные, либо вертикальные, а указывать каждый раз две точки долго. Поэтому для удобства я создал на палитре две кнопки, на которые повесил соответствующие макросы:
^C^C_xline;_h;
^C^C_xline;_v;
Макрос с ключом _h запускает отрисовку горизонтальной прямой, а макрос с ключом _v — вертикальной. Русский вариант макроса будет таким:
^C^Cпрямая;г;
^C^Cпрямая;в;
Кстати, вот так выглядит моя основная рабочая палитра:
На ней размещены макросы, динамические блоки и кнопки запуска LISP-приложений. Все «авторские» иконки — это .jpg изображения размером 64×64 пикселя (их можно нарисовать в Paint или в Фотошопе).
Пожалуй, это все, что я хотел рассказать про макрокоманды в AutoCAD! Надеюсь, что проработав материал данного цикла статей, вы научились писать макросы под свои нужды. Сложного в этом ничего нет, требуется лишь терпение, внимательность и понимание основных принципов, которые я (хочется верить) изложил довольно подробно.
P.S. Как обычно, распространение ссылки на данный материал очень приветствуется. Буду очень рад вашим комментариям!
Команда МНОГОРАЗ (_MULTIPLE)
Если ввести в командной строке МНОГОРАЗ , например МНОГОРАЗ КРУГ, то система после завершения отрисовки круга не выйдет из команды в режим ожидания ,а автоматически запустит повторное ее выполнение.
[Чему мы научились]
Мы познакомились с понятием макрокоманды, рассмотрели два способа создания пользовательских кнопок, и теперь полностью готовы к написанию своих макросов. О том, как это делается, читайте в следующей статье. В ней мы разбираем синтаксис макросов и рассматриваем несколько конкретных примеров. Главное, что теперь мы знаем куда помещать эти макросы.
Одна из уникальных особенностей системы AutoCAD заключается в неограниченных возможностях по настройке интерфейса и рабочей среды. Макросы, назначаемые на кнопки — это простой и эффективный способ автоматизации, способный значительно облегчить жизнь проектировщика и избавить его от рутины.
Предлагаю научиться создавать макросы, при этом не сильно вникая в их структуру и синтаксис.
Задача — сделать собственную панель инструментов, на панель поместить кнопки и назначить кнопкам макросы. На самом деле все это делается достаточно просто и быстро, давайте попробуем.
- Запускаем команду настройки пользовательского интерфейса НПИ (_CUI) на ленте Управление
- В левой верхней части окна адаптации ищем дерево Панели и щелкаем правой кнопкой, выбираем команду Новая панель инструментов
- Вводим имя панели, например Моя панель. Панель появляется в списке доступных панелей.
- Создаем новую команду, для этого в списке команд на любой из существующих нажимаем правой кнопкой и выбираем Новая команда
- Задаем имя команде, например Создать слой
- В правой части экрана настраиваем созданную команду. Выбираем значок для кнопки — либо из существующих, либо загружаем из внешнего файла BMP или PNG
- Назначаем макрос на кнопку в строке Макросы. Для примера пишем строку
^C^C-слой;создать;Стены;цвет;Красный;;;
Данный макрос создает в файле новый слой с именем Стены и назначает ему красный цвет
- Выходим из окна адаптации и видим появившуюся панель на рабочем пространстве (если панель не появилась, то воспользуйтесь командой -ПАНЕЛЬ для её отображения). Тестируем созданную кнопку — при нажатии в чертеже должен создаться слой.
- Аналогичным способом можно добавить сколько угодно панелей и кнопок
Какие еще макросы можно создать. Несколько примеров:
- Создание отрезка с одновременным созданием нового слоя
^C^C-слой;создать;Трубы;цвет;синий;;;отрезок;endpoint;
Макрос создает новый слой Трубы, назначает ему синий цвет и запускает команду создания отрезка на этом слое
^C^C_-вставить;рамка.dwg;
Макрос позволяет вставить в чертеж блок из файла с именем рамка.dwg. Файл должен лежать в текущей папке, иначе в макрос нужно написать абсолютный путь к файлу
Форумы CADUser → Autodesk → AutoCAD → Как написать макрос на кнопку чтобы он полностью повторялся с Enter?
Тема: Как написать макрос на кнопку чтобы он полностью повторялся с Enter?
Есть такой скрипт на кнопке ^C^C-layer;_s;размеры ; ;_dimdiameter;\\\_LayerP ^M; А как его переделать чтобы он полностью повторялся с Enter? а не только последняя его команда. Я точно знаю что это можно сделать, но знаниёв не хватат.
Перед макросом поставить * (см. В.Свет, "Язык макрокоманд"
> alex
Как вариант - можно определить функцию автолиспа, которая вызывает этот макрос полностью.
Например, нужно повторить по ENTER команду LINE и команду COPY:
^C^C(defun c:QQQ() (command "LINE" PAUSE PAUSE "")(command "COPY" "L""")) QQQ
Это всё конечно здорово, но как сделать это именно для этого скрипта через ^C^C(defun c:QQQ(). Причем что инетересно, у меня этот скрипт ^C^C-layer;_s;размеры ; ;_dimdiameter;\\\_layerp; не работает до конца правильно, т.е не возвращает в предыдущий слой, то же самое и для _dimradius. Хотя для команд _dimaligned, _dimlinear все работает. Acad2002rus без довесок WinXP_SP2
Спасибо kpblc, интересно получается, но это не совсем то что нужно.
Присоединяюсь!
Полное название книги:
Владимир Свет "AutoCAD. Язык макрокоманд и создание кнопок" - СПб.: БХВ-Петербург, 2004г
2/администратор/ Какие мы строгие 8). Может и Розика переместите?
Если у вас версия выше 14, то надо установить меню на правой кнопке (Options-User Preferences-Right click customization где поставить по крайней мере одну птичку в верхней части.) Это очень полезное контекстное меню, надо попривыкнуть. Через него повторяется весь макрос. В 2004 и вооще можно регулировать появление меню длительностью правого клика
2Vova. Привычка вторая натура, даже если она вредная и неправильная. На правой кнопке оно есть, но чтобы его использовать нужно чтобы душа лежала.
В автокаде не должно быть привычек. Все время появляется новенькое. Нежелание использовать это контекстное меню возвращает вас в автокад 14. При использовании макросов придется для повтора команды вторично жать на кнопку. Преимуществ у меню значительно больше, чем недостатков. Привыкныть к меню можно за один день.
2Vova. В том то и дело что и при использовании макросов эту проблемму можно решить, т.е не лазить за кнопкой каждый раз. Но что-то большие и умные собратья в этот раз не захотели помочь, может это и правильно. Эх придется книгу покупать. А по поводу контекстного меню, это тоже хорошо и все работает, но для сравнения: либо 1 раз свободной рукой, лежащей на numpad, нажать на enter (я левша), либо постоянно занятой рукой делать 2 клика и не факт что второй клик попадет куда надо. Каждому решать для себя.
> alex
Так тогда не мучайся, напиши лисп вида :
И повесь на кнопку вызов вида
Код не проверял на работоспособность, так что строго прошу не судить. По Enter'y будет вызываться команда alex-layeroper, внутри которой и будет выполняться все что душе угодно :)
2kpblk. Круто! Это мой первый лисп! Диаметр ставит, но больше ничего не делает, ни переключает в слой ни возвращает обратно и "Размеры" воспринимает как команду, да еще надо после постановки диаметра жать на пимпу чтобы увидеть это радостное nil. А так здорово!
> alex
Вот Вам второй ЛИСП на кнопку:))))
^C^C(defun c:QQQ() (command "_-layer" "s" "Размеры" "")(command "_dimdiameter" PAUSE PAUSE)(command "_layerP")) QQQ
Обратите внимание на название слоя, если такого слоя не существует в чертеже, или он назван большими буквами - тогда макрос не сработает.
ИМХО: Про контекстное меню - не согласен. Польза в нем только ознакомительная, а времени отнимает очень много. Вы выбрали верный путь - меньше движений, больше скорость.
> alex
Мой тоже :) Серьезно. Сейчас проверю одну идею и напишу :)
Все, должно работать. Единственное НО: слой "размеры" если есть, то активируется, если нет - создается. Настройки слоя надо проводить отдельно (типа цвет, толщина и т.п.). Размерный стиль - по дефолту.
Только что проверил, вроде работает
Если надо делать не диаметр, то соответственно строку (command "_.Dimdiameter" pause pause) надо будет заменить, например, на (command "_.Dimlinear" pause pause pause)
> >kpblc
Если ты взялся использовать в макросе ЛИСП, то при создании нового слоя или назначении слоя текущим следует проверить существует ли он, не заморожен или отключен ли. В общем по полной программе определения слоя.
> Alan
Человек просил помочь - ему и помогают, кто чем может.
А причем тут взялся за ЛИСП - не взялся .
Вот, дополните макрос подобной проверкой, тогда это будет конструктивно.
Спасибо всем! Денису и kpblc, все работает.
Что использовать даже и не знаю. Хотя после очередной переустановки acada способ Дениса смотрится более приемлемым, всмысле папку support сохранять.
Alex> Впечатление такое, что этот макрос ты не сам разработал, а тебе его подарили. Потому что если-бы сам, и при этом достиг такой сложности, то у тебя было бы их уже много, и все они без контекстного меню бы не повторялись. Представь, на каждый макрос просить помощи у программистов. Ты как будто книгу собрался покупать. Значит у тебя скоро будет много макросов. Так что ставь меню. Почему-то никто не заостряет вопрос, что меню полезно и без макросов, несмотря на некоторое сразу видимое замедление, оно в общем ускоряет работу
В автокаде не должно быть привычек.
А разве использование контекстного меню - это не привычка . :)))))
Контекстное меню полезно также, как активный хелп. Но это только на период изучения новых возможностей, ну. или при отсутствии необходимости их изучать.
В детстве многие начинают с четырехколесного велосипеда, а потом дополнительные колесики снимают и оставляют только два. Даже не взирая на то, что четыре колеса удобнее.
А вообще-то злой администратор наверное порежет эту запись, ведь тема была :
"Как написать макрос. ", а не "Как использовать контекстное меню. "
Во блин разошлись, у меня тут еще два вопросика, теперь даже боюсь задавать.
А разве использование контекстного меню - это не привычка .
Тема меню на правой кнопке неотемлима от темы повтора макросов, поэтому ее не режут, я думаю.
Меню на правой кнопке это временная привычка, просуществовавшая 2 версии. В 2004 она сменилась на другую привычку-регулировать появление меню длительностью правого клика. Позволь спросить, как ты вызываешь следующие команды:
Copybase, Pasteblock, Pasteorig, Qselect или такая важная как Properties? Шатишь мышью по кнопкам, которые загромождают экран? или идешь неторопясь в падающее меню? Или, будучи продвинутым, сделал алиасы и горячие клавиши и теперь разминаешь левую руку? А я мгновенно достаю указанные команды из контекстного меню. Если применяется Copybase, например, то левая рука жмет Ctrl+Tab а правая уже в другом файле вызвала из того-жр контекстного меню Pasteblock. Удивлен, что никто не сказал слова в защиту этого меню. Стагнация у вас наблюдается. Так что это не привычка, а залог быстрой работы
Тему читают: 1 гость
Форумы CADUser → Autodesk → AutoCAD → Как написать макрос на кнопку чтобы он полностью повторялся с Enter?
При работе в AutoCAD постоянно требуется создать несколько объектов одного типа или выполнить подряд несколько одинаковых операций — нарисовать несколько окружностей, переместить несколько компонентов, нарисовать несколько выносок или размеров и пр. При этом известно, что после завершения выполнения операции система выходит из команды и необходимо ее снова запускать.
Неудобно! Но всегда есть способы автоматизировать роботу. Сегодня мы рассмотрим способы автоматического повтора команд в AutoCAD.
[Выноска с фиксированным содержимым]
Если вам довольно часто приходится расставлять выноски с одинаковым содержимым (например, подписывать оборудование или какие-то повторяющиеся объекты на чертежах), обратите внимание на данный макрос. Пользователю нужно будет указать только местоположение стрелки и местоположение начала текста, а содержимое выноски задано в самом теле макроса:
*^C^C_mleader;\\Ваш текст;
*^C^Cмвыноска;\\Ваш текст;
Сначала мы вызвали команду, после чего идут два пользовательских ввода — первый для указания положения стрелки и второй для указания положения текста, а далее написан сам текст. Как обычно — вы сами вольны выбирать какой из вариантов из вариантов использовать: русско- или англо- язычный. Вместо Ваш текст можно поместить любое нужное слово или фразу. Можно создать любое количество таких макросов с разным содержимым в виде кнопок на палитре. У меня таких сделано 6.
Обратите внимание на звездочку * в начале кода — ее наличие заставляется макрос работать в цикле, то есть повторяться до тех пор, пока пользователь не нажмет Esc. Выглядит это вот так:
Если циклическое воспроизведение не требуется, просто сотрите звездочку * в начале. Внешний вид выноски будет определяться текущим стилем мультивыносок и текущим слоем.
Подробности для энтузиастов:
Слой созданной выноски можно было бы задать в свойствах инструмента палитры. Но тут в Автокаде обнаружилась недоработка: если макрос работает в цикле, то первый объект будет создаваться в слое, указанном в свойствах инструмента палитры, а вот последующие уже в текущем слое, что довольно странно и неудобно. Возможно, такой баг есть именно в моей версии и в будущем его исправят. При желании, обойти это можно немного усложнив наш макрос. Для этого используем команду _change (ИЗМЕНИТЬ), и с ее помощью будем изменять слой последнего созданного объекта (это как раз наша выноска) на нужный. В примере целевой слой — это Примечание. Вот что получилось:
*^C^C_mleader;\\Ваш текст;_change;_l;;_p;_la;Примечание;;
Вне зависимости от того, какой слой выбран текущим, выноска сразу после создания будет перенесена в слой Примечание. Разберемся как это работает:
- сначала создается выноска (она создается в текущем слое)
- вызываем команду Изменить _change;
- команда запрашивает объекты для изменения, мы указываем ключ _l; (от слова last — «последний») — будет выбран последний созданный объект и завершаем запрос выбора еще одной точкой с запятой ;
- дальше мы указываем, что хотим работать со свойствами объекта - ключ _p; (от слова properties — «свойства»)
- изменить нужно слой - ключ _la; (от layer — «слой»)
- указываем имя нужного слоя и подтверждаем его Примечание; (для корректной работы макроса, указанный слой должен существовать в вашем чертеже)
- ставим еще одну точку с запятой, чтобы завершить работу команды ;
Русский вариант я писать не буду. Если хотите, попробуйте сделать это самостоятельно. Запустите команду Изменить и внимательно отвечайте на запросы, записывая в блокноте нужные ключи команд и ответы — так пишется любой макрос.
Единственное, что у меня так и не получилось сделать, это поместить в такой макрос двухстрочный текст для выноски. Если у вас такое получится, дайте знать, как вы этого добились? Управляющие коды \p или \n (которые работают в Мтексте) здесь просто прерывают макрос. Для себя я подобную задачу решил через LISP.
[Текст вперед - штриховки назад]
Обычно этот способ применяют для одиночных объектов — например, если нужно перенести на передний план Маскировку.
Но если объектов сотни, то вручную оправлять все штриховки на задний план, а тексты на передний — дело хлопотное. Более опытные пользователи используют для этой цели Быстрый выбор, но есть более удобный способ: разработчики позаботились о нас и добавили 2 специальные команды! Итак, встречайте:
_TEXTTOFRONT (ТЕКСТПЕРПЛАН) — команда позволяет перенести на передний план объекты определенного типа (тексты, размеры или выноски), либо вообще все текстовые объекты, о чем выводится соответствующий запрос:
Обратите внимание, что опция расположена в треугольных скобках — это значит, что она является значением по умолчанию. Поэтому в макросе ключ с нам не пригодится, мы просто добавим еще одну ; (ввод) после вызова команды. Получится _texttofront;;
_HATCHTOBACK (русского аналога я не нашел) — команда переносит все штриховки в документе на задний план. Опций у данной команды нет.
Из этих команд можно «состряпать» замечательный макрос:
^C^C_hatchtoback;_texttofront;;_regenall
Обычно я запускаю его по завершении работы над проектом. Регенерация в конце добавлена на всякий случай. В командной строке выводится отчет о работе макроса (если он вам не нужен, добавьте в начало макроса ключ ^Q):
Напомню, что порядок прорисовки никак не связан со списком слоев — слои автоматически сортируются в алфавитном порядке.
Изменение файла адаптации CUI
Звучит страшно, но очень полезно и удобно. Данный метод позволяет в описание команды добавить автоматический повтор, в таком случае при каждом ее запуске не будет необходимости прибегать к вышеописанным способам. Рассмотрим на примере AutoCAD 2014.
- На ленте Управление нажимаем Пользовательский интерфейс
- В области Адаптации: Все файлы выбираем Лента -> Вкладки -> Главная 2D -> Главная 2D — рисование
- В правой части окна в области Просмотр панели щелкаем на команду Круг
- Возвращаемся обратно в левую часть окна и выбираем Круг -> Центр, радиус
- Переходим на панель Свойства и в строке Макросы перед записью ^C^C_circle добавляем символ * так, чтобы получилось *^C^C_circle. Нажимаем Ок и пробуем запустить команду Круг с ленты
Если у вас более младшая версия AutoCAD или вы пользуетесь классическим представлением, то вы можете изменить макрос команды для панели. Для этого при настройке файла адаптации выберите Панели -> Рисование -> Круг.
Надеюсь, вы уже ознакомились с первой и второй частями моего рассказа о макросах в AutoCAD (если нет, то лучше сделать это перед прочтением данной статьи). Мы научились создавать свои кнопки и понимать синтаксис макрокоманд. В заключительной третьей части я приведу еще несколько примеров макросов, которые часто использую в своей работе. С одной стороны, эти примеры полезны сами по себе, а с другой — мы еще раз потренируемся, чтобы вы лучше усвоили тему. Поехали!
[Создаем кнопку. Способ первый: кнопка на панели быстрого доступа]
Справа на панели быстрого доступа есть маленькая стрелка, нажмем на нее и выберем в выпадающем списке пункт Другие команды:
Другой способ сделать тоже самое, это перейти в ленте на вкладку Управление и нажать на кнопку Пользовательский интерфейс:
В любом случае откроется подобное окно:
Не забудьте нажать на стрелку внизу справа, чтобы оно приобрело более полный вид. Слева мы видим список всех команд. Когда видишь его в первый раз, приходит осознание, что команд в программе намного больше, чем выведено кнопок на панелях. Над списком расположена строка поиска, которая помогает не потеряться. Если поставить курсор на конкретную команду, мы увидим более подробную информацию о ней:
Если внимательно все рассмотреть, становиться понятно, что любая кнопка в ленте это просто ярлычок для соответствующего макроса. Теоретически, можно даже переопределить работу штатных кнопок. Но мы этого делать не будем. А создадим свою команду.
Для этого, нажмем на «звезду с солнышком», заполним поле имя команды и поле макроса. В качестве «теста», сделаем макрос, который запускает команду _audit (ПРОВЕРИТЬ) и сразу исправляет системные ошибки в документе. Название команде можете дать любое, а код макроса будет следующий:
^C^C_audit;_y;
Лучше скопировать его прямо отсюда. Во второй части мы подробно разберем данную строку и вам станет понятно, что именно там записано.
Также, можно сделать какую-то красивую (или не очень) иконку для нашей команды. За основу возьмите любую существующую иконку, затем нажмите Изменить. Откроется довольно примитивный редактор, в котором можно дорисовать что-то к выбранному изображению, или же очистить все и создать свой шедевр с нуля. Не забудьте его сохранить (вас спросят про имя файла, задайте любое). А затем закройте редактор. Картинка в помощь:
Наша команда готова, теперь находим ее в левой части окна адаптации и с зажатой левой клавишей мыши тащим ее на панель быстрого доступа:
Будьте внимательны, после этого в окне адаптации обязательно нужно нажать Ок или Применить. Если просто закрыть окно, изменения не сохранятся!
Кстати, так можно вытащить на панель абсолютно любую команду, которая изначально отсутствует на ленте. Например, здесь мы вытаскивали кнопку регенерации. В ролике по ссылке можно увидеть весь процесс вытаскивания кнопки (начиная с 1:42 по таймкоду). Посмотрите его, если данная статья вызывает затруднения.
Все, кнопка готова, можно пользоваться.
Для пробы откройте какой-нибудь старый (а лучше очень старый) dwg файл и проверьте его на ошибки. Их может 0, а может быть очень много — отчет будет выведен в командной строке.
От штатной команды наш макрос отличается тем, что сразу исправляет ошибки, без дополнительных запросов и действий со стороны пользователя. Советую регулярно выполнять данную команду — она поддерживает «здоровье» вашего файла и по моим наблюдениям снижает количество «глюков», «вылетов» и зависаний программы. Ошибки в процессе работы появляются сами по себе, обычно в процессе копирования больших объемов данных через буфер обмена. Отмечу, что речь идет именно о внутренних системных ошибках файла, а не об ошибках в том, что вы нарисовали =)
Нажатие клавиши Ввод (Enter) или Пробел (Space)
Самый известный, простой и частопользуемый способ. Если в режиме ожидания нажать клавиши Ввод или Пробел, то запустится предыдущая команда
[Создаем кнопку. Способ второй: кнопка на палитре]
Инструментальные палитры используются для организации пользовательских панелей инструментов: на них можно размещать блоки, таблицы, выносить стандартные инструменты с дополнительными свойствами, создавать кнопки для вызова LISP приложений и макросов (это-то нам и нужно) и т.д. Вообще, палитры — очень обширная тема, заслуживающая отдельной статьи. Здесь же мы пройдемся по самым «верхам». Итак, открываются палитры сочетанием клавиш CTRL+3
Стандартные палитры нам не особо интересны, поэтому сразу создадим свою. Для этого щелкнем правой кнопкой мыши на левом «корешке» палитры и выберем пункт Создать палитру
Сразу зададим ей имя (например, «Моя первая палитра»).
По-хорошему, надо бы создать для нашей палитры свою группу и поместить ее туда, чтобы можно было скрыть остальные (стандартные) палитры, но в данном случае это необязательно. Если у меня дойдут руки до написания отельной статьи про палитры, там я расскажу об этом.
Теперь нужно добавить на палитру красок, т.е кнопок, на которых мы сможем размещать наши макросы. Для этого снова зайдем в адаптацию команд (как мы делали в начале статьи), но для разнообразия сделаем это другим (уже третьим по счету) способом. Нажмем правой кнопкой мыши в пустом месте нашей палитры, и выберем пункт Адаптация команд:
Откроется уже знакомое нам окно. В нем берем абсолютно любую команду, и удерживая левую кнопку мыши перетаскиваем ее на палитру, после чего отпускам кнопку, закрываем окно адаптации.
На палитру можно поместить любую команду, а потом «переделать» ее до неузнаваемости под собственные нужды. Нам просто была нужна донорская кнопка. Нажмем на ней правой кнопкой мыши и выберем пункт Свойства объекта:
В открывшемся окне изменим название команды, описание (это по желанию) и главное, вставим наш макрос ^C^C_audit;_y; в поле Командная строка:
Нажимаем Ок, и макросом можно пользоваться! Для удобства можно нажать правой кнопкой на картинку инструмента и выбрать другое изображение. Я заранее нарисовал в графическом редакторе .jpg картинку размером 64×64 пикселя с крестиком. Но можно поставить туда все что угодно, хоть свое фото.
Самое классное в способе с палитрами, это возможность копировать/вставлять инструменты через контекстное меню. Останется лишь изменить название инструмента, текст макроса и изображение
Это способ позволяет очень быстро создавать свои кнопки, формируя из них целые панели со своими инструментами. Например так выглядит одна из моих палитр с LISP приложениями (название инструментов можно скрывать, оставляя только картинки):
Командная строка
Если в режиме ожидания нажимать на клавиатуре кнопки со стрелками вверх и вниз, то можно пролистать последовательно список предыдущих команд. Выбрав нужную команду просто нажимаем Enter — команда запустится. Также, в AutoCAD начиная с 2013 версии в командной строке есть кнопка Последние команды, нажав которую можно вызвать одноименный список
Контекстное меню
Если в режиме ожидания щелкнуть правой кнопкой мыши на поле чертежа, то в появившемся контекстном меню будет доступен повтор предыдущей команды и список Последний ввод
Читайте также: