Текст
                    ~hange_var
ТВJ.V-С HANGE_VA₽
r_change_var_O [„Tool bar C'lV-Chanqe Var", „Floating,
erButtor 38 [_Button("change scale", "change scale.b
urtobC'cbarrge Rotation Angle", "Chang
_ButtonC'chahgg Att Artgle", "Chang Atr.
_useruutt on_31
_us er Butt
TB_J.VF-CH AhK
L/rool barl_o
'jos er f 1 your.
„us er Butt on.
„us er Button.
<й
Владимир Свет
и
1VT-INS RT
JLVT—insert.
JJ«t er Butt on.
jjseroutton
pser Button.
"user Butt on.
AutoCAD
O-JSeTButron.
L.CIS er Butt on.
Язык макрокоманд
и создание кнопок
IV- HOMERUNS
f_HV_HomePur
_Ub ef~ Butt on.
 Создание новых инструментов
	Подробное описание геометрического
калькулятора
	Автоматическое масштабирование
и переключение слоев
	Работа с проектом под управлением
"быстрых кнопок"
	Знакомство со встроенными языками
программирования
АСТЕР -РЕШЕНИЙ.

Владимир Свет AutoCAD Язык макрокоманд и создание кнопок Санкт-Патврбург •ВХВ-Пгтврбург» •004
УДК MI.3.M нк nmiwin С24 Cm В. Л. С24 AutoCAD: язык макрокоманд и создание кнопок. — СПб.: БХВ- Петербург, 2004. — 320 с.: ил. ISBN 5-94157-392-8 Книга предназначена для тех, кто, работая в системе AutoCAD, понял необ- ходимость автоматизации выполнения рутинных операций, но не знает, как это сделать. Раскрыты возможности встроенного языка Menu Macros, позволяющего создавать макрокоманды не только для полной версии системы, но и для облег- ченной — AutoCAD LT. Основываясь на огромном практическом опыте много- летней работы в AutoCAD, автор на примерах демонстрирует автоматизацию масштабирования посредством функций языка DIESEL и использование функ- ций языка LISP в макрокомандах. Приведены примеры создания сценариев запуска системы с помощью script-файлов, описаны варианты автоматизации расчетов с помощью геометрического Калькулятора. Рассмотрены Допросы оп- тимизации библиотечных блоков, создания сложных полилиний, а также базо- вого и именных размерных стилей. Большое количество примеров, задания для самостоятельной работы и ответы к ним позволят читателю освоить богатый практический опыт. Для широкого круга пользователей AutoCAD УДК 681.3.06 ББК 32.973.26-018.2 Группа подготовки издания: Главный редактор Зам. главного редактора Зав. редакцией Редактор Компьютерная верстка Корректор Оформление серии Дизайн обложки Зав. производством Екатерина Дондукова Владимир Шабалин Григорий Добин Наталья Сержантова Натальи Караваевой Вера Александрова Via Design Игоря Цырульникова Николай Тверских Лицензия ИД № 02429 от 24.07.00. Подписано в печать 28.10.03. Формат 70х100’/м. Печать офсетная. Усл. печ. л. 25,8. Тираж 4 000экз. Заказ Nt 1207 “БХВ-Петербург* 198005, Санкт-Пе1ербург, Измайловский пр., 29. Гигиеническое заключение на продукцию, товар № 77.99.02.953.Д.001537.03.02 от 13.03.2002 г. выдано Департаментом ГСЭН Минздрава России. Отпечатано с готовых диапозитивов в Академической типографии “Наука* РАН 199034, Санкт-Петербург, 9 линия. 12. «. ISBN 5-94157-392-8 С Свет В. Л., 2004 С Оформление, издательство "БХВ-Петербург*, 2004
Содержание Введение.................................................... 1 Сокращения и условные обозначения.............................4 Благодарности............................................ 4 ЧАСТЬ I. РАЗРАБОТКА И НАСТРОЙКА КОМАНД. МЕНЮ ПОЛЬЗОВАТЕЛЯ..............................................7 Глава 1. Создание новых инструментов, "горячие клавиши".........9 1.1. Новая панель инструментов.............................. 9 1.2. Новая кнопка........................................... 12 1.3. Новые "горячие клавиши”.................................18 1.4. Сокращенное имя команды.................................21 Глава 2. Сохранение настроек меню..............................25 2.1. Сохранение установок....................................25 2.2. "Смайлики"...............:............................ 28 Глава 3. Макрокоманды для редактирования объектов и ... панелей инструментов..........................................33 3.1. Copy-Edit........................................... 33 3.2. Изменение величины объектов...........................38 3.3. Изменение угола поворота объекта................... .42 3.4. Изменение угла и цвета атрибута блока........:........44 1.5. Изменение ширины множества полилиний..................49 1.6. Раскрывающаяся панель инструментов....................50 3.7. Появляющаяся и исчезающая панель инструментов.........51 Глава 4. Блоки и комбинированные объекты......----..........-----54 4 I. Вставка блоков............................................... 54 4 2. Определение блока............................................. 59 •I1. Стратегия головастик» HlltiMiiiiatoi ri ...,....................61 4 4. Homerun .....................................64 4 5. ЭКОНОМИМ КНОПКИ .................................><><...... 69
MM II COWTMNNM МММ МЛМОМТМЯ 71 9.1. Загрузим меню.....................................71 5.2. Файлы меню........................................74 ЧАСТЬ II. РАСЧЕТЫ. ЗАГРУЗКА СТИЛЕЙ............................81 Глава 6. Расчеты с помощью геометрического калькулятора.......83 6.1 Общие положения....................................... 83 6.2. Назначение точек.......................................85 Упражнение для полной версии AutoCAD......................87 Упражнение для LT и полной версии.........................88 6.3. Вычисление точек объектной привязки....................89 6.4. Заданные расстояния и углы.............................91 6.5. Точка на линии.........................................92 6.6. Нормаль.............................................. 94 6.7. Вычисление расстояний.............................. 95 6.8. Вычисление углов........................................96 6.9. Вычисление точки с помощью вектора.....................98 6.10. Вычисление точки вращением известной точки вокруг оси..99 6.11. Единицы измерения углов....................?...........99 6.12. Калькулятор экономит щелчки............................101 Глава 7. Внемасштабные элементы..............................109 7.1. Вставка блоков.......................’................109 7.2. Текстовые стили.......................................110 7.3. Размеры...............................................113 7.4. Создание коэффициентов....."..........................114 Глава 8. Применение функций LISP в макрокомандах.............117 8.2. Функция Setq..........................................119 8.3. Функция Ssget.........................................120 8.4. Функция Getpoint..................................... 120 8.5. Функция Getvar........................................121 8.6. Функция Setvar.................................... 123 8.7. Число в строку........................................123 8.8. Объединение строк.....................................125 8.9- Исходное состояние.................................. 125 8.10. Масштабный коэффициент............................. 129 8.11. Загрузка.............................................133 Глава 9. Применение функций языка DIESEL ' для автоматизации масштабирования...................... 136 9.1. Строка состояния. DIESEL и AutoCAD LT.................136 9.2. Перевод объекта в текущий слой........................139
Содержание V 9.3. Длина дуги................................ ..141 9.4. Масштабный коэффициент..............................144 Глава 10. Работа с языком Script в макрокомандах......... 149 10.1. Слайд-фильм................................. 149 10.2. Script и строка состояний.................'........150 10.3. Script и рутина....................................154 ЧАСТЬ Ш. РАБОТА С ПРОЕКТОМ ПОД УПРАВЛЕНИЕМ "БЫСТРЫХ КНОПОК".......................163 Глава 11. Оптимизация библиотеки блоков.................... 165 11.1. Экономим кнопки....................................165 11.2. Экономим файлы.....................................168 11.3. Реальный проект....................................171 Глава 12. Создание команд общего назначения ..................... 177 12.1. И снова Copy-Edit.......................................177 12.2. Move-Rotate.............................................177 12.3. Copy-Rotate.............................................178 12.4. Copy-Edit_2.............................................180 12.5. Текст в специализированном слое.....................’...180 12.6. Текст и слой без LISP.....'.............................185 12.7. Перпендикуляр...........................................187 12.8. Favorite Osnap.....:....................................189 12.9. Закрытие диалогового окна Properties....................191 Глава 13. Создание сложных полилиний........................ 194 13.1. Разрыв трубы.......................................... 194 13.2. Ломаная линия.......................................... 196 13.3. Фигурная скобка..........................................200 Глава 14. Альтернативные ячейки памяти..........................205 14.1. Стратегия.........................,................... 205 14.2. Создание WBlock............,................,...........206 14.3. Вставка WBlock........................................ 216 14.4. "Изюминки"............................................ 211 14.5. Запоминание вида...................................... 212 Глава 15. Создание базового размерного стиля........................214 15.1. Четыре способа простановки размеров...........................214 15.2. Ассоциативные размеры.........................................216 15.3. Bui оный стиль........................ч......................218 15.4. AutoCAD Text Window.,.,<.....................................221 15,3. Ускорение 11ИIU »UU»Ut Ui UUlH Utt tuil j tu i U » i it t * * 11» * * • • I » * • • • I»1 <.224
au<A*u*u| ^ИМЫМ^Л ФЛЧ 1ЯМ |Vt WUMI ММИНВИ рНМврШН VHWM ................мг 16.1. Именной размерный стиль для ПОЛНОЙ версии AutoCAD......227 16.2. Именной размерныйстиль для AutoCAD LT и полной версии.230 Глава 17. Создание команд простановки размеров.................234 17.1. Линейный размер........................................234 17.2. Выноска.................................................235 17.3. Выноска с головкой Dot blank.....-..и..................239 17.4. Выноска Multitag.......................................241 ЗАКЛЮЧЕНИЕ. 245 ПРИЛОЖЕНИЯ................................................. 247 Приложение 1. Ответы на задания для самостоятельной работы.....249 Задание 3.1.................................................249 Задание 3.2.................................................249 Задание 3.3.................................................250 Задание 4.1..i............................................ 250 Задание 6.1............................................... 250 Задание 6.2..................................... '.........251 Задание 8.1.................................................251 Задание 10.1................................................252 Задание 114............................................... 253 Задание 12.1................................................253 Задание 12.2................................................254 Задание 12.3................................................254 Задание 12.4.............................................. 254 Задание 13.1................................................255 Задание 16.1................................................256 Задание 17.1................................................256 Приложение 2. Специальные символы, применяемые для записи макрокоманд........................................258 Приложение 3. Увеличение поля для черчения.................... 260 П3.1. Windows...............................................260 П3.2. AutoCAD...............................................261 Приложение 4. Системные переменные настройки размерного стиля.262 Вкладка Lines and Arrows, линии и стрелки...................262 Вкладка Text, текст.........................................265
Содержание УП Вкладка Fit, размещение...л.,.................... ...........268 Вкладка Primary Units, основные единицы..................J........271 Вкладка Alternate Units, альтернативные единицы...............274 Вкладка Tolerances, допуски.................................. 277 Приложение 5. Системные переменные, определяющие форму головок размерных стрелок............................................. 280 Приложение 6. Перечень макрокоманд............................ 282 Приложение 7. Системные переменные AutoCAD, примененные в книге.294 Список литературы...............................................300 Предметный указатель................................. ......301
Введение В AutoCAD встроен ряд языков программирования, позволяющих пользова- телям подстраивать систему под свои потребности. Самым известным из них является язык LISP. Тысячи полезных утилит написаны на LISP. Много книг издано по LISP, это мощный и гибкий язык, но он достаточно труден. Специалистов по LISP мало. Надо быть программистом и пользователем AutoCAD одновременно, а это редкое сочетание. Или надо стать програм- мистом для AutoCAD, но это уже другая профессия. В одной из глав мы по- знакомимся с LISP и возьмем на вооружение несколько его функций. Другим известным языком является DIESEL. Он используется, главным об- разом, для внесения изменений в строке состояния (Status Line) и для соз- дания и добавления пунктов меню и широко не применяется. Мы также воспользуемся несколькими его функциями. Кратко познакомимся и с языком Script. Он делает возможным запуск AutoCAD с заранее заданными параметрами и загружает в чертеж нужные размерные и текстовые стили. В AutoCAD есть один малоизвестный язык. Только отрывочную информа- цию можно найти по этому языку, поскольку авторы-толстых'книг не удо- стаивают его своим вниманием, а система помощи (Help) AutoCAD поможет KuibKo тому, кто уже сделал первые шаги, так как в ней нет его подробного описания. А между тем это очень оперативный и гибкий язык, позволяю- щий тут же, не выходя из чертежа, создать макрокоманду, которая возьмет на себя автоматическое выполнение рутинной операции и тем самым резко ускорит работу. l eu. два пути ускорения работы: Л вводить команды преимущественно с клавиатуры; П создать серию макрокоманд, где в одной кнопке будет заложено несколь- ко последовательных операций. Первый путь внешне более эффектный. Специалист работает на клавиатуре 1йк быстро, КИК пианист играет на своем инструменте, но, бывает, с разгону нрнбагмт МИМО пели. Приходиться возвращаться. Да и невозможно 8 часов подряд играть на пианино,
Hhipull liyil. — »I > > << 11 Ни 111 К' M'lk.pi'koMilll'l HUH VC'III Xlilllh, MlllillllpiH |4lMM ни языке, который iiaii-iinicic» Mi nil Million. I Io cyrn i посй n ii.ik Menu Macios можно назван. языком AutoCAD. )ioi язык лыком iюному, кю, работая в AutoCAD, за! пядывает в командную строку. Второй путь более эффективный, более безошибочный, более комфортный, более дружественный и наиболее короткий для достижения поставленной цели — выполнения чертежа. Есть еше третий путь — широко использовать дополнительные программы, написанные на LISP и других языках. Но это отдельная тема и об этом другими авторами написаны другие книги. AutoCAD LT (LT происходит от слова Light — легкий, облегченный) не под- держивает LISP. Есть дополнительные платные программы, позволяющие догрузить LISP в LT-версию. Но для того чтобы полноценно использовать LISP, нужен специалист. A Menu Macros в облегченной версии AutoCAD работает. Выражения DIESEL, включенные в макрокоманду, заменят выра- жения LISP, применяемые в полной версии для сложных команд Поэтому пользователи LT не почувствуют себя обделенными. Работая с Menu Macros, вы станете "на ты” с сокращенными именами ко- манд и опций, и это окажется залогом быстрой работы — стандартные ко- манды вызываются с клавиатуры, рутинные операции выполняются с по- мощью кнопок, в которые заложены макрокоманды. AutoCAD (полная версия) содержит в себе мощный геометрический кальку- лятор. Он упомянут в толстых книгах, но трудно найти в литературе под- робное описание его работы. Здесь калькулятору посвящена отдельная глава. Калькулятор проведет для нас в автоматическом режиме расчетную работу. Выражения калькулятора могут быть включены в макрокоманду и эго со- кращает дистанцию между возможностями LISP и Menu Macros. Рабочее место чертежника (пользователя AutoCAD) организуется так, чтобы все часто используемые инструменты были под рукой, на привычном месте. На экране не должно быть ничего лишнего. Редко используемые команды спрятаны во временно закрытых панелях инструментов (Toolbars) или в вы- летающих кнопках. Количество кнопок на экране зависит от мастерства пользователя: чем оно выше, тем меньше кнопок, так как многие команды берутся с клавиатуры. Соответственно, большая площадь экрана отводится на пространство чертежа. Для дисплеев размером меньше 17 дюймов это существенно. Но сейчас мы ставим перед собой совсем другие задачи. Мы будем разрабатывать новые командные кнопки, позволяющие нам со- вершенствовать свою профессиональную работу. Несмотря на то, что в AutoCAD 2002 есть 466 командных кнопок, добавленные вами еще пол- сотни позволят быстрее и с меньшими затратами сил выполнять чертежную работу, поскольку каждая наша новая кнопка может заменить несколько стандартных.
Введение 3 Программированию кнопок на языке Menu Macros и посвящена эта книга. Автор специально показывает ход своих рассуждений, возникающие под- водные камни, не дающие программе работать и заставляющие идти другим путём. Но каждый, даже ложный, путь подарит нам новые знания. При наборе книги бывает очень трудно избежать ошибок в программах, где каждая запятая,, каждый пробел или скобка имеют свое значение. При ма- лейшей ошибке программа не будет работать. Поэтому анализируйте каж- дую букву, каждый знак — и тогда добьетесь успеха. Команды, помещенные в книгу, создавались на англоязычных версиях AutoCAD 14, 2000, 20001, 2002, LT-97 и LT-2000. Все ранее созданные ко- манды проверены на AutoCAD 2002. В русскоязычных версиях AutoCAD, где в командной строке текст выводится на английском языке, все команды работают. В иностранных (не английских) версиях AutoCAD при вводе ко- манд используется специальный знак — подчеркивание. С ним макроко- манды работают в любых версиях. Устареет ли книга с выходом новых версий AutoCAD? Нет, не устареет. Могут появиться небольшие изменения, связанные с тем, что некоторые команды как бы исчезают. Была команда Leader, ее заменила команда Qleader. На самом деле старые команды остаются в системе. Их можно вы- тать с клавиатуры либо полным именем, либо знаком перед полным или кратким именем. Но с выходом каждой новой версии AutoCAD расши- ряются и возможности создания новых команд. Тс, кто недавно окончил курсы AutoCAD, сразу не смогут разобраться с ма- гвриалом. По мере накопления опыта работы, они все чаще и чаще будут ьилядывать в книгу, потому что она поможет быстрей и полней освоить пог непростой продукт. Книга не предназначена для программистов- профессионалов, хотя и они смогут найти здесь интересные идеи. I ли нам достаточно стандартного AutoCAD, вы всем довольны и не ищете пополнительных возможностей улучшения и ускорения работы, не загляды- пистс в книги, в Help или Интернет, то эта книга не для вас. iiioCAD бесконечен. Эта книга для тех, кто любит AutoCAD и использует любую возможность узнать о нем что-то новое. Мнерпил дан по нарастающей сложности. С книгой надо работать вдумчи- во, i курпуче ню следуя линии, задуманной автором, сохраняя рекомендо- н«мн1|1 имена <|> ылоп, линеек с инструментами и меню. Потому что в каж- лоИ последующей главе питательно будут ссылки на имена или действия, иинпые и предыдущих папах. A hoi да Оулг| iirpciiepiiyia последняя страница, можете отправляться в сво- Gouiioe iHhin iiiH oCimmni попымп шаннями п навыками.
Сокращения и условные обозначения В книге приняты следующие условные обозначения: □ Левая кнопка мыши ЛК □ Правая кнопка мыши ПК □ ENTER J □ Пробел _ Ссылка на код команды, выражение, формулу имеет вид [4-3|, где 4 — но- мер главы, 3 — порядковый номер выражения в главе. Задание для самостоятельной работы обозначается как Задание 7.2, здесь 7 — номер главы, 2 — порядковый номер задания в главе В книгах, обучающих работе на AutoCAD, принято команду или опцию записывать так, чтобы ее имя содержало одну или несколько заглавных букв, ввод которых с клавиатуры вызывает эту команду или опцию. Заглавной не обязательно является первая буква, например, eXit (выХод). В нашей книге традиция нарушается. Заглавная буква в описании всегда первая. Так удобнее записывать и прочитывать коды разрабатываемых нами команд, представляющих собой неразрывную цепочку символов. Рядом с английским термином в скобках показан ее русский эквивалент, также с большой буквы, или перевод. В последнем случае запись в скобках начинается со строчной буквы. Например, Height (Высота), или "...создадим тем самым Previous Selection Set (предыдущий выбранный набор)" Данную книгу не следует рассматривать как оффициальный источник русских эквивалентов английским терминам. Благодарности Автор благодарит тех, кто оказал ему помощь в создании рукописи. Прежде всего это моя жена и верная помощница Ольга Свет (Olga Svet). Она не только неоднократно перепечатывала материал, но и, будучи хорошим Cad- operator (чертежник на компьютере), проверяла работу многих команд и по- давала результативные идеи. Спасибо за ценные советы и поддержку в трудные минуты Александру Маркову из Санкт-Петербурга. Без него автору было бы гораздо трудней. Дмитрий Беля- ков из Нижнего Новгорода проверял работу многих макрокоманд на русской версии AutoCAD и подал идею новой темы. Игорь Костюкович из Минска,
Введение 5 Леонид Немировский (Leo Nemirovsky) из Сиэттла, США давали советы, к которым автор прислушивался. Тестирование команд проводили студенты Санкт-Петербургского Архитектурно-строительного университета под руко- водством преподавателей Марии Яковлевой и Татьяны Русаковой, а также Юлия Цветкова (Julia Tsvetkov) из Нью-Йорка. Евгения Феоктистова (Yevgeniya Feoktistova), Брэдфорд, Канада оперативно разыскивала нужную информацию, касающуюся русской версии AutoCAD Истину часто удава- лось найти в дискуссиях, разворачивающихся на интернет-сайтах http://www.AUTOCAD.ru/ и http://www.AUTOKAD.ru/ Участники форума последнего принимали активное участие в поисках русских эквивалентов команд AutoCAD. Нельзя не отметить здесь и Феликса Резника (Felix Reznik), Ныо Йорк, открывшего автору удивительный мир макрокоманд. Всем помощникам огромное спасибо.
Часть I РАЗРАБОТКА И НАСТРОЙКА КОМАНД. МЕНЮ ПОЛЬЗОВАТЕЛЯ □ Создание новых инструментов, "горячие клавиши п Сохранение настроек меню □ Макрокоманды для редактирования объектов и ... панелей инструментов п Блоки и комбинированные объекты п Собственное меню пользователя
Глава 1 Создание новых инструментов, "горячие клавиши" 1.1. Новая панель инструментов При первом запуске программы AutoCAD после ее инсталляции на экране появляются четыре панели инструментов (Toolbars) — Standard Toolbar (Стандартная), Object Properties (Свойства Объектов), Draw (Рисование) и Modify (Редактирование). Всего же в AutoCAD 2002 есть 26 тематических панелей инструментов, каждую из которых можно вывести на экран. Щел- чок ПК на любой командной кнопке выводит перечень всех имеющихся и.июлей инструментов. Щелчок ЛК на любой строке перечня выводит па- нель инструментов на экран, где можно ознакомиться с ее содержимым. I спи подвести курсор к любой кнопке, около нее появляется имя команды, л в строке состояния (Status Line) — это самая нижняя строка экрана AutoCAD — появляется краткое описание команды. I < 11. команды, не попавшие в панели инструментов. Список почти всех имеющихся в AutoCAD команд можно увидеть в диалоговом окне Customize (Алшиация) (рис. 1.1). Примечание - Команды, не попавшие в список, можно разыскать только в системе помощи (Help). Икни можно вы тать, выбрав вместо имени панели инструментов команду • uslouii/e (Адан гания), которая находится в конце перечня панелей инстру- ||1 шов (luolbars) или через выпадающее меню Tools (Сервис). II пиши пни убрав флажок рядом с именем панели инструментов, можно • in или удалить ее с экрана AutoCAD. Правое поле окна Customize । 111И11ИЯ) ). 11ЫП.КЧСЯ Menu Group (Группа меню). Здесь должно быть ню А< М> и №а>ж । быть меню Express (Экспресс), если оно загружено » АШ<|| AD, и । к ♦ i iipvine mi ню. содержащие собственные панели инстру- V >11 Л <»<||1М1| ) I II) III Ml IIII1 МЫ СИ I I.I/IIIM ПО >ЖС
Рис. 1.1. Диалоговое окно Customize. Перечень панелей инструментов Вкладка Commands (Команды) окна Customize (Адаптация) (рис. 1.2) содер- жит два поля. Первое поле Categories (Категории) состоит из списка имен выпадающих меню, а также, ниже горизонтальной черты, короткого списка, состоящего из трех строк: □ User defined — определяемые пользователем; □ Flyouts — "вылетающие" (панели инструментов, в которых несколько кнопок как бы "вылетают" из одной); □ All Commands — все команды. При щелчке на любой позиции ЛК в поле Categories (Категории) во втором поле Commands (Команды) раскрывается список команд, соответствующих данной позиции поля Categories (Категории). Категория Flyouts раскрывает список панелей инструментов (Toolbars), которые уже сделаны "вылетаю- щими". Категория User defined (Пользовательские) выводит пустые кнопки: User Defined Button, т е. кнопку, которую может создать пользователь, и User Defined Flyout, т. е. кнопку, которая станет головной в будущей выле- тающей панели инструментов (Toolbar), также создаваемой пользователем. Категория АП Commands (Все команды) раскрывается в список всех команд, что и показано на рис. 1.2. Любую кнопку из поля Commands (Команды) можно добавить в любую из имеющихся панелей инструментов (Toolbars) методом Drag and Drop, т. е.
Глава 1 Создание новых инструментов, "горячие клавиши' 11 щелкнуть на ней ЛК, подтащить прижатой ЛК к панели инструментов и отпустить на ней. Также можно выбрать желаемое расположение новой кнопки в панели инструментов относительно других кнопок, ориентиром для этого служит появляющаяся на панели инструментов линия. Кнопку можно удалить из панели инструментов, для этого надо сделать обратную операцию (при наличии на экране окна Customize (Адаптация)). Рис. 1.2. Диалоговое окно Customize. Список команд Рис. 1.3. Задание имени новой панели инструментов 11 in nouyio кнопку вынести и оставить на экране, не затрагивая ни одну из ц|«| 111утоц||1Ч напенен inicipyMciiioii (Toolbars), она образует новую панель ши |||умг|п>||| и спин I и licit пока Единственной, а сама панель инструмен- нш in* 1\,1П1 нм» a.iiiiini' rll ни vmihi’i iiiiiio Toolbar I Чтобы ее псреимено-
ним. iuiiki Инин и cikkci < ushiiiii/f (A/i.iiii.iiiiiii) iik ini hi<ilhin< (Iliiiit-iin инструменте)!), ii-iiiiii ее и списке, иылелпп. и, плжлп kiioni \ 1<> ыше (||>р< именовать), дать подходящее имя >гу же процедуру можно iiuiioiiiiii п> и другим путем. Нажмите кнопку New (Новая) в той же вкладке Н пояпив шемся окне New Toolbar (Новая панель инструментов; (рис. I.J) даше имя будущей панели инструментов, например. Practice (Практика), определите группу меню — в данном случае ACAD, которому будет принадлежать бу- дущая панель инструментов и нажмите кнопку ОК. Окно New Toolbar (Новая панель инструментов) исчезнет, а на экране поя- вится узкий прямоугольник Toolbar (Панель инструментов), в который пе- речисленными далее действиями можно поместить нужные кнопки: □ кнопки можно переносить из одной панели инструментов (Toolbar) в другую. Для этого, при наличии на экране окна Customize (Адаптация) прижатой ЛК перетащите кнопку в другую панель инструментов (Toolbar); □ кнопку можно копировать из одной панели инструментов (Toolbar) в другую. Выделите копируемую кнопку, нажмите клавишу <Ctii> и од- новременно прижатой ЛК перетащите копию кнопки в другую панель инструментов (Toolbar). 1.2. Новая кнопка Дополнительная к AutoCAD серия инструментов Express (Экспресс) содер- жит несколько десятков весьма полезных команд. Но не все из них имеют свои кнопки. Например, есть команда Edit any text, универсальная команда, которая редактирует любой текст — однострочный, многострочный, атри- бут, текст размеров. Команда заменяет собой две стандартные команды AutoCAD- Edit Text (Ddedit) и Edit Attribute (Eattedit). Последняя заменила команду предыдущих версий Attedit, но в панели инструментов Modify II унаследовала старое имя команды Edit Attribute. Буква "Е" — от слова Enhanced (Расширенный). Командой можно редактировать не только содер- жание атрибута, но и его свойства. Если же надо редактировать только со- держание, старая команда предпочтительнее и вызывается она из командной строки вводом Attedit или Ate. Именно старый вариант команды вложен в универсальную команду Edit any text. Вызовите окно Customize (Адаптация). Переключитесь на вкладку Commands (Команды). Выберите User Defined (Пользовательские) и из поля Commands (Команды) подтащите к панели Practice пустую пока кнопку User Defined Button. Затем следует щелчок ЛК в середине новой кнопки — и окно Customize (Адаптация) видоизменилось. Вкладка Properties (Свойства) поме- няла название на Button Properties (Свойства кнопки) и раскрылась, пред- лагая несколько полей для заполнения (рис 1.4): □ Name (Имя) — Вместо User Defined Buttor дайте имя Edit any text (Ре- дактирование любого текста);
Глава 1. Создание новых инструментов, "горячие клавиши1 13 С description (Описание) — Редактирует однострочный и многострочный текст, атрибуты, размерный текст. Это поле заполнять не обязательно, но сейчас вы это проделайте; П Macro associated with this button (Макрос для данной кнопки) — Здесь записывается код команды или, если хотите, ее программа. Именно за- полнению этого поля посвящена наша книга. Рис. 1.4. Диалоговое окно Customize. Поля для создания новых кнопок H i умолчанию здесь строка начинается с ~с~с, что равноценно дважды на- I -in к laniiiue <Esc> клавиатуры. Клавишу <Esc> обычно нажимают для r^poi а "ост нков" предыдущей команды, чтобы очистить командную строку. Hi IOH+..ICM строку: AcAc_Tedit. Откуда появилось такое сокращение — i in ' l.iii/niic в меню Express (Экспресс), выберите пункт Text (Текст) и •н м । <Ь1 any text В командной строке увидите: Ь..... ' in |।' < । «п)«»' t : а и г) и, имя команды, которое понимает AutoCAD. Пишем подряд, без III м включая символ подчеркивания Об этом символе мы узнаем lol вы Minyi (н.111, iai i.iniii.ic или прочные И юп> я ii.ii. Menu М 1. in in ip.i I'liricn к юму, какими буквами, заглав- |Н>*ш и in <прич11ымн, н< "'1< и iiiiiiici. |..о/к>|| у< копимся писать начальную
TW Чк ♦ » II Пукну К<?М«НД, Ollllllll НЛП <|>yilkllllll 1.11 || |)>||<>|1 <К1.1!1Ы1Ы’ nvliHI 1)111'1111.1 ми. Lik лшчс 11рочи।ынасIся код, если он длинный Затем нажимаем последовательно кнопки Apply (Примени i ь) и (lose (Закрыть). Проверяем, работает ли кнопка на тексте, блоке с шрибугами, размере. Если в AutoCAD загружено меню Bonus (для R14), или Express (для более поздних версий), кнопка будет работать. Подведите к кнопке курсор мыши и убедитесь, что появляется имя этой кнопки, а в строке со- стояния (Status Line) выводится описание команды. Нарисуем теперь пик- тограмму, рисунок на кнопке, чтобы она была не хуже других. Но сначала надо создать на жестком диске папку C:\Macro, а в ней вложенную папку Icons, в которую будем складывать все последующие файлы,' касающиеся новых команд. (Замечание ) Если пользователь не имеет права размещать в корне диска С свои материа- лы, положите папку в доступное для вас место. Здесь и далее для упрощения будет использоваться диск С. Зайдите опять в диалоговое окно Customize (Адаптация), но другим спосо- бом: щелкните ПК по любому свободному от кнопок пространству в верх- ней части экрана и в появившемся контекстном меню выберите пункт Customize (Адаптация). После появления диалогового окна щелкните ЛК по новой кнопке. Раскрылась вкладка Button Properties (Свойства кнопки), за- полненная нами ранее. В поле Button Image (Пиктограмма) в очерченном прямоугольником пространстве справа внизу можно просмотреть все имеющиеся в вашем распоряжении и созданные авторами AutoCAD рисун- ки. К нашей кнопке Edit any text удачно подходит рисунок Д?, соответст- вующий кнопке Edit Text. Разыщите его в поле рисунков и щелкните по нему ЛК, а затем по клавишам Apply (Применить) и Close (Закрыть). Мы получили полноценную кнопку с красивым рисунком. Теперь можно уда- лить ставшие ненужными кнопки команд Edit text и Edit attribute и во всех случаях редактирования пользоваться одной новой универсальной кнопкой. Как уже говорилось, в AutoCAD 2002 команде Edit attribute приданы новые функции, которые не хотелось бы терять вместе с удаленной кнопкой. Но эта же команда вызывается двойным щелчком ЛК по атрибуту, поэтому присутствие этой кнопки на экране не является необходимым. Переместите новую кнопку туда, где была ранее кнопка Edit text, а освобо- дившуюся панель с именем Practice оставьте для следующих команд. В AutoCAD 2002 ряд кнопок не имеет рисунков. Например, такие полезные команды, как Copy with Base Point (Копировать с базовой точкой), Paste as Block (Вставить как блок), Paste to Original Coordinates (Вставить в те же ко- ординаты). Эти команды есть в контекстном меню ПК, что очень удобно, но некоторые пользователи отключают меню (Options?User Preferences =>
Глава 1 Создание новых инструментов, "горячие клавиши' 15 Kight Click Customization), возвращаясь тем самым в старый вариант R14, и остаются без оперативной возможности быстро вставлять детали одного чертежа в другой. Можно использовать для этого падающее меню Edit (Правка), но оперативность уже утеряна. < делаем для этих "безрисуночных" кнопок свои рисунки. Вызовите диалого- вое окно Customize (Адаптация) на вкладке Commands (Команды). В поле Categories (Категории) выберите пункт Edit (Правка) или All commands (Все команды). Выводим первую кнопку Copy with Base Point (Копировать с базовой точ- кой) на панель инструментов Practice. Присоединяем к ней вторую кнопку Paste as Block (Вставить как блок) и третью Paste to Original Coordinates (Вставить в те же координаты). Щелкнем ЛК по первой кнопке. В поле Macro associated with this button (Макрос для данной кнопки) уже есть запись । С_Copybase I in набрать на клавиатуре copybase ?, команда выполнится и без нажатия КНОПКИ. В ноле с коллекцией рисунков выбираем подходящую пиктограмму |^|, Принадлежащую команде Copy to Cliboard Нажмите Edit (Правка). В появившемся окне Button Editor (Редактор кно- пок), пользуясь инструментами четырех кнопок рисования, флажком Grid (< < ik<i) и палитрой цветов, добавьте к имеющемуся рисунку в правом верх- нем yuiy красный крестик, имитирующий базовую точку (рис. 1.5). Button Editor I н> I • Дь inui пкно дин । и (Динин |>и< умкой па кнопках (пиктограмм)
Нажми if I на ни iiiv Snvr Л\ (( охрипи и. как) Ноннин и < iinuhipiii 111 пни о нос окно Creak- File ((. oi;i;in> фнгл). <десь p.i ii.ihiii ic со in.iiinyio piiiifi нцпку С \Mdcio\lcons и поместите сюда рисунок под именем < нруЬ. bmp AutoCAD запоминает этот же рисунок за автоматически при* ко< иным ему номером и в дальнейшем выведет его на кнопку при загрузке. Lem нажать только на клавишу Save, AutoCAD "привяжет" рисунок к кнопке, но при его утере разыскать рисунок будет затруднительно, так как файл рисунка полу- чает имя в виде неизвестного нам номера. Затем нажмите кнопку Apply (Применить) в окне Customize (Адаптация). Такую же операцию проделайте со второй кнопкой, взяв за основу имею- щийся рисунок команды Paste from Clipboard (Вставить из буфера), но уже другим способом. При наличии на экране окна Customize (Адаптация) щелкните ПК по кнопке, рисунок с которой надо скопировать на другую кнопку. В данном случае с кнопки Paste from Clipboard (Вставить из буфе- ра), находящейся на панели инструментов Standard Toolbar (Стандартная). В появившемся контекстном меню выберите пункт Copy Button Image (Ко- пировать пиктограмму). Затем щелкните ПК по пустой кнопке Paste as Block (Вставить как блок) и из того же контекстного меню выберите Сору Button Image (Копировать пиктограмму). Второй щелчок ПК по этой же кнопке возвратит вас в контекстное меню, где на этот раз надо выбрать пункт Edit Button Image (Редактировать пиктограмму). Включите сетку (Grid) и добавьте звездочку в правом верхнем углу Сохраните рисунок в ранее созданной папке C:\Macro\Icons\Pasteblock.bmp Для третьей кнопки Paste to Original Coordinates (Вставить в те же коорди- наты) можно взять за основу гот же рисунок, но добавить символ координат Имя файла рисунка Pasteorigin.bmp. Сохраните файл в уже известной папке. Получилась тематическая панель инструментов, которую можно переимено- вать, дав ей имя, например, clipboard, или заменить этими тремя кнопками уже имеющиеся в панели Standard Toolbar (Стандартная): Copy to Clipboard (Копировать в буфер), Paste from Clipboard (Вставить из буфера), Cut to Clipboard (Вырезать в буфер). Тем более, что эти команды легко вызываются с клавиатуры: <Ctii> + <С> <Ctrl> + <V> <Ctrl> + <Х> Имя "Clipboad" дано потому, что команды взаимодействуют с буфером об- мена (Clipboard) операционной системы Windows На этом этапе оставьте панель под именем Clipboard, так как вскоре мы бу- дем с ней работать.
Гпава 1. Создание новых инструментов, “горячие клавиши1 17 Теперь вернитесь к кнопке Edit any text и добавьте сюда крестик в верхнем левом углу. Он покажет, что это не стандартная кнопка AutoCAD, а наша самодельная. Сохраните рисунок под тем же именем с помощью команды Save As (Сохранить как) Д/ Попрактиковавшись в создании рисунков, можно отказаться впоследствии от этих трех кнопок, связанных с буфером обмена (Clipboard), и поставить на мышь контекстное меню (Shortcut) в обычном режиме (Default Mode) и режиме редактирования (Edit Mode). Это можно проделать в диалоговом окне Options (Настройка), которое вызывается из падающего меню Tools (Сервис). Здесь во вкладке User Preferences (Пользовательские) поставьте флажок в окошке Shortcut menus in drawing area (Контекстные меню в об- ласти рисунка). Что касается режима Command Mode (Командный режим), здесь действуйте по своему усмотрению. Очень скоро вы почувствуете пре- имущества контекстного меню (Shortcut) на правой кнопке мыши, несмотря на лишние щелчки, которые, кстати, можно временно отключать, если в обычном режиме (Default Mode) выбрать функцию Repeat Last Command (Повтор последней команды). Замечание ) Контекстное меню (Shortcut menu) на правой кнопке имеет еще одно неоспо- римое преимущество. Верхняя строка этого меню— Repeat... (имя последней команды). При ее выборе повторяется вся макрокоманда, какой бы длинной она не была. Если же опция Shortcut menu (Контекстное меню) отключена, правая кнопка повторяет только последнюю команду в цепочке макрокоманды. 1еперь диалоговое окно Options (Настройка) будет вызываться щелчком правой кнопки мыши и выбором последнего пункта появившегося контек- сшого меню. Проработайте все пункты этого меню, они очень удобны в практическом черчении. В AutoCAD 2004 появилась возможность регулировать продолжительность удержания правой кнопки мыши и в зависимости от этого получать разные рс1улыаты. Все же необходимость повторять команду щелчком правой кнопки не напрямую, а через контекстное меню, не способствует ускоре- нию черчения, несмотря на преимущества последнего. На рис. 1.6 показано 'in.uioioBoe окно Right Click Customization (Правая кнопка мыши). I ict i> кроме вышеперечисленных действий можно включить такой режим, при котором происходит следующее: при коротком (обычном) щелчке ПК iioniopiieicn последняя команда. При коротком удержании ПК появляется I oiiicki шоп меню, настройка которого осуществлена заранее. Режим вклю- ini'ii >i ycianoiiKon флажка Turn on time-sensitive right-click (Установить чув- < ।ни'ii.ikm и. oi времени для ПК) По умолчанию поставлена длительность pt iiiihi Ilk piim.iu 2^0 mi 11р<1К1пчески это легкое удержание, доста- HPiiitti iijni <10 11,11111111 iii.i нош.юнаiciicii и лежи усваиваемое.
Right*'Clink euitamliatttcrl (*>jJ4jrri on tirr.i • " •• righi-i I. Quick die»» tor ENTER Longer click to display Shortcut Menu Longer click duration: ‘250 1 milliseconds Default Mode If no objects are selected, right-click means Edit Mode If one or more objects are selected, right-click means О Repeat Last Command (S) Shortcut Menu Command Mode If a command is in progress, right-click means Apply & Close j [ Cancel | | Це1р Рис. 1.6. Диалоговое окно Right Click Customization Эта особенность имеет важное значение для нас. Команды, которые мы соз- дадим ниже, будут состоять из множества следующих друг за другом дейст- вий. При необходимости повторить команду следует нажать и слегка удер- жать ПК. Для повтора стандартных команд AutoCAD достаточно обычного короткого щелчка ПК. Потренируйте руку на выборе через контекстное меню описанных выше команд, связанных с буфером обмена и с вызовом диалогового окна Options (Настройка). 1.3. Новые "горячие клавиши" Нажатием определенных клавиш можно изменить режимы или вызвать оп- ределенные команды Например, клавиша <F8> включает или выключает режим ортогональности (ORTHO), а сочетание клавиш <Ctrl> + <С> копи- рует объекты в буфер обмена (Clipboard). Полный список используемых в AutoCAD функциональных клавиш можно просмотреть в диалоговом окне Customize (Адаптация) на вкладке Keyboard (Клавиатура), если нажать кла- вишу Show All (Показать все). Или букву S вместе с нажатой клавишей кла- виатуры <Alt>. Эта буква специально подчеркнута (рис. 1.7, 1.8).
Гпава 1. Создание новых инструментов, "горячие клавиши" 19 Рис. 1.7. Диалоговое окно Customize. Вкладка Keyboard для назначения комбинации "горячих клавиш" Shortcut K»yi Accelerator Command Group AH-F11 Visual Basic Editor ACAD A)t»F8 Macros ACAD Ctrkl Properties ACAD Qrl*2 AutoCAD DesignCenter ACAD Clrl*6 dbConned ACAD Ctrl*A Select Ail ACAD Ctrl*Alt*W Layer Isolate EXPRESS CtrkB Toggles Snap CtrkC Copies objects to Clipboard Ctrl*D Toggles coordinate display Clrl+E Cycles through isometric planes Clrl+F Toggles running object snaps Ctrl+G Toggles Grid CtrUH _setvar. pickstyle: $M- ACAD CtrkJ Executes last commend ctn*L '0 ACAD Ctrl*N Layer Isolate EXPRESS Clri*O Open ACAD Ctrl*P Rot ACAD Ctrl+O Toolbars ACAD Ctrl+R 'V ACAD Ctrl+S Save ACAD CtrkT Toggles Tablet mode CtrkX Cuts objects to Clipboard CtrkY Redo ACAD Ctrb-Z Undo ACAD F2 Toggles Text screen F3 Toggles running object snaps F4 Toggles Tablet mode F5 Cycles through isometric planes F6 Toggles coordinate display F7 Toggles Grid F8 Toggles Ortho mode F8 Toooles Snao < Let • к'и< 1 П. 14 ущ<и; шующих «горячих клавиш
' t.t II, । Г I t, •' Il I»#| l|n->((n>i |„iar«r^ WlWin tW»«< •«•wiwrr» Aulo(AI) lipciloi lilHJIHCI Но 1МОЖНО1 11> ClIMOl IOHICJIIiIIO .ill. . I.lllllt* клавиш для юи или иной команды. Поле Categories (Категории) (рис. 1.7) содержит список, начин пощийся с перечня падающих меню: File (Файл), Edit (Правка)и т. д. На пашем ри- сунке раскрыто меню Tools (Сервис). Следующая секция списка, если его пролистать дальше, включает в себя перечень всех панелей инструментов. По- следняя строка списка — AutoCAD Commands (Команды AutoCAD). Если вы- делить одну из строк списка Categories (Категории), он раскроется во втором поле Commands (Команды). Строка AutoCAD Commands (Команды AutoCAD) раскрывается с некоторой задержкой: предстоит регенерация длинного списка команд, состоящего более чем из 400 пунктов. Выбрав команду, можно "при- вязать" к ней сочетание клавиш ускоренного доступа с клавиатуры. Сделаем это для команды Customize (Адаптация), вызывающей одноименное диалого- вое окно, с которым мы будем работать наиболее часто. В поле Categories (Категории) находим меню Tools (Сервис). В конце спи- ска, появившегося в поле Commands (Команды), выделяем строку Customize Toolbars (Адаптация панелей). Внизу под этим полем можно прочитать описание (Description) работы команды. Поле Press new shortcut key (Новая комбинация клавиш) предназначено для назначения комбинации клавиш. Комбинация обязательно должна начинаться с <Ctrl>, <Ctrl> + <Shift> или <Ctrl> + <Shift> + <Alt>, а затем знак " + " и одна из клавиш клавиатуры. Установите курсор в этом поле, нажмите клавишу <Ctrl> и, например, букву “Z", которая находится рядом с <Ctrl>, что было бы удобно для вызова ко- манды одной левой рукой. Внизу, под полем появилось сообщение: Currently assigned to: Undo in Edit Menu Это значит, что сочетание <Ctri> + <7>уже занято. Переназначить эти кла- виши для вызова другой команды не имеет смысла, поэтому надо попробо- вать другое сочетание, например, <Ctrl> + <Q>. Сообщение, которое поя- вилось под белым полем: Currently assigned to: [unassigned] Следовательно, сочетание не назначено для чего-либо, и его можно исполь- зовать. Нажмите Assign (Назначить). Поле Press new Shortcut Key (Новая комбинация клавиш) освобождается, а в поле Current Keys (Текущая комби- нация) над ним появляется запись <Ctrl> + <Q>. Теперь этим сочетанием клавиш можно воспользоваться для вызова диалогового окна Customize (Адаптация). При нажатии назначенного таким образом сочетания клавиш не требуется подтвержлать команду клавишей <Enter>.
Гпава 1. Создание новых инструментов, “горячие клавиши' 21 Некоторые пользователи устанавливают свои сочетания для наиболее популяр- ных команд и это позволяет им ускорять чертежную работу. Далее приведены некоторые комбинации, составленные А. Кузнецовым, г. Новосибирск. Line <Ctrl> + <Z> Pline <Ctrl> + <Shift> + <Z> CircIeRad <Ctrl> + <Shift> + <Alt> + <Z> Bhatch <Ctrl> + <F> Dtext <Ctrl> + <Shift> + <"Q^ Mtext <Ctrl> + <Shift> + <Alt> + <Q> Dimlinear <Ctrl> + <Shift> + <X> Dimaligned <Ctrl> + <Shift> + <Alt> + <X> Matchprop <Ctrl> + <D> Ddedit <Ctrl> + <Q> Copy <Ctrl> + <Shift> + <C> Move <Ctrl> + <Shift> + <Alt> + <C> Mirror <Ctrl> + <Shift> + <D> Offset <Ctrl> + <E> Inin <Ctrl> + <W> Chamfer <Ctrl> + <A> Fillet <Ctrl> + <Shift> + <A> Может показаться странным, что сюда не попала такая часто используемая команда, как Extend (Удлинить). Но AutoCAD 2002 предоставил возмож- ное гь получить эту команду сочетанием команды Trim (Обрезать) с одно- временно нажатой клавишей <Shift>. комбинации составлялись, исходя из того, чтобы клавиши можно было на- ж.чь одной левой рукой. При этом были изменены и некоторые стандарт- ные, но не используемые комбинации. Например, <Ctrl> + <А> — это i г.'шдяртпая команда Windows Выбрать все. Ч|о(>ы клавиши ускоренного доступа работали, необходимо в диалоговом окне Options (Настройка), во вкладке User Preferences (Пользовательские) и поле Windows Standard Behavior (Стандартный режим Windows) поставить флвжои в окошке Windows standard accelerator keys. 1 Л. Сокращенное имя команды I hi \<кор<чнн1 |>.1(>о1ы AutoCAD предоставил возможность вводить команду к ниш uvpi.i вы n.iiiiui ег. ('окрашенным именем (Alias) Стандартные со- । 1>л|||< пни !<>П| ни UIHI.I в <|niiie Ai .ul ppp коюрый находится в папке
Suppoii ui.iiiiioil директории AutoCAD (Чаше шсн», 11111111<<< ими пинии C:\Piogiain I 4es\AuloLAD 20l)2\Suppoit.) hoi icKcionoii (|>пПи moaci Оьпь отредактирован самим пользователем путем введения новою сокращения. Можно изменить и существующее, но это не рекомендуется делить. Фраг- мент файла Acad.pgp показан на рис. 1.9. В левой колонке даны сокраще- ния, в правой — полное имя команды. acad.pgp Notepad Fie Edit Format View Help C. ’CIRCLE CH, ’PROPERTIES -CH. ’CHANGE CHA. ’CHAMFER COI , ’COLOR COlJUR, ’COLOR CO. ’COPY D, ’DIMSTYLE DAL, ’DIMALIGNED DAN, ’DIMANGULAR DBA. ’DIMBASELINE DEC, ’DBCONNECT DCE, ’DIMCENTER DCO, ’DIMCONTINUE DDA, ’DIMDISASSOCIATE DDI, ’DIMDIAMETER DED. ’DIMEDIT DI, ’DIST DIV, ’DIVIDE DLL, ’DIMLINEAR DO, ’DONUT < > Рис. 1.9. Фрагмент файла Acad.pgp с сокращенными именами команд Следует заметить, что в этот файл включены не все команды, а только наи- более часто используемые. Для определения возможности ввода сокращен- ных имен команд или их опций, прежде всего, следует сначала попробовать одну первую букву, затем, если команда не вызывается, вторую и т. д. Даже набор не следующих друг за другом, но ключевых букв может вызвать ко- манду. Например, команда Сору, судя по рис. I 9, должна вызываться соче- танием СО. Но она же вызывается и сочетанием СР. Редактирование можно провести непосредственно в файле или через коман- ду Aliasedit меню Express (Экспресс). Предварительно сохраните копию файла Acad.pgp. Откройте окно AutoCAD Alias Editor (Сокращенные имена) (рис. 1.10). Здесь можно увидеть сокращенные имена команд. Alias в переводе означает "иначе называемый", другими словами — псевдоним. Для команды Line (От- резок), например, "L". Для Move (Перенести) — "М", для Сору (Копиро- вать) — "СО" и "СР". Здесь можно добавить свое сокращение, если оно пока- жется удобней, для тех команд, которые есть в списке, а также вписать команды, здесь отсутствующие. Нажмите кнопку Add (Добавить). Появится диалоговое окно New Command Aalias (Новые псевдонимы команд) (рис. 1.11).
Гпава 1. Создание новых инструментов, “горячие клавиши' 23 AutoCAD Alias Editor „ X Fite Edit Help Command Aliases | Shell Commands AutoCAD commends entered from shortcut I _______________________________________ Allas I AutoCAD Command л | Add C CIRCLE ’ ~ | CH PROPERTIES Bemove I -CH CHANGE CHA CHAMFER ецц CO COPY --------“ COL COLOR COLOUR COLOR CP COPY P Confirm changes QK | Close | Рис. 1.10. Задание сокращенного имени команды через диалоговое окно AutoCAD Alias Editor меню Express New Command Alias Type the alias and its AutoCAD command string into the boxes below Alias: I I 0K I Autcu»11 Command: Cancel 3D 3DARRAY 3DCLIP 3DDISTANCE Рис. 1.11. Диалоговое окно New Command Alias li.itUlifTc и выделите в списке AutoCAD Command (Команды AutoCAD) нуж- ную команду. Ее имя появится в среднем окошке. Если нужной команды и < писке пет, впишите ее вручную в среднее окошко. В поле Alias (Псевдо- ним) впишите сокращенное имя, так называемый псевдоним, и нажмите OK ijieei. и в основном окне. Если в последнем (рис. 1.10) снят флажок ( oiihim tIiiiiircs (Iloniпердиn> изменения), AutoCAD выдаст сообщение, что ирон i прошел успешно. Сели флажок установлен, то будет получен до- iiti'iiii) ir ii.iii.iti uiiipoi лип пол пи р*пения изменений
ft_________ Ike п iMi'iiciiini iioiuiyi n <|> iiIji Acad pep Ian меню 1чpicss ( )кгцр , н< шгружено u наш AutoCAD, ту работу надо проделан, вручную, оцх пактн ровав файл в редакторе Notepad (Блокнот), сохраняя стиль сущее myioninx записей. При назначении псевдонимов следует руководствоваться двумя правилами: 1. Кнопки должны быть под руками, чтобы было удобней их нажимать. Смысловое значение букв на клавишах при этом не так важно. 2. Назначать русские буквы так, чтобы получилось смысловое сокращение, например, КО — копировать. Проделаем это на примерах: 1. Вызов окна Customize (Адаптация). Ранее мы вызывали это окно нажати- ем клавиш <Ctrl> + <Q>. Здесь назначим для этой же команды псевдо- ним QQ. Очень удобно дважды нажать указательным пальцем левой руки клавишу <Q>, а большим пальцем ударить по длинной клавише <8расеЬаг>(Пробел), что равнозначно вводу <Enter>. На компьютере автора часто используемая команда Tedit, дня которой мы сделали кнопку в разделе 1.2, вызывается двойным нажатием на клавишу <l>+<Spacebar> или ПК. Тем пользователям, которые, держат мышь левой рукой, надо придумать свои собственные правила. 2. Команду Сору (Копировать) было бы удобно вызывать сочетанием рус- ских букв КО. Они находятся на тех же клавишах, что и английские бук- вы RJ. Задав это сочетание, можно получить второй вариант, наравне со стандартным СО для английской раскладки клавиатуры, вызова команды копирования. (Речь здесь идет об английской версии.) При вызове команды с клавиатуры не имеет значения положение регистра. Можно набирать как заглавные, так и строчные буквы. Следует заметить, что для вызова команды с клавиатуры независимо от того, полное или со- кращенное имя набирается, надо нажать клавишу <Enter>, или клавишу <Пробел>, или правую кнопку мыши. Исключение составляют команды создания текста. Здесь клавиша <Пробел> функциональна и не может быть использована в качестве <Enter>. Не рекомендуется изменять стандартные сокращения. Помните, что на вашем компьютере может работать другой человек, или вы придете поработать на другую машину. Если удобные псевдонимы присвоить десятку часто используемых команд, чертить станет легче. Придется, однако, поломать голову над тем, как разде- лить популярные команды между двумя способами их ускоренного вызо- ва — "горячими клавишами" или назначением новых сокращенных имен, но это приятная работа, ускоряющая черчение. Постепенно вы найдете опти- мальное решение.
Глава 2 Сохранение настроек меню 2.1. Сохранение установок 1,цн продолжения работы необходимо застраховать себя и AutoCAD от неожиданных потерь. < >i кройте новый чертеж и запишите здесь в текстовом режиме копии всех уже (шдапных команд со своими комментариями. Это удобнее сделать в файле •и ргежа, а не в текстовом файле потому, что в дальнейшем сюда войдут также определения и вставки блоков. Сохраните файл под именем Му Macro.dwg и папке C:\Macro. Надо сохранить также внешний вид экрана и установки, Сложенные в диалоговом окне Options (Настройка). Для этого служит вкладка ГгоП1с (Профиль) в диалоговом окне Options (Настройка), рис. 2.1. ( Замечание * II (В AutoCAD LT 2002 вкладки Profile нет). По умолчанию в списке доступных профилей (Available profiles:) есть только unnii непоименованный (Unnamed profile). Он несет в себе информацию о |скущем состоянии установок, заложенных в диалоговом окне Options (На- । । ройка) и внешнем виде экрана. Сейчас здесь уже установлено несколько попых кнопок. Сделаем так, чтобы вся наша работа отражалась в другом про- филе. Нажмите кнопку Add to List (Добавить) или сочетание клавиш Mt + <L>. Заполните свободные поля в появившемся окне Change Profile (Изменить профиль), как показано на рис. 2.2, и нажмите кнопку Apply & ( lose (Применить и закрыть). Ickci iij рисунке авторский, его можно изменить сейчас или потом, нажав кнопку Rename (Переименовать) в окне (см. рис. 2.1) если выделить соот- нес iiiviomyio строку. II ими- Options (Настройьа) пклЛцки Profile ^Профиль) появилась строка Книга. Hi.uk- пне ее п нажмите кнопку Set Current (Установить) или <Alt> + <С>. Те- перь, refill необходимо, по ш • \ пк ылках окна Options (Настройка) можно вне- । in п iMciiriiiin >iii 11 im« 11* । и 11 hi мм-цу|ся непоименованного профиля (I hniaiiicd piolih1) Проц. i,iiиi io ।.di».11и > io охранить Нажмите кнопку Export
(Эксперт) HUM All I I II lllillllllllllli M< II ОКПГ I ч|1<>|| 1‘iollh ( Il llnpl про фпли) пийдите пипку M.uiu и н пеп inxp.itiiii ilniiii пил пмшем Profilcknigii ng. BepiniL'Cb в профиль lunaiiiid profile (I Icih-iimi-i н мни in i.iii про филь) и удалите (при желании) все сделанные ранее кнопки Дальнейшую рабо- ту будем начинать с вызова профили Книга. Впрочем, если не было специаль- ного задания, заложенного в стартовые установки, в новой сессии AutoCAD текущим является тот профиль, в котором была закончена последняя работа. Рис. 2.1. Диалоговое окно Options, вкладка Profile Рис. 2.2. Создание нового профиля
I II lll.l .!. UOXp.1H НИ H.K >,i '«I M l/«J 27 11 iih icKyuuiM следить iii Поименованный профиль (Unnamed profile), to iiiiriii11и И вид жрана и ytianoiiin AutoCAD вернутся в первоначальное co- t loHiuie. Можно также поменять имя существующего непоименованного профиля (Unnamed profile), сделав его смысловым. Сменные профили удоб- ны, если компьютером пользуется несколько человек или на компьютере |>Ы11олнн10тся проекты, требующие различного набора инструментов. Файл I'lofile Kniga.arg можно перенести на другой компьютер, вызвать его с по- мощью клавиши Import (Импорт) и получить привычные установки и вид о рапа Для этого надо сначала повторить команду Export (Экспорт) на пер- вом компьютере, чтобы освежить профиль. Замечание } Для переноса на другой компьютер созданных вами команд, рисунков на кноп- ках и ряда других дополнительно введенных в AutoCAD данных, переноса про- филя недостаточно. Надо перенести целый ряд других файлов. Работая с этой книгой и с другими источниками, вы будете в этом хорошо ориентироваться. II панке Support находятся четыре важных и имеющих отношение к нашей п"ме файла: At .id шли Ai nd.inns A< id nine A> ail ninr 'I'aiui Acad.mnu представляет собой шаблон меню ACAD. Если этот файл ИПК1О не изменял с момента установки AutoCAD, он сможет восстановить и рио (данный интерфейс AutoCAD. Он же создаст новый файл Acad.mns, ti in последний пропадет по каким-либо причинам. Файл Acad.mns, в свою ||,И|>ец|», скомпилирует новые файлы Acad.nine и Acad.mnr. Именно с этими Гн* исдиими файлами работает AutoCAD, именно их он воспринимает. ||ры соишнии новых панелей инструментов, кнопок и рисунков на них все <||< Hina ароматически записываются в файл Acad.mns и эти же изменения iiipn । .П1НСЯ в файлах Acad.mnc и Acad.mnr. Скопируйте файлы Acad.mns, A* id nine и Acad.mnr в новую папку с именем Acad Origin, которую также iiiiMi't’iiiie и каталог C:\Macro. 11 11. же создайте еще одну папку C:\Macro\My_MNS, куда будете периоди- I. к и помещать и обновлять файлы с указанным расширением и с результа- । iMii ihiiiich работы. Они помогут восстановить интерфейс AutoCAD в слу- iii неожиданных фа i ал иных ошибок или при перезагрузке AutoCAD. Эти * фаппы Ai.iJiims, Acad nun и Ai admnr, если их копии перенести на <й|\н>|| KiiMiii.ioit-p п i.iMi'iiiiii. ими существующие одноименные файлы, пе- iHiir<yi сюда in кнопки, b-».aiiiii.n им Gate обстпенно AutoCAD. Но это ।к кпМ1 пцугн и u (.iii. Ю11...1. при н<' ">n<i iiiMtii iii полной замены сушест-
UVIollH'IO ilHU'|><|i<’(lt ,| К <>< 1.11|l.iIl.lX г>1У111>1\ UV'llllt* < in>11 II >»|clli IIIOI II lolliul пения отряжать n собственном меню, что мы ii'VMUmim il citii in>ix< 11ол роЬпеи о файлах меню Судет сказано и tntine 5 Содержимое папки Macro па жестком диске С на лом папе должно полу- читься, как показано на рис. 2.3. W Macro О5Х File £dl view Favorites Teds Help & у Back Search Folders _j C:\Macro Folders J Desktop ♦ ,.J My Documents - r My Computer ♦ Й 3'AFloppy (A:) ( Local Disk (C:) • _j Documents and Settings 3 GREG О Inetpub _jAcad .Origin д Icons Щну Macrr.dwg sfiprofile.Krtga.arg О Acad.oigln ^jMy_MNS ♦ j Marina n movies ♦. о му Downloads Л CJ MY DRIVERS j My Music - _iOlga • Д Program Files V Qgo Рис. 2.3. Фрагмент окна программы Проводник (Explore) с раскрытой директорией Macro В дальнейшем эта папка будет дополняться новыми материалами 2.2. "Смайлики" Тому, кто уже пробовал создавать свои кнопки, приходилось видеть при за- пуске AutoCAD вместо привычных рисунков на кнопках смеющиеся рожи- цы — "смайлики" (gi (smile, улыбка). Это происходит в тех случаях, когда AutoCAD теряет пути доступа к файлу рисунка. Иногда приходится видеть и другую картину: при последующих запусках AutoCAD после создания новой кнопки появляются одинаковые рисунки на разных кнопках. Здесь произош- ло следующее: у этих кнопок оказалась одна и та же ссылка на файл рисунка.
I I III. < I ПЛ|> l‘ Httn 1и< M. Il/ii 29 Koiiia roinaeieii kiioiik i hi iKpaiie монитора обычно открыт какой-нибудь •upir* )и> МОЖС1 бы и. уже ii.ri.ii ый чертеж, имеющий имя и находящийся и и titre । пои вам папке, либо новый чертеж с именем Drawing I.dwg. При на- АП111П кнопки Save As (( охранить как) в окне Button Editor (Редактор кно- пок) файл рисунка кнопки сохраняется в папке C:\Macro\lcons, a AutoCAD iiiiiomu1 пиески создаст и сохранит копию этого рисунка в одной из трех ди- |х мории: C:\Macro\lcons, AutoCAD 2002 (если открыт новый чертеж), или и директории уже поименованного чертежа. Файлу рисунка при этом при- । напвается имя, например lcon6330.bmp. Логика, по которой файлу рисунка iiaeicH номер, известна только программистам Autodesk. По-видимому, этот помер зависит от расположения панели и места в ней, где размещена кноп- ки Но ясно, что выбор номеров ограничен. Можно заметить, что иногда AuioCAD присваивает один и тот же номер разным рисункам. Но если, на- пример, в директории AutoCAD 2002 этот номер уже существует, вместо из- менения только что выбранного номера, AutoCAD помещает файл рисунка и поддиректорию Support. Иногда образуются сразу две копии рисунка, и они попадают в две разные директории. Если вы экспериментируете । кнопкой, например, создаете ее, а потом удаляете и на ее место устанав- ливаете другую, AutoCAD может дать сбой. Вероятно, есть разные причины пропажи или замены рисунка. При нажатии кнопки Save (Сохранить) окна Button Editor (Редактор кно- пок) (без Save As) происходят те же самые процессы, только в этом случае пп файл рисунка, ни его номерная копия заведомо не попадают в папку <' \Macro\Icons. ^повременно с нажатием кнопки Apply (Применить) окна Customize (Адап- hiinui) AutoCAD делает новую запись со сведениями о новой кнопке в фай- >|| Acad.inns (для LT-версии в файле Aclt.mns). Откройте копию этого фай- iiii, которую мы записали в начале этой главы. Это большой, более I Ч) Кбайт, текстовый файл. По умолчанию он открывается в редакторе Notepad. Здесь надо найти абзац со сведениями о новой панели (Clipboard). 'Iio(ii.i наши нужное место, используйте функцию Find (Найти) из меню Edit (Правка) или <Ctrl> + <F>. Наберите слово clipboard в окне Find (Hau hi), и вы должны увидеть то, что показано на рис. 2.4. П< ред именем панели на рисунке можно увидеть приставку "IV". На самом iiriic опа появится позже, в разделе 3.6. Три нижние строчки здесь представ- iiiioi снедения о трех кнопках этой панели: I < ору with Base Point — Кон пропить с базовой точкой; 11 1‘iiste as Block — Bciaiuin. i ik блок, Г1 Paste to Ori'piial ( noidiuutr H< ihiiih. n ic же координаты
30 Ч.Ч lb I I II •]' 1 >1 НЦк Ч' •«>. < *> M ’Ни • tHJJIbJfCHilll 1ЛЯ t V-Macro.mni Nottpad tie Edit Format yiew tfdp **1V CLIPBOARD **TB_1V-CLIP BOARD ID_lv_clipboard_0 [-Toolbar C‘lv-clipboard", -Floating, aide, 714, 359, 1)] ID_Copybase_0 [-Button("Copy with Base Point", "ICON6334.BMPf, "b_ON_16_BLANK")]ACA ID_Pastebloc_0 [-Button("Paste as Block", "ICON4464.bmp", "ICON_16_BLANK")]ACAC_past ID_Pasteorig_0 [-Button("Paste to Original Coordinates1', "ICON844 5.bn,p , r,IC0N_16_BL < > ....................................... ...... - .............. ...............-..... Рис 2.4. Фрагмент файла меню V-Macro.mns. AutoCAD задает номерные имена файлам рисунков на кнопках Следом за названием кнопки (это та самая запись, которая появляется при приближении курсора мышки к кнопке), показана ссылка на имя файла ри- сунка: Icon6334.bmp Icon4464.bmp lcon8445.bmp Далее в строках следует ссылка на размер кнопки и собственно код коман- ды, который начинается за закрытой квадратной скобкой, поэтому на ри- сунке не поместился. Как видно, здесь не прописаны пути к файлу рисунка, дано только имя файла. Пути прописаны в другом месте. Откройте окно Options (Настройка)на вкладке Files (Файлы] Дважды щелк- ните по верхней строке списка Support File Search Path (Путь доступа к файлам поддержки). Список раскроется и покажет четыре папки, где хра- нятся файлы поддержки: Support Fonts Help Express (если он загружен) Сюда, а также в главную директорию и в директорию текущего чертежа и заглядывает AutoCAD, выискивая имена файлов кнопочных рисунков. Если нужное имя не найдено, на кнопке появляется "Смайлик”. Если одинаковый номер оказался у двух разных кнопок, обе получат одинаковый рисунок. Из всего сказанного следуют два важных вывода: 1. Надо добавить к списку директорий с файлами поддержки папку с име- нами сделанных нами кнопок, т. е. C:\Macro\Icons. 2. В файле Acad.mns следует заменить номерные имена кпоног на спои. После этого можно разыскать и удалить все номерные имени фай юн рисун- ков во всех директориях, где они могут находи и* л
I /ШН.< G'Oa I Mi If M- Hh> 31 (обииить пинку ( \M u iox1<<>hs cjiejiyci гак: откройте окно Options (Настрой- i) па вкладке Piles (‘I'.iiriu) Раскройте список поддерживающих директорий. |1омсп>те нижнюю проку и нажмите кнопку Add (Добавить). Появится новая пока пустая строка Нажмите кнопку Browse?(O63op) и раскройте папку Много, а в ней Icons, после чего нажмите кнопку ОК. На своем экране вы yiiiiniiie то, что показано на рис. 2.5. Еще раз нажмите кнопку ОК. Option* Guppon File Search Path « urront profile Книга Current drawing: Drawing 1 dwg t J Display | Open and Save | Plotting | System | User Preferences Drafting | Selection j Profiles | Search paths, file names and file locations: Browse.. - r C\Program FilesVXutoCAD 2002\support - r C \Program Files\AutoCAD 2002\fonts Add... - v CAProgram Files\AutoCAD 2002\help - r CAProgram Fiies\Au(oCAD 2002\express - r CAMacroMcons * ft orkmg Support File Search Path * ft vice Driver File Search Path ♦ Q Prqect Files Search Path * (J Menu Help and Miscellaneous File Names • Q Text Editor, Dictionary, and Font File Names ! ♦ (j Print File Spooler, anJProlog Section Names i (j Printer Support File Path ♦ ft arch Path for Ob jectARX Applications * ft tometic Save File Location * ft ta Sources Location • ft awing Template File Location < ft File Location v iiecify the folders in which AutoCAD should look lor text fonts, menus, plug-ins drawings to insert hnityplt and hatch patterns th at are not in the current folder OK | Cancel ||He Рио. 2.5. Диалоговое окно Options. Раскрыта директория с файлами поддержки Откройте оригинальный файл Acad.mns, найдите в нем абзац, относящийся к шик ли инструментов (Clipboard) и аккуратно замените: 1 It (>и6 I34.bmp на Copybase.bmp; I Iron I IM bmp на Pasteblock.bmp; I L он84 IS bmp на Pasteorigin.bmp. Инрочем, номера в именах у нас с вами могут не совпадать. Имена файлов pin MiKoii шеек должны в точности совпадать с именами файлов в папке I М K io\lcoiis । 'it nyi । ntiM11и11>. 4io файл i|n>pMaia biiip ik должен иметь длинное имя: Il । HMito'loil UKiiioM.iM lipol 'HI пец) npeneu
'/(ft lb t /*>'< |Г ИЛЛ И INI.' l|Ki|IH.1 лил» ••••( Л<*№> <|>>/1|. Iiw.llri Ш Для удаления ciniiiiiiix leiicpi. ненужными номерных <|><iinii>ii pin \ икон надо уметь быстро нросм<нрнн.н1> все фа илы, нс открывая их. Для ною надо вы- знать программу Проводник (Explorer). Здесь поочередно просмшриге ди- ректории, где могут храниться эти файлы: П C:\Macro\ Icons; П AutoCAD 2002; П AutoCAD 2002\Support; П Директории чертежей, которые были открыты при создании кнопок. Если на компьютере установлен Windows 98, в выпадающем меню Вид (View) надо выбрать As Web Page (Как веб-страница). Помечая далее пооче- редно файлы с расширением bmp, слева от списка файлов можно увидеть маленький рисунок — имидж. Если на вашем компьютере установлен Windows 2000 или Windows ХР, то в меню Вид (View) надо выбрать Thumbnails (Эскизы страницы). В списке файлов появятся маленькие рисунки всех файлов. При необходимости изменить существующий рисунок на кнопке вызовите диалоговое окно Customize (Адаптация), затем щелкните ЛК на кнопке и зайдите в диалоговое окно Button Editor (Редактор кнопок) (см. рис. 1.5). Откройте (Open) искомый файл, внесите изменения и нажмите кнопку Save а8(Сохранить как). AutoCAD вернулся в папку Icons, и здесь нажмите Save (Сохранить). Появится предупреждение о том, что файл с таким именем уже существует. Нажмите кнопку Yes. Рисунок обновится, *сохран и в свое преж- нее имя. ( Совет } Как скорая помощь в борьбе со "смайликами", в некоторых случаях помогает переустановка файлов Acad.тле и Acad.mnr. Закройте AutoCAD и удалите эти файлы. Предварительно сравните даты их создания с датой последнего сохра- нения файла Acad.mns. Файлы Acad тле и Acad.mnr не должны быть старше, чем Acad.mns. Если это все же произошло, то при перезапуске удаленные файлы обновятся и рисунки восстановятся. В главе 5 этот вопрос будет рас- сматриваться более подробно.
Г лава 3 Макрокоманды для редактирования объектов и... панелей инструментов 3.1. Copy-Edit |дя написания короткого текста в разных местах чертежа есть два способа: I Создать текст с помощью команд Text (Текст), Dtext (Дтекст) или Mtext (Мтекст). 2 Скопировать уже имеющийся текст командой Сору (Копировать) и напе- чатать вместо него новый, используя команду Edit Text (Редактирование текста). • I ели бы удалось объединить обе команды. Сору (Копировать) и Edit Text (Редактирование текста), в одну, второй вариант стал бы предпочтительнее: меньше щелчков мыши, сохранение текстового стиля, сохранение слоя, и котором находится текст-оригинал. Это и будет целью нашей первой са- модельной команды. Начнем с того, что выполним серию из двух команд обычным способом и I.IHII1IICM все шаги по их исполнению в табл. 3.1. Для этого приготовьте одну t |року любого текста, лучше однострочного. Таблица 3.1. Комбинация команд копирования текста и его одновременного редактирования Шаг Действие Запрос AutoCAD I Команда Сору (с клавиатуры) ПК или ?, вводящий команду в работу Select objects: Выберите объекты: .1 ПК по приготовленному тексту- прототипу 4 ПК п<|ДП1><ржд.1ГМ чм иыбчр окончен
М Чм>ь I Н|НЩА.Ч>. I И Н Ч НЧМ II..I М 1th I Таблица 3,1 font тчании) Шаг Действие Запрос AutoCAD Specify base point...: Базовая точка 5 ЛК в районе текста ...Specify second point of displacement...: ....Вторая точка перемещения.. 6 ЛК в том месте чертежа, где надо разместить копию текста 7 Команда Ddedit с клавиатуры 8 ПК или ?, вводящий команду в работу Select an annotation object...: Выдели объект-пояснение...: 9 ЛК по копии текста-прототипа Появляется окно Edit Text 10 Редактирование текста 11 ЛК по кнопке ОК или ? » Select an annotation object ...: Выберите объект-пояснение.. 12 ПК или ?, сообщающий AutoCAD, что работа окончена В нашем случае для выполнения серии из двух команд потребовалось 12 шагов. Шаги 1 и 7 — это ввод команд Сору (Копировать) и Ddedit (Диал- ред), шаги 3, 5, 6, 9 являются щелчками ЛК для выбора объекта или началь- ной и конечной точек его перемещения. Шаги 2, 4, 8, 11, 12 — это щелчки ПК или ЛК по кнопке ОК, что в любом случае соответствует <Ешег>. Таким образом, необходимо иметь всего три символа, имитирующие эти 12 шагов, и записать их в правильном порядке: 1. Первый символ — имя команды. 2. Второй символ — для имитации <Enter>. 3. Третий символ — для ручного ввода данных. Вызовите окно Customize (Адаптация), вкладку Commands (Команды), затем — User defined (Пользовательская) и User Defined Button (Пот.юва-
I nM.uyi>< ц«и)<*>phuif.м/м htuu и. пан й инструментов 35 H'lii.cKiiji кнопки) IIpii«niinii Лк мыши переместите кнопку в ту панель ин- (|рум< Пюи, rue у*, is и, кнопка Edit Any Text, и щелкните по ней левой кнопкой мыши Теперь перед нами окно, изображенное на рис. 1.4. В поле Niiniv (Имя) дайте имя команде: Copy-Edit. Поле Description (Описание) пропускаем. В дальнейшем, когда освоим команду, можно к ней вернуться, loitiiiniB комментарий. ' |||полняем поле Macro associated with this button: (Макрос для данной кноп- ки). Продолжаем имеющуюся строку лсАс, добавив символ подчеркивания " ” и слово сору (без пробела). Нажмите кнопку Apply (Применить) и про- верьте, работает ли команда. Убедившись, что работает не хуже, чем стан- дяргпая команда Сору (Копировать), возвратитесь в диалоговое окно < ustomize (Адаптация) и продолжите строку: <,АС_Сору; \ ; Первый символ ";" эквивалентен <Enter>, это наш шаг 2. Символ обратная koi ая черта " \ " эквивалентен паузе для ручного ввода данных при помощи 4 К или клавиатуры, это наш шаг 3. Второй символ " ; " опять соответствует нажатию <Enter>, это наш шаг 4. Па этом временно закончим строку. Вернемся в чертеж (нажав Apply (При- менить)) и убедимся, что теперь AutoCAD запрашивает базовую точку пере- мещения, т. е. требует сделать шаг 5. Пойдите снова в окно Customize (Адаптация) и продолжите строку. Для на- iчинности представим код команды в виде таблицы с привязкой к шагам 11,|6л. 3.2). Таблица 3.2. Создание кода комбинированной команды Сору и Ddedit Шаг # 1 2 3 4 5 6 7 8 9,10 11 Ч’ЛС Сору \ 9 \ \ Ddedi t 5 \ 9 liieci. записаны уже 11 шагов. Проверьте команду и убедитесь, что все рабо- |.к-1 правильно. Шаг 12 не понадобился, так как шагом 9 мы задаем системе AinoCAD только одну обратную косую черту, и AutoCAD понял, что запраши- 11.111. редактирование другой строки не требуется. (Команда Ddedit (Диалред) го- Ю11.1 обработать столько текстовых объектов, сколько надо чертежнику.) ) in контроля работы команды прочитайте в окне AutoCAD Text Window (IcKcionoc окно AutoCAD), которое появляется при нажатии кнопки <F2> пл клавиатуре, как сработала команда. Теперь подсчитаем количество щелч- । он мыши, включая щелчок ЛК по новой кнопке. Получилось 6 щелчков. Попробуете сделать >iy же операцию двумя стандартными кнопками Сору (Копирован,) и Ddudit (Диапрсл) Помучается 9 щелчков. Сэкономили три UK '1ЧК11 Но НО CHIC IICOOIII.IIIHII llolx’ll.l
ttl Ч 4 lb I )'ч if »/». kwh К Mi HnM.ll i| . к. 'К». 0*11111 III I.UI.I4 llpol pilMMIU 1.1 <011014 II loM, чтобы ВЫЙТИ III kOlll 4111.111 pc iyii.1 и наиболее коротким путем Ишнда ради экономии одного щелчка мыши ||рпкод|||ся мною paboi.ni. и д«же менять алгоритм программы Мы бул м п< ipi-ч.нься с такими моментами постоянно. llop.itxH.u-м над кнопкой еще. Ill и 5 выбор базовой точки копирования. Для текста, как правило, эта 1очкя янляс1ся случайной и не требует точной привязки. Хорошо бы совмес- ти. би юную точку с той, где мы первоначально выбрали объект шагом 3. Ко- орлнн.ны последней точки, где вы щелкнули ЛК в поле чертежа, запомина- |<н<я и системной переменной Lastpoint и могут быть выведены в чертеж при помощи символа @. Проверьте это на простом примере. Командой Rectang (Прямоуг) начертите прямоугольник. Возьмите команду Line (OipejoK), в качестве первой точки введите @ и нажмите <Enter>. Ли- ния начнется точно от второго (последнего) угла только что выполненного прямоугольника. Символ @ можно использовать и в практическом черче- нии когда необходимо использовать последнюю точку. Гсисрь код команды можно усовершенствовать: г< >ру ; \ @ ; \_Ddedit; \ ; [3-1] Итак у нас получилось 5 щелчков на совершение всей работы и очевидно, ин» еще один щелчок лишний — это выбор объекта для редактирования. Как сообщить AutoCAD, что редактировать надо именно тот текст, который мы только что скопировали, и никакой другой? Для этого’есть ряд опций команды Select (Выбрать), позволяющие выбрать объект разными способами: W1ndow/Last/Crossing/Box/All/Fence/Wpoligon/Group/Add//Reinove/Multiple/ Irevious/Undo/Auto/Single 1’амка/Последний/Секрамка/Бокс/Все/Линия/РМн-угол/Группа/Добавить/ Исключить/Нссколько/Текуший/Отменить/Авто/Единственный 'Замечание ) Команда Select (Выбрать) является как самостоятельной командой, так и со- ставной частью тех команд, которые начинаются с выбора объектов. В русской версии AutoCAD опция Previous переведена как "текущий". Правильный пере- вод слова Previous - "предыдущий". Мы вернемся к этой опции немного позже и в дальнейшем будем использовать правильный перевод опции на рус- ский язык, давая его в скобках. Потому что это соответствует ее сути: опция Previous выделяет набор элементог выбранный предыдущей командой. 11<>лроС>п<> обо всех опциях можно прочитать в системе помощи Help в раз- ие в- Select command (Команда Select) или в литературе. Мы будем использо- ван. некоторые in них, в нашем случае опцию Last, т. е. последний объект. I сип iimi-cio последней обратной косоп черты, символизирующей выбор
I /i.iii.i 3. Макросом. 111ДЫ длч /h 'i чччрии^ния объектов и... панелей инструментов 37 iH»i,cKia редактирования, нпс1авить Last, AutoCAD поймет, что речь идет о Последнем объекте, с которым он работал лС_Сору; \ ; @; \__Ddedi t; _Las t; ; [3-2] (сверь для выполнения команды требуется всего четыре щелчка ЛК! В дальнейшем, когда мы продвинемся вперед и познакомимся с основами я <ыка LISP, мы вернемся к этой команде и еще немного усовершенствуем ее. (Замечание j Знак подчеркивания должен предварять каждую команду или опцию, если используется иностранная (не английская) версия AutoCAD. Степень русифи- кации AutoCAD может быть различной. Если в командной строке выводится английский текст, то можно обойтись без этого специального знака и команды будут выполняться. Но они не будут работать при переносе на компьютер, где установлена версия с командной строкой по-русски. Вместо полного имени команды можно записывать ее сокращенное имя, аббревиатуру. Вместо Сору — Ср, вместо Ddedit — Ed, вместо Last — L. Полный список сокращений можно найти в системе помощи Help, в разде- ле Aliases for commands, table listing of, или в файле acad.pgp, находящемся в н.п 1ке Support. Здесь же можно добавить свое собственное сокращение име- ни команды, а если вы используете систему AutoCAD 2002 и есть меню I' \press (Экспресс), то же самое можно сделать в соответствующем редакто- ре команды Aliasedit (Редактор псевдоимен команд). Не рекомендуется включать собственные сокращения в код команды. На другом компьютере они не будут работать. И |дк, получаем окончательный код команды Copy-Edit: лС_Ср;\;@; \_Ed;_L;; [3-3] Впрочем, сокращать имя команды не обязательно, разве что код вашей ко- манды такой длинный, что приходиться экономить место. В дальнейшем мы будем придерживаться такого правила: сначала будем ставить полное имя команды или опции, начиная с заглавной буквы Затем те команды, к кото- рым уже привыкли, будем записывать сокращенно. Это даст возможность после перерыва в работе легче вспомнить идею, заложенную в макрокоман- де А возвращаться к старым командам нам придется постоянно. Поэтому дня сохранения в архиве (C:\Macro\My Macro.dwg) лучше выбрать код [3-2]. 1,о(>апые теперь к кнопке рисунок, например, или, если у вас есть ху- К1Ж<ч гвенпый вкус, настоящую пиктограмму и сохраните ее в директории ( \M.icio\Jcons под именем Copy-Edit.bmp. Команду < «»|>У Edit можно пепоныопать и с многострочным текстом, а так- • г для простого копировании пе|ем'ювых одиночных объектов, если точное 11О1о4‘ни< ь.иопон ючм1 н< iprbyrгея При >юм экономятся два щелчка мыши
JH Чл1 н. I I'lt 7» >По»к и н.п Iii< 4>ю1 mom.iivi A».-•.« Ml i» hwiMih у Совет J При создании рисунка на пиктограмме не употребляйте светлые тона Хорош!» видны черный, бордовый, красный, синий и темно-фиолетовый цвета Чтобы ос- ветлить фон или создать контрастные каемки вокруг темных элементов, исполь- зуйте белый цвет. Вызовите существующие стандартные пиктограммы и внима- тельно их рассмотрите. Здесь есть свои шедевры, например, Edit Attribute Для русской версии AutoCAD можно вести запись последовательности мак- рокоманд на русском языке. В этом случае не требуется ставить знак под- черкивания перед именем команды. Эта же команда Copy-Edit будет ра- ботать, если ее код записать так: ЛСЛСКопировать;\@; \Диалред;Последний;; [3-2а] Команда будет работать даже в том случае, если перемешать русские и анг- лийские слова. Перед английским именем в этом случае следует поставить знак подчеркивания. ( Замечание ) При любой степени русификации AutoCAD его ядро остается английским Если перед английским именем команды поставить знак подчеркивания, а затем точ- ку (_•). то команда будет извлечена из самого ядра и сработает правильно в любом случае. В дальнейшем мы будем использовать только английские имена команд и опций. • Список символов, которые применяются при составлении макрокоманд, дан в Приложении 2. 3.2. Изменение величины объектов Иногда приходиться изменять размеры объектов, разбросанных по всему чертежу, на одинаковую величину, т. е. менять их масштаб. Например, вы работаете с планом здания, имеющего горизонтальные и вертикальные оси по колоннам и символы с названиями осей, представляющие собой буквы и цифры в окружностях (рис. 3.1). Чертеж, полученный от архитекторов, оказался выполненным в мелком масштабе и не подходит для нанесения ваших коммуникаций или расста- новки оборудования. Приходится укрупнять масштаб видового экрана (Viewport), и при этом все внемасштабные символы, включая наименования осей, оказались большего, чем хотелось бы, размера. Вы намерены умень- шить каждый символ в 1,5 раза. При использовании стандартной команды Scale (Масштаб) это будет немалая и скучная рутинная работа, которую нам предстоит автоматизировать.
lii.u i । объектов и.. панелей инструментов 39 Рис. 3.1. Сетка осей условного плана здания Но сначала вручную "проиграем" на клавиатуре наши действия. При этом предположим, что символ не блок, а два примитива (окружность и текст), и •ио нужный режим объектной привязки (OSNAP) — Quadrant (Квадрант), пли Intersection (Пересечение), или Endpoint (Конточка) — уже выбран. Таблица 3.3. Подготовка кода команды Scale с заданным коэффициентом масштабирования Шаг Действие Запрос AutoCAD 1 Команда Scale (Масштаб) с клавиатуры 2 ПК или ? Select objects: Выберите объекты: 3,4 Двумя щелчками ЛК выбираем оба объек- та, принадлежащих символу В ПК или ? Specify base point: Базовая точка в ЛК в базовой точке, те. в точке, где соб- ственно ось берет начало от окружности Specify scale factor...: Масштаб...: 7 Задаем ко >ффици< иг изменения масшта- ба 0 Ь6 И 11К или '*
40 ti I I'm i(i < и йЫ' i/i.iiI/i цчм ч1д М и- i ниц* * .1 .иаюлч Код КОМ.1ПДЫ CJIС ДУ С I ИЗ I.НИППЫ IIUIIPII (I inn I D 1ЛО/1ИН.1 1.4 ( i чданис кода команды Scale с заданным ho (ффицм нтом масштабирования Шаг 1 2 3 4 5 6 7 8 лС~С Scale ; \ \ ; \ .66 ; Создайте новую кнопку под именем Change Scale (Изменить масштаб). Ри- сунок для нее можно сделать на базе существующей пиктограммы для команды Scale (Масштаб) с добавленной горизонтальной стрелкой [.^Д. Со- храните файл рисунка в папке C:\Macro\Jcons. Этой кнопкой мы открываем новую панель инструментов, которой дадим имя в конце главы, когда будет виден результат нашей работы. В поле Macro associated with this button: (Макрос для данной кнопки) запи- сываем: лСлС_Зса1е;\\; \ . 66; |3-4| Проверьте работу кнопки. Не забудьте, что надо щелкнуть ЛК мыши три раза: два раза для выбора объектов и один раз по базовой точке В установ- ках режима объектной привязки (OSNAP) должны быть заранее поставлены нужные флажки. . Хорошо бы сделать так, чтобы команда могла работать, возобновляясь авто- матически, последовательно изменяя объект за объектом. Для многократ- ного повторения команды служит знак " * ", поставленный перед кодом команды. *лСлС_Зса1е;\\;\.66; [3-5| Примечание • Чтобы прервать цикл находящейся в процессе команды и выйти из нее, на- до нажать клавишу <Esc> или взять любую другую команду. • Команда Pan Realtime (ПАН в реальном времени), работающая в прозрач- ном режиме, при работе с кнопками, запрограммированными на цикличе- ский режим, автоматически заменяется командой -Pan (-Пан). Попробуй- те набрать в командной строке -Pan ? (со знаком "-"). Вместо курсора- ладони, двигающего чертеж, AutoCAD предлагает указать первую (базовую) и вторую точки перемещения. Так работал AutoCAD в ранних версиях, пока не появилась команда Pan Realtime (ПАН в реальном времени). • Команда -Pan (-Р) имеет одну важную особенность: она поддерживает ре- жим ортогональности. Это позволяет сдвинуть поле чертежа на заданное расстояние под прямым углом, если режим ORTHO (ОРТО) установить в со-
/<ышг M-in >тп i if*. । itt/м млю/ч t иы p n.v, л й инс/рументов 41 ггонни On (Пни) I «ни и< цопь.ювать режим POLAR TRACKING (Полярное огсл0Жиым1иф), к> можно «двинуть чертеж и под другим заданным углом. Дожи начерчфнн in под уиюм вспомогательная линия может послужить на- правлением дни <движки чертежа, если использовать привязку Nea (Бли- жайшая). Зад<111<н ь росстояние сдвижки следует вводом его с клавиатуры. • Многие команды можно использовать в циклическом режиме. Введите в ко- мандной строке Multiple ?, а затем напишите в командной строке, напри- мер, Move. Команда будет возобновляться автоматически, пока не произой- дет нажатие клавиши <Esc>. До сих пор щелчок ПК или <Enter> мы имитировали в коде команды зна- ком " ; " — точкой с запятой. AutoCAD предоставляет нам еще два символа и in лого: ЛМ и нажатие клавиши <Пробел>. Попробуйте заменить символ " " па ЛМ, например, и убедитесь, что команда работает. А теперь удалите последний символ " ;" (или ЛМ), т. е. шаг 8 в коде [3-4]. Команда работает ► лк пи в чем не бывало. Оказывается, если строка команды оканчивается на побои символ, кроме " \ ", " ;", " + " или специальный значок " Л ", за ко- inpi.iM следует буква, в нашем случае ЛМ, то AutoCAD автоматически добав- iiiri в конце строки пробел, равнозначный <Enter>. У нас строка заканчи- jimcicb цифрой 6, которая не входит в перечисленные исключения, поэтому и появится пробел. Убедитесь в этом: закройте и вновь откройте окно < nstoniize (Адаптация). Щелкните ЛК по полю Macro associated with this Inillon: (Макрос для данной кнопки) и увидите, что курсор появился за цифрой 6 на расстоянии пробела. Мы будем пользоваться этой особенно- । п«ю в своей дальнейшей работе. В некоторых случаях, например, при тес- I пронации незаконченных команд, знак " ; " или заменяющий его пробел in1 желательны. Если в конце кода поставить символы Л7, то невидимый пробел за ним не последует. < Окончательно теперь код команды будет выглядеть так: -Scale;\\;\.66 [3-6] По делать кнопку и к ней рисунок для разовой работы непрактично. (Хотя и 1|>1иы1сйшем мы будем создавать и временные кнопки). Чтобы эта кнопка । । in.) универсальной, всего-то надо перед каждой рутинной операцией по и (мспению масштаба объектов заменить коэффициент .66 на необходимый ''in конкретной работы. Это пятисекундная операция. Продолжение Серии кнопок с аналогичными постоянно-временными функ- циями шклелусг ниже, и мы их все позже сведем в вылетающую панель, чк>|>1«1 она не laiinMiuia мс< га па экране
3.3. Изменение угла поворота объекта Эта команда, как следует из ее названия, повернет каждый выбранный объ- ект на угол, величина которого задана в коде команды. Продолжим начатую кнопкой Change Scale (Изменить масштаб) панель ин- струментов, добавив к ней следующую кнопку. Код команды совершенно аналогичен коду Change Scale (Изменить мас- штаб) за исключением названия базовой команды: вместо scale (Масштаб) пишем Rotate (Повернуть). *''C''C_Rotate;\\;\90 [3-7] Здесь записан условный поворот на 90° (если в качестве единицы измерения углов выбраны десятичные градусы). При необходимости цифра 90 меняется на соответствующую, в том числе со знаком (—) минус. В таблице шагов 3.3, составленной для команды Change Scale (Изменить масштаб) и примененной для команды Change Angle (Изменить угол), мы выбираем объект двумя щелчками ЛК, соответственно в коде команды стоят две обратный косые черты (Backslashes) подряд. Это означает, что для выбо- ра объекта, даже одиночного, используется либо рамка, либо два отдельных щелчка ЛК. Сопутствующие системные переменные Есть две системные переменные, управляющие режимом селектирующей рамки. Pickauto. Если ее значение равно 0, рамка не появляется. Объект можно вы- брать только одиночными щелчками. Если значение Pickauto равно 1, можно пользоваться комбинированным способом выбора: одиночными щелчками и рамкой. Pickdrag. Если ее значение равно 1, при выборе объекта рамкой надо держать прижатой ЛК мыши. Если ее значение равно 0, рамка появляется и исчезает при одиночных щелчках ЛК. Можно сделать так, чтобы объекты выбирались комбинированным использова- нием рамки и индивидуальных щелчков, а выбор заканчивался щелчком ПК. Проведем эксперимент. Начертите два коротких отрезка командой Line (Отрезок). Введите команду Erase (Стереть), затем Last (Последний) или L и нажмите <Enter>. Вы увидите, что второй отрезок выделился для после- дующего удаления. Нажмите <Esc>. Теперь введите команду Select и (Вы- брать) и пометьте первый отрезок, затем нажмите ПК. Опять введите ко- манду Erase (Стереть) и опцию Previous (предыдущий) или Р. Выделится первый отрезок, ранее помеченный командой Select (Выбрать). AutoCAD запрашивает, что еще вы хотите удалить. Наберите L. Второй отрезок также выделится. Нажмите <Enter>, и оба отрезка удалены. То есть объекты, пред- варительно отмеченные командой Select (Выбрать), запоминаются системой
Iлава 3. Макрокоманды ДЛ" р.^актирования объектов и... панелей инструментов 43 кик Previous Selection Set (предыдущий набор объектов). AutoCAD держит их в своей памяти, пока не последуют команды Erase (Стереть), Move (Пе- ренести), Сору (Копировать) и т. д., связанные с изменением какого-нибудь объекта. Мы будем широко пользоваться этой короткой памятью AutoCAD, а сейчас применим это обстоятельство к модификации команды Change Angle (Из- менить угол). Нарисуйте несколько прямоугольников. Теперь проиграем действия на кла- виатуре (табл. 3.5). Таблица 3.5. Подготовка кода команды Rotate с заданным углом поворота Шаг Действие Запрос AutoCAD 1 Команда select (Выбрать) с клавиатуры 2 ПК или Д Select objects: Выберите объекты: 3 Любой комбинацией способов выбора помечаем объекты1 « 4 ПК или Д подтверждаем, что выбор закончен I Команда Rotate (Повернуть) с клавиатуры 1 ПК или Д Select objects: Выберите объекты: 7 Опция Previous (или р) ‘ ПК или Д О ПК или Д подтверждаем, что выбор ограничива- ется предыдущим набором объектов Specify base point: Базовая точка: 10 Выбираем базовую точку для вращения Specify rotation angle Угол поворота...: ~ ' ...................... .... ... । ' — 1 Hi.iiio mini in.ii .3, можно iKTio'ihioii.iib । ikiic опции команды Select, каг Remove (R), h‘>u>|Mii по пинии i yi.uinib <у'ы11н<| uixi(.i'ii*iiiii>iii объект (то же можно сделать и 1м»>|ц|гм ЛК по iiiiiiiiIi'mv оти.гпу । приж.ной клаиишей <Shift>), или Add (А)— inliKlIIHI. Illtill 11,1(1 otil.i'kl
44______________________Часть (. Разработка и настройка команд. Меню пользователя • Таблица 3.5 (окончание) Шаг Действие Запрос AutoCAD 11 Вводим угол, на который надо повернуть объект, например, 90°, с клавиатуры 12 ПК или Д Запишем теперь код команды (табл. 3.6). Таблица 3.6. Создание кода команды Rotate с заданным углом поворота Шаг 1 2 3 4 5 6 7 8 9 10 11 12 лс~с Select 9 I Rotate 9 P f 9 \ 90 J Здесь пропущен шаг 4, так как мы его выполним вручную в процессе рабо- <ы команды. Окончательный код команды получится, если добавить "*" для многократного повторения вначале и убрать последний знак ” ; ", так как пробел, эквивалентный этому знаку, появиться автоматически. *'’G^C_Select;\_ Rotate;Р;;\90 [3-8] Какой же вариант команд Change Angle (Изменить угол) и Change Scale (Изменить масштаб) выбрать? Здесь все зависит от конкретной задачи чер- чения. Команды были задуманы для работы с многочисленными маленьки- ми и компактными объектами, для которых предпочтительнее первый вари- ант — с двумя щелчками ЛК и автоматическим вводом <Enter> без нажатия ПК. Что касается выбора вручную, мы применим наши знания в дальней- шей работе. 3.4. Изменение угла и цвета атрибута блока 1 ели к блоку с атрибутами применить команду Rotate (Повернуть), то атри- буты развернутся вместе с блоком, а текст атрибута примет неправильное, плохо читаемое положение. Между тем, в тех случаях, когда атрибут относи- тельно короткий, можно безболезненно его развернуть в горизонтальное положение. Например, при вычерчивании схемы электрических соединений автору понадобилось вставлять в разных местах блоки, показанные на рис. 3.2, причем в разных положениях. )io обошачение переключателя, который служит для перевода нагрузки (I oad) из режима рабочего питания (Normal) на резервное (Emergency). |>ыли поставлена задача: как сделать это наиболее простым способом. Соб- cinritiio, рассматривались только два варианта: J Приготовить 8 отдельных блоков для каждою положения переключателя и iiiiioMiinib ( ШН11С.ПI. in бумаге и приклсиiь к римке монитор*) их им -па
I imm J I'^iu мнIHP<W<IHW< i >ОЫ’Юоо и пан^Л! и инструментов 45 llpiiioioiiiin. пи to они!» (<||ок с гремя атрибутами, вставлять его в нужное меси», рл iiiop.i'iiiiiuiь иод нужным углом, при необходимости зеркалить и рсд.»К1 ирона । ь агрпбуты и затем разворачивать атрибуты, придавая им го- ри юптальное положение. Попробуйте повернуть атрибут, продираясь через лес опций стандартной команды Attedit (Атред) или командой Eattedit (Атредакт) (для системы AutoCAD 2002 это двойной щелчок ЛК по атрибуту) — и вы почувствуете, чю надо что-то предпринять для облегчения своей работы. I ели бы удалось развернуть атрибут одним щелчком ЛК, второй вариант । ыл бы предпочтительнее. Попробуем это сделать. Начнем с попытки использовать команду Eattedit (А|редакт). При вызове команды появляется диалоговое окно Enhanced Attribute Editor (Редактор атрибутов), что нас совсем не устраивает. Увы, мы можем работать только с командами, которые можно вызывать, пользуясь исключительно командной строкой. hn> некоторые исключения, например уже освоенная нами команда < upy-Edit. Но в этом случае появляется редактор текста, который нам необ- ходим. Тем не менее, есть средство, подавляющее вывод на экран диалого- iioio окна. Это знак " перед вводом команды. Попробуйте вызвать команду liiwrt (Вставить) с клавиатуры. На экране появится стандартное диалоговое окно вставки блока. А теперь напечатайте -insert, и вы увидите в команд- lion строке приглашение AutoCAD назвать имя блока. Можно продолжать команду, отвечая на запросы системы на клавиатуре. Сопутствующая системная переменная ('истомит» ппримкпнля Filedia отвечает за появление диалоговых окон, в кото- рых нроилнодик и поиск файлов: Open, Save As, Menu Load, Export, Import и игкоюрыи ДРУ1ИХ I < пи ни значение равно Т, используется диалоговое окно.
4Ь Часть I. Разработка и настройка команд. Меню »с ц. << и. тля Если значение равно 0, путь к файлу должен быть введен в командный строке. Если Filedia = 1, но перед командой поставитьдиалоговое окно не появится. Исключение составляет команда Wblock (Пблок). При Filedia = 1 всегда при- сутствует диалоговое окно, независимо от того, стоит перед ней знак или нет. Но при значении Filedia = 0 команда -Wblock (-W) позволяет задать путь к файлу в командной строке. Эти знания понадобятся при разработке команд, включающих создание Wblock. Наберем " перед командой Eattedit (Атредакт): -Eattedit J Ответ системы: unknown command, незнакомая команда К сожалению, программисты AutoCAD не всегда имеют возможность избе- жать вывода на экран диалогового окна. Но, во всяком случае, все старые команды, пришедшие из ранних версий AutoCAD, ее имеют. Рассмотрим вариант использования команды -Attedit (Атред) и составим табли- цу шагов (табл. 3.7), но сначала приготовьте любой блок с одним атрибутом. Таблица 3.7. Подготовка кода команды разворота атрибута на заданный угол Шаг Действие Запрос AutoCAD 1 -Attedit * 2 ПК или ? Edit attributes...<Y>: Редактировать атрибуты... 3 ПК или J Enter block...: Шаблон имени блока...: 4 ПК или J Enter attribute tag...: Шаблон имени атрибута.... 5 ПК или J Enter attribute value...: Шаблон значения атрибута...: 6 ПК или J • Select Attributes: Выберите атрибут! i
I шил J Мак, >hi»M»!. ,|«t> r jiMiiju . шшя imh чей инструментов 47 Таблица 3.7 (окончание) lllai Действие Запрос AutoCAD t выбрать атрибут (только один, что лучше подходит для нашей цели) II 1IK или .J Enter an option...: 'Введите опцию (какие свойства будут из- менены) 0 Angle, угол io ПК ИЛИ J Specify new rotation angle (90): Новый угол поворота (90 — по умолчанию) (На самом деле по умолчанию стоит тот угол, на который развернут выбранный ва- ми шагом 7 атрибут, он может быть любым) 11 0 — угол поворота равный 0 делает текст горизонтальным 1.‘ ПК или J Enter an option...<N>: N означает Next, следующий, но так как шагом 7 был выбран только один атрибут, команда заканчивается шагом 13 13 ПК или J Цобанляем кнопку к имеющимся двум (Change Scale и Change Angle) под именем Change Att Angle (Изменить угол атрибута). Кпд команды: Габлица 3.8. Создание кода команды разворота атрибута на заданный угол Шаг 1 2 3 4 5 6 7 8 9 10 11 12 13 -Attedit ; ; ; ; ; \ ; Angie ; 0 ; ; Окончательная запись с учетом того, что мы предполагаем использовать эту команду в циклическом режиме, т. е. поворачивать за один раз больше, чем о ни! нрибут, буле। следующей: Aft Hi I Aliy LB; 0; ; |3-9|
'fl Чи /* I I . I I •! Н II ' 4lh>l htHln I.I Л ittWkt' •' I Рисунок ii.i кнопке можно Bi.iHojHiii।ь ii.i (i,ue ciaiiji.ipiii<>li i-iKHitii lull! Attribute (Правка атрибутов) с добавлением в свободном нижнем /геном углу символа угла КИ. Как обычно, сохраните рисунок в дпремории C:\Macro\Icons под именем Change AttAng. Рассмотрим несколько аспектов, возникающих при работе с командой Change Att Angle (Изменить угол атрибута). Например, имеем блок в пози- ции 1 (см. рис. 3.2). Надо поставить блок в позицию 6. Для этого над ним надо проделать следующие действия: 1. Повернуть (Rotate) на 90°. 2. Зеркально отбразить объект (Mirror) относительно горизонтальной оси. 3. Изменить угол атрибута, использовав только что сделанную кнопку Change Att Angle. 4. Изменить значения атрибутов (—Attedit или Edit Any Text). Этой коман- дой заменить букву "N” на ”Е" и наоборот. 5. При необходимости подвинуть атрибуты, слегка сместившиеся при их развороте. При выполнении п. 2 надо знать текущее значение системной переменной Mirrtext. Если оно равно 0, текст, в том числе атрибут, будет читаться нор- мально. Если же оно равно 1, то вместо нормального текста появится его зеркальное отображение, и текст не будет читаться. Примечание | В некоторых случаях значение Mirrtext необходимо выставить равным 1. На- пример, при повороте UCS (ПСК), если ось X направлена влево и настройки текста не менялись, текст выйдет отзеркаленным. Вернуть его в правильное положение можно командой Mirror, если предварительно выставить системную переменную Mirretext в положение 1. При выполнении п. 3 надо щелкнуть точно по атрибуту, иначе команда даст сбой. При выполнении п. 5 используются маленькие квадратики-ручки в узловых точках объекта (Grips). Прижатой ЛК легко подвинуть атрибут на нужное место. Принцип создания команды Change Att Color (Изменить цвет атрибута) та- кой же, как и для команды Change Att Angle (Изменить угол атрибута). Соз- дание кода соответствующей кнопки будет вашим первым заданием — Зада- ние 3.1. Чтобы не нарушать нумерацию, присвойте будущему коду этой команды номер [3—10]. Добавьте эту новую кнопку к уже существующим и сделайте ей подходящий рисунок Здесь буква "С" означает Color, цвет.
I /чш.| J мльрпьнммщ р/• f । t/iHii обьпкнш и, /л1не//• й инструментов 49 3.5. Изменение ширины множества полилинии Ио последняя кнош и нашей первой полновесной тематической панели ин- < i| >v ми н ов — Multiple PIWE (Изменить ширину полилиний последователь- но, друг за другом). При разработке кода не обошлось без "подводных камней" и, может быть, н> кушенный читатель обойдет их, что не всегда удавалось автору. • i*i п »менения ширины полилинии в AutoCAD служит команда Edit Polyline (Редактирование полилинии). Если вы имеете отрезок линии, то для пре- ир,1111С!1ия его в полилинию и придания ей нужной ширины (Width) надо раз нажать кнопки мыши и клавиатуры. А если много линий? Правда, и Персии 2002 появилась опция Multiple (Несколько) для множества объек- > •11, а в меню Express есть команда Mpedit, осуществляющая редактирование множества полилиний. Предположим, что по полю чертежа разбросано мною полилиний и отрезков линий, которым требуется изменить ширину. I' оманда Mpedit предлагает сначала выделить все подлежащие изменению ниши, затем задается значение Width (Ширина) и команда выполняется. А после этого приходится опять прогонять чертеж по экрану и проверять, i< in получилось ппавильно. Было бы удобней, работай команда так, что при нажатии на линию последняя у вас на глазах меняла ширину. В таком iii'ic работает команда Match Properties (Копировать свойства). Попьпки автора сделать такую кнопку на базе команды Edit Polyline (Редак- ц|р<>|<ание полилинии) к успеху не привели. Удавалось работать только I чем-го одним — или с отрезками линий или с полилиниями. Ип>рым заданием (Задание 3.2) будет создание команды на базе стандартной М1М1ПДЫ Pedit (Полред). Сначала только для отрезков линий, ее код полу- чи । очередной номер [3-11], затем — только для полилиний [3-12] и оконча- II п.но — для обоих вариантов: комбинации линий и полилиний. Анализ ..ник действий и ответов системы, которые будут отражены в окне Aiilnt Al) Text Window, вызываемом нажатием (<F2>), много дадут в пони- oiiiiut процесса разработки команд. Команда Mpedit AutoCAD 2002 дала надежду на успех. Для одного отрезка ли- нии или отпои полилинии код команды представляется достаточно простым: ; \ ; ;_Width;2 ;_Exit [3-13] hr > i> предполагается, что новая ширина равна двум единицам и эта цифра M<iiiiei<-i при необходимости, как это принято для всех команд данной па- ц> hi Но шчем же создавать кнопку для одного только объекта0 Поставим ' • ", кик мы яо делали раньше: Mt -11 г Width; 2; Exit; | ' I 11
'•() Ч.и 1h I /'<• Ij-Mf’ <fh I И IMi If чЫ.1 Men» .............. , »> ' Увы, команда уводи! cueii-му в колыю, непрерывно нцдываи в командной строке "mpedit - cancel - mpedit - cancel...". И так до бесконечноеги, пока не будет нажата кнопка <Esc>. Решение пришло после многих проб и ошибок, по принципу: если теле- графный столб, стоящий на дороге не перешагнуть, то попробуем его обой- ти. Сначала применяете команду Select (Выбрать) с опцией Single (Единст- венный), т. е. выбор единичного объекта. Наш объект при этом получает статус Previous (Предыдущий). Затем следует команда Mpedit, которой мы предлагаем поработать с объектом Previous. В этом случае звездочка перед командой благополучно работает: *~C~C_Select;_Single;\_Mpedit;_Previous;;;_Width;2;_Exit [3-15] Получилась более удобная команда, чем стандартная из меню Express. Сде- пайте рисунок на кнопке и сохраните его в обычном месте. 3.6. Раскрывающаяся панель инструментов Мы создали панель, состоящую из следующих кнопок: I. Change Scale (Изменить масштаб). 2. Change Rotation Angle (Изменить угол поворота). 3. Change Attribute Angle (Изменить угол атрибута). 4. Change Attribute Color (Изменить цвет атрибута). , 5. Multiple PIWE (Изменить ширину полилиний последовательно). Теперь надо дать имя этой панели. Заходим в диалоговое окно Customize (Адаптация), вкладка Toolbars (Панели). Зцесь находятся списки всех имеющихся в меню ACAD, EXPRESS и, может быть, в других дополнитель- ных меню, панелей инструментов. Нас интересуют панели, принадлежащие ACAD В списке вы увидите именные стандартные панели и панели с но- мерными именами. Это плод ваших экспериментов с кнопками. Находим искомую панель и даем ей имя. Тут надо хорошо подумать: если дать ей имя, например "Change Variable” (условно можно перевести так: изменить переменным аргументом), то в списке панелей наша новая займет место в алфавитном порядке. И следующие панели, которые мы создадим в даль- нейшем, также расположатся в списке согласно английскому алфавиту. Бы- ло бы удобнее иметь их все вместе в начале или в конце списка. Поэтому автор назвал свои панели так: XN-имя панели. Цифра 1 поставит всю серию в начало списка. Буква "V" — первая буква имени автора (а вы поставите свою букву). Если следовать этой логике, наша панель получает имя: IV-ChangeVar Для переименования панели надо ее выделить и нажать клавишу Rename (Переименовать). Теперь упакуем панель в раскрывающуюся кнопку Flyout
I ii.ui.1 i < ц >h of'i мои и. пгнепеи инструментов 51 (Подменю) Переходим пн нкл.шку Commands (Команды) диалогового окна ( uMoiinze (Адаптации), пыьираем здесь уже знакомую нам категорию User Ik-Hued (Польюна।еды кая) и из ноля Commands (Команды) тащим на поле чсрк-жа кнопку User Dclined Flyout (Пользовательское подменю). Появилась пустая панель, включающая в себя всего одну кнопку с маленьким черным И к угольником. Следует щелчок ЛК по новой кнопке и по ОК в появив- шемся окне, где записано, что AutoCAD не может найти панель без вашей помощи. Окно предупреждения исчезает, но зато появляется список вклад- ки Flyout Properties (Свойства), где вы находите свою именную панель IV-ChangeVar и указываете ее. В поле Toolbar Preview (Образец панели) no- un (яются все созданные ранее 5 кнопок. Затем нажмите Apply (Применить), и получается искомая вылетающая (раскрывающаяся) инструментальная па- нель. Надо дать имя и ей. Открываем вкладку Toolbars (Панели) и ищем номер этой панели, для чего надо поочередно снять и поставить флажки в маленьких окошках слева от имени панели, пока не найдется искомый но- мер. Дадим ей то же имя, но с добавлением буквы "F” — Fly, т. е. вылетающая. IVF-ChangeVar Ишель IV-ChangeVar закройте, но не удаляйте. Она нам в дальнейшем еще пригодится. Для изменения аргумента — коэффициента масштабирования, пни угла поворота, или цвета, или ширины полилинии — понадобится от- крыть именно эту панель и через нее в окне Customize (Адаптация) внести необходимые изменения. Обе панели показаны на рис. 3.3. S Ь S Рис. 3.3. Панель инструментов 1V-ChangeVar: слева — раскрытая, справа — упакованная I о (данная в главе 1 панель инструментов имела имя Clipboard (Буфер обме- п.|) Переименуйте ее теперь в 1?- Clipboard, вместо вопросительного знака посщвив первую букву своего имени. В дальнейшем в тексте книги мы бу- ле м использовать букву "V". 1.7. Появляющаяся и исчезающая панель инструментов Вылетающая панель IVF-ChangeVar содержит кнопки, в которые заложена ll« pi (одическая замена аргумента. Для этого надо вызывать на экран базовую (нс иылетающую) панель IV-ChangeVar, что не очень удобно. Можно сде- 'IIII. кнопку, ны 1Ы11.ио1цую целую панель. Это будет кнопка-представитель 1СМ.11ИЧССКОП напели В псе надо заложить код, вызывающий нужную па- 1|«*1||>, но lief НроМСАУГОЧНЫС действия должны происходить в командной
____________Ч »< И 'И' I I/M И н-ч ’ЙА 1 h ЧМ НИ’ I.1! Iii'41141 п»ИП<ЛЯ строке без вызова диалогового окна Customize (Адаптация) на экран Как мы уже знаем из раздела 3.4, знак ( - ) может подавить вывод диалогового окна. Наберите в командной строке: -Toolbar л и заполните таблицу шагов, но предварительно уберите панель IV-ChangeVAR с экрана, нажав на крестик в ее правом верхнем углу (табл. 3.9). Таблица 3.9. Подготовка кода вызова панели инструментов Шаг Действие Запрос AutoCAD 1 Команда -Toolbar 2 ПК или ? Enter Toolbar name...: Имя панели инструментов...: 3 IV-ChangeVar (В имени панели не должно быть пробелов!) 4 ПК или J Enter an option [Show/HLde/Left/ Right/Тор/Bottom/Float/ <Show> Введите опцию [Показать/Спрятать/Слева/ Справа/ Наверху/ Внизу/Плавающая] <Показать> 5 ПК или J Вызванная таким способом панель инструментов займет то же место, где она находилась раньше. Это сработала опция Show (Показать), которую мы вызвали по умолчанию шагом 5. Если вы хотите назначить для панели оп- ределенное место на экране, а также задать количество рядов кнопок на па- нели, надо взять одну из других опций. Проделайте это самостоятельно. Опция Hide (Спрятать) выбирается, если надо таким же образом убрать па- нель с экрана. Мы к ней скоро вернбмся. Теперь создайте новую панель инструментов, состоящую из одной кнопки. Имя панели — IV-Var. В поле Macro associated with this button (Макрос для данной кнопки) диалогового окна Customize (Адаптация) впишите неслож- ный код, вызывающий панель инструментов IV-ChangeVar: ЛСЛС_-Тоо1Ьаг;IV-ChangeVar;, [3-16] Рисунок на кнопке может содержать, например, три буквы VAR. Теперь одна кнопка VAR вызовет пятикнопочную панель инструментов, причем во
I/ч М.1мрпл<>*1 pi < nhoi/‘c» nftt»<«nn>wи.,, Г1."1уЛ<ч1 инструментов S3 H|U MH |> H'1>| 1,1 с I lot 1ЦМ11К II ihl жрппе присутствует 6 кнопок. При использо- iiihiiiii iibijici.iioiiii-n iiiiu'-iui пне ipvmciitob IVF-ChangeVar на экране присут- ( iiivci одна кнопка, hi которой "вылетают" остальные. Но при необходимо- IHI niMeiiiiib аргумент на одной из кнопок уже не требуется отдельно пы 'Ына। ь базовую панель. Впрочем, можно избавиться от панели с кнопкой 1 ЛК, если ее вызов поручить "горячим клавишам". Зайдите в окно Customize (Лиашация) на вкладку Keybord (Клавиатура). В поле Menu Group (Группа м< нк») выделите строку ACAD. В поле Categories (Категории) найдите па- |Н п> IV-Var. В поле Commands (Команды) появится только одна строка X Задайте ей сочетание клавиш, например, нажатием кнопок < н!> + <Left>. (Клавиша <Left> находится рядом с правым <Ctrl>) и на- ймите Assign (Назначить), Теперь можно убрать однокнопочную панель IV.Var с экрана. Нажатие клавиш <Ctrl> + <Left> вызовет инструменталь- ную панель IV-ChangeVar, после работы с которой ее также можно убрать нпжатием на крестик в правом верхнем углу, ведь она предназначена для 1>п юного использования. нельзя ли сделать так, чтобы панель IV-ChangeVar сама изчезала с экрана шиле того, как одна из ее команд выполнена? Вернитесь в табл. 3.8., шаг 4. Опция Hide (Спрятать) уберет всю панель с экрана, если... Впрочем, делайте ин самостоятельно. Подумайте также, какие перспективы сулит нам этот метод и Ьудушем. Задание получает порядковый номер 3.3, а код — [3-17]. I
Глава 4 Блоки и комбинированные объекты 4.1. Вставка блоков Работа практически с любыми типами чертежей не обходится без вставки блоков. Если большое количество одинаковых блоков расставляется по по- лю чертежа, и не одного, а многих, т. е. такие блоки являются типовыми для вашей работы, есть смысл автоматизировать процесс их вставки. Прежде всего, создается библиотека типовых блоков. Библиотека может быть единой для всех сотрудников вашей организации или вашей личной. Для упрощения задачи будем работать с вашей личной библиотекой, для чего в директории Macro создайте новую папку Blocks.» Полный путь к содержимому файла будет: C:\Macro\ Blocks\«MH файла Предположим, вы архитектор и работаете с поэтажными планами зданий. Нужно расставить двери в разных местах плана, причем могут быть различ- ные варианты расположения двери (рис 4.1), в том числе и не показанные на рисунке варианты с косым расположением двери. 1 2 3 4-5 6 7 В Рис. 4.1. Различные положения дверей для вставки в архитектурный план Начинаем создавать нашу библиотеку. Откройте новый чертеж. Текущие установки рисования: слой 0, цвет, тип и вес линии Bylayer (Послою). Начертите двери шириной 0.9 м. Базовую точку для будущей вставки блока выбираем командой Base (База) (рис. 4.2). Впрочем, можно передвинуть рисунок командой Move (Перенести), совмес- ти его левый нижний угол с гочкой 0.0. В ггом случае установиic IK S Icon
I >M1M 4 |n|t>h»i И Ь<‘МПшн.| »«»• "Ль. МЫ 55 ( iiuik lli'k) н iid'iitK ннг Oil (Никл), и значок начала координат уйдет на привычное мс< го и iirniiil нижний угол экрана. Рис. 4.2. Символ двери "Doorl" I имо собой разумеется, что слово "Base", выноска и знак X не должны быть и.। чертеже. « охраните чертеж в библиотеке C:\Macro\Blocks\Doorl. Hi кройте теперь учебный чертеж, где приготовьте условный план этажа ; проемами для вставки будущих дверей шириной 0,9 м в горизонтальном и ы ршкальном направлениях. Проиграем наши действия на клавиатуре и ре- шат сведем в нижеследующую таблицу (табл. 4.1): Таблица 4.1. Подготовка кода для вставки символа “Doorl" Шаг Действие * Запрос AutoCAD 1 Ввод команды -insert с клавиатуры (В разделе 3.4 уже говорилось, что у подавить диалоговое окно, ненужное при создании макрокоманд, можно знаком 11 -" перед именем команды) ПК или J 1 Enter block name...: Имя блока...: Введите полный путь к файлу чертежа 4 двери: C:\Macro\Blocks\Door1 ПК или J Specify insertion point: Точка вставки: Щелчок в нужной точке для вставки блока Enter X Scale Factor... [1] : Масштаб по оси X..
4.tcibl I’ i.huiOqim и нас грсйка команд Моню tiaih 1,ччг»ля Таблица 4.1 (окончание) Шаг Действие Запрос AutoCAD 6 ПК или J так как коэффициент 1 по оси X нас устраивает Enter Y Scale Factor...[l] : Масштаб по оси Y...: 7 ПК или J тоже по оси Y Specify Rotation Angle [0]: Угол поворота [0]: 8 Мышью выбираем желаемое положе- ние угла поворота., регулируя по необ- ходимости режим ортогональности (ORTHO) (<F8>) 9 ЛК Приготовим также новую инструментальную панель, состоящую из несколь- ких пока пустых кнопок. Имя этой панели IVT-Inserts. Буква " Т" — от английского слова Temporary, временный. В отличие от предыдущих кнопок и панелей, которые можно оставить себе для работы, эта будет сугубо учеб- ной. Предлагаемые для вставки блоки подобраны так, чтобы показать раз- личные методы работы с командами. После освоения материала вы замени- те блоки на реальные, разработаете соответствующие коды и измените имя панели Из табл. 4.1 следует код команды: лСлС_-1пзегС;С: \Macro\Blocks\Doorl,- \ ;; \ Нажимаем кнропку Apply (Применить) и пробуем. Увы, ничего не получает- ся. Кнопкой <F2> клавиатуры откройте окно AutoCAD Text Window (Тек- стовое окно AutoCAD) и внимательно прочитайте текст. Система почему-то предлагает вам блок с именем "С:”. Оказывается, мы ввели AutoCAD в заблуждение. В пути к имени блока присутствует обратная косая черта (Backslash) — " \ ”, а система воспринимает ее как ручной ввод данных. По- этому здесь следует применить не обратную, а обычную косую черту ” /", которая в этом случае работает правильно. z'C''C_-Insert ;С:/Macro/Blocks/Doorl; \ ;;\ [4-1] Теперь кнопка работает. Путь к имени вставляемого файла можно сократить, если подсказать AutoCAD, где хранится наша библиотека. Для этого надо зайти в окно Options (Настройка) на вкладку Files (Файлы) и дважды щелкнуть на Support File Search Path (Путь доступа к файлам поддержки). Появляется список
I Hill 4 I'lKlhH H <«».. Klbl 57 nil»'hlopnil, me хриннн ii i|i<iii 11.1 поддержки (см. рис. 2.5). Выделите последнюю ii.in<y in списки п П.1 +мни- Кнопку \dd (Добавить), а затем Browse (Обзор) Най- UIII искомую папку нанки Ннплногски "Blocks" и добавьте ее в список. |< in’|>ii код команды примет такой вид: Insert;Doorl;\;; \ [4-2] Но прежде чем опробовать кнопку, надо очистить файл, куда ранее встав- Hii'icii блок с именем "Doorl", от всех его следов — как чертеж, так и его ба- о данных. Сначала удалите все вставки блока "Doorl", а затем используйте команду Purge (Удали). И в будущем во всех случаях опробования новых • попок, включающих команду Insert (Вставить), не забывайте проделывать •1V процедуру Вы должны быть уверены, что работаете с последней версией (пика, а в базе данных чертежа может храниться предыдущая версия, если ю было изменено А чтобы дело шло веселее, очередное задание — 11 i.iiiiic 4.1: создать кнопку Purge (Удали) с опцией Blocks (Блоки) и изме- ряемым именем учебного блока. Введите эту кнопку па панель инструмен- hoii IV-Change Var. Дайте коду этой кнопки очередной помер |4-3| и подхо- iiiiiuiH рисунок. I омаила позволяет вставить дверь в любую из позиций 1—4 (см. рис. 4.1). Ji 1Я юркально отображенных дверей (позиции 5—8), необходимо иметь са- Moi к>ятельные блоки в библиотеке. Например, "Door2", или обходиться од- ним символом, но зеркалить его. Впрочем, можно автоматизировать и этот процесс, и здесь есть несколько путей. Наиболее простой: продолжайте код цпмапдой Mirror (Зеркало) с опцией Yes. означающей удалить оригинал, in ынив его зеркальное отображение. Затем следует команда Move (Перене- । hi) с опцией Last (Последний). Включим здесь временно объектную при- Г‘ч 1ку End (Конточка), чтобы пристроить дверь точно к проему. Но прежде hi м удлинять код, скопируйте его на другую кнопку и работайте уже с ней. Получилось следующее выражение: Insert;Doorl;\;;\_Mirror;_Last;Yes;_Move;_Last;;End;\ [4-4] ( uni। попрактиковаться с этой кнопкой, чтобы решить, "стоит ли овчинка ныпелки", или определить пути упрощения. Например, вместо опции Yes И команде Mirror (Зеркало), с помощью которой удалялся оригинал, можно i.iiiiiib оба блока — прямой и зеркальный и затем подумать, какой уда- пн ь (ля этого надо ввести в цепочку команду Erase (Стереть) и уже за ней Move (Перенести). А можно изменить базовую точку вставки блока, для чего 1ы оригинальном чертеже Doorl.dwg командой Base (База) определить точку и । ерсщпс дверного проема (рис. 4.3). Но сделает удобнее вставку с вращением и зеркаливанием, но осложнит । ычу нахождения ючпого места вставки, так как потребует дополнитель- ных построений Biipoui M, и главе 6 мы создадим новую объектную привязку I । pcniiii.i mi . iy шуми ючымн", которая и этом случае была бы уместна
58 Част^ I, Разработка i' застройка команд. Меню пользователя Рис. 4.3. Символ двери с базовой точкой в середине проема Рисунок для кнопок напрашивается сам. Не забывайте сохранить рисунки в соответствующем архиве. Установкой дверей временно закончим свою архитектурную практику и пе- рейдем на работу в электротехнический отдел. Теперь стоит задача расста- вить на архитектурном плане электрические розетки. Принципиальное различие между блоками дверей и розеток состоит в том, что дверь начерчена в пространстве модели в натуральную величину (шири- на 0.9 м), а розетка является внемасштабным символом, потому что она слишком маленькая по сравнению с другими элементами плана. Независи- мо от того, в каком масштабе будет выводиться на печать чертеж, размер символов должен быть одинаков. Символ он и есть символ. Точно также размер текста на бумаге чертежа должен быть одинаков, например, 2.5 мм, независимо от того, выполнен чертеж в масштабе 1 : 100 или 1 :10. Из этого следует, что в библиотеке надо иметь внемасштабные символы для всех употребляемых масштабов, например, с именами R100 и R50. Здесь R — от слова Receptacle, розетка, а 100 и 50 означает, что блоки приготов- лены, соответственно, для чертежей масштаба 1 : 100 и 1:50. Блок R50 имеет размеры вдвое меньшие, чем блок R100, но при выводе на чертеже они ста- нут одинаковыми, так как зуммирование видового экрана плана масштаба 1 :50 вдвое крупнее, чем для плана масштаба 1:100. Добавьте в библиотеку соответствующие символы, как показано на рис. 4.4 (таким символом обозначаются розетки в США) Диаметр окружности сим- вола для масштаба 1: 100 равен 500 мм, а для масштаба 1:50 — 250 мм Тогда на бумажном чертеже в обоих случаях этот размер’окажется равным 5 мм. Базовую точку назначьте, кай показано на рис. 4.4 (А). Впоследствии мы научимся обходиться одним блоком для всех масштабов. R100 R50 Ри 4.4. Символ члок।ричоской розотки
I ММ 4. lf/ЮПИ И lifiMMfW 59 kun команды, пы 1Ы11Л11>П1 ft символ розетки, будет отличаться от кода двери |l I юлько именем н< шилисмого блока Можно немного усложнить его, пне 1ч режим орю|оп<1лы|ос1и On, так как в большинстве случаев стены зда- нии расположены вдоль осей X и Y: । (’_0rtho;_On;_-Insert;R100;\\ [4-5] рисунок на кнопке не требует большой фантазии — символ той же розетки н цифра 100 (или 50), указывающая на масштаб. Добавьте во временную напечь IVT-Inserts две новые кнопки: % s Мпоше символы, содержащие текст или атрибут, обычно ставятся сугубо при юнтально, без вращения. Например, как на рис. 4.5. IL важно, что означает этот символ. Здесь мы имеем рамку и в ней три ат- aimvia. В этом случае к коду команды вставки блока [4-2] надо добавить •чиписрждение, что угол поворота при вставке блока равен 0, т. е. один до- чшпштельный символ " ; ” вместо последней обратной косой черты (Back- slash). Само собой разумеется, меняется и имя блока. Г_-1пзегС;имяблока;\;;; |4-6] II ина учебная инструментальная панель IVT-Inserts разрослась до 6 кнопок в приняла вид, как на рис. 4.6. 3 NF 100 Рис. 4.6. Панель инструментов 1VT-lnserts гио. 4.5. Пример символа с атрибутами, расположенного горизонтально 4.2. Определение блока При определении блока его элементам назначаются определенные свойства: unci, i иллиний, вес линии. Пкущий слой, куда вставляется блок, имеет свои установки: цвет, тип ли- пни, пес линии. При этом могут быть два варианта: I (скущие установки рисования соответствуют установкам текущего слоя, 1 с па панели Object properties (Свойства объектов) в соответствующих окошках покачано Bylayer (Послою). Гскущие уечапош-ь рисования отличны от установок текущего слоя, т. е. и окошках yi 1Н11О1Н11-11Ы, например, цвет Red, тип линии Hidden, вес ли- пни 0 мм. и ш ком чшация Bylayer/xxx Послою/ххх).
П> 4l< U I |Л| 1 И НК 1/ШЙК » КиМ.ЩД М, Г I Ч.1ГПЛЯ Aii(<>( Л1> п|1Г)нм liiiuiMi I iu>iMox ши и. получить при вс шике блоки разные ii.ipii.ni।ы i ю ок)()р.1же11пя, i iM'jieinibie в табл. 4 2. Таблица 4.2. Варианты отображения блока в зависимости от условий при его определении Ns варианта Преследуемая цель Определение блока (Block definition) Результат 1 Сохранить свойства элементов блока таки- ми, какими они были при создании блока Блок создается в лю- бом слое, кроме 0 (нуль). Свойства элементов любые, кроме Bylayer (Послою) или Byblock (Поблоку) Элементы блока сохра- няют оригинальные свойства — цвет, тип и вес линии 2 Всем элементам блока принять свойства теку- щего слоя Блок создается в слое 0 (нуль). Все элементы имеют свойства Ву1ауег(Послою) Все элементы блока приобретают свойства текущего слоя (т. е. свойства элементов блока плавающие) 3 Всем элементам блока принять свойства теку- щих установок рисова- ния Блок создается в лю- бом слое. Все элементы имеют свойства ВуЫоск (По- блоку) Все элементы приобре- тают свойства текущих установок, отличные от Bylayer (Послою) )iy таблицу стоит изучить и выбрать для себя подходящие для разных слу- чаен варианты. Тем более что часто приходится иметь дело с комбинацией вариантов. Например, блок содержит элементы, нарисованные линией, от- личном от сплошной, или текст, включенный в блок (в том числе атрибут), и традиционно имеющий свой определенный цвет. Дня большинства случаев, очевидно, подходит вариант 2, но при этом неко- |<>рым элементам можно придавать свойства, отличающиеся от Bylayer (Послою). При вставке блока элементы, имевшие при определении блока снопе гни Bylayer (Послою), примут свойства текущего слоя. Элементы с ин- дивидуально заданными свойствами (тот же цвет текста) сохранят их. l.iroio же результата можно достичь в варианте 3 (блок создается в любом счос. а не обязательно в слое 0 (нуль)), но надо быть внимательным — при и* гайке блока кчушпе установки рисования должны быть Bylayer (Послою).
nim ) I biluhU и hxAthtu» I fll.nll.l 61 13 Cipar* гин головастика I Ipi’ju unibic себя 4c|»icAiiiiK(»M (CAD-operator) в американской компании, кннрому дали задание fii.icipo выполнить чертежи электрической разводки н>| пианах с 40-го по 48-й этаж небоскреба в Нью-Йорке. На каждом плане iiii'iaiio быть изображено большое количество вот таких элементов, похожих in юловастика (рис. 4.7). Рис. 4.7. Символ Homerun Они означают, что именно к этой соединительной коробке, обозначенной мак буква "J" внутри окружности, подходят три нумерованные электриче- 11 не цепи, которые затем разводятся по этажу к потребителям. Стрелки на- правлены в сторону Источника и поэтому называются Homerun, т. е., если перевести дословно, Бегущий к дому. В нашем случае английскому термину Homerun можно подобрать такой русский аналог: "На базу”. Предполагается, но ыектропровода будут проложены к панели по известной трассе или она й< (различна, например, в подшивном потолке. Трассу не показывают и это равружает чертеж. Для пас важно, что надо вычертить полилинию в виде ||\1п с тремя треугольниками, направленную в сторону стоящей где-то элек- (ропапели, т. е. в разных местах плана направление Homerun и угол, под 1<>1<>рым он развернут, различные. К дуге надо аккуратно пристроить три । (крашенных треугольника и написать текст. Подавляющее большинство чертежников вычерчивает все элементы отдель- но, копируя с предыдущего места и поворачивая в нужном направлении ipcyiодышки или вставляя их в виде блока. Но мы уже почти программисты и должны думать программно. Хорошо бы сделать так, чтобы вся конструк- ция выводилась на чертеж с помощью одной кнопки и оставалась по воз- (ожпости комплексным единым объектом. Это позволит при дальнейшей работе над чертежом перемещать, копировать или поворачивать объект, вы- пирая его минимальным количеством щелчков мыши. Объект при вставке коижеп иметь возможность вращаться, чтобы визуально можно было опре- ||,||ии> наиболее удачное его расположение — ведь чертеж загружен другими и ныями и и ни» iiaiiui свободное место. А верхом совершенства была бы ко (мол.in» и. н । и. чин г символа Homerun гибким.
I..' */ । II. I I I ШЛ<>1ИЛ И/!>' шпик I I OAAVI I A t-or H'ltalfWlii Замечание » ) Большинству читателей вряд ли понадобится символ Homerun в повседневной работе. Его применение — это американская практика. Но, пройдя путь его создания и последующего улучшения вместе с автором, можно открыть для се- бя неведомые доселе секреты, неожиданные комбинации, малоизвестные ко- манды. Символу Homerun посвящена добрая половина нашей книги. Автор вы- брал этот символ как учебный для отработки приемов создания макрокоманд. Сначала условимся о терминологии, некоторых ограничениях и определим стратегию. Назовем треугольник стрелкой, а дугу хвостом. Символ Homerun будем сокращенно называть HR. Наш HR является внемасштабным символом, и поэтому его физические размеры зависят от масштаба будущего чертежа. Допустим, мы готовим HR для вставки в чертеж масштаба 1:100. Пусть стандартная высота текста на бумажном чертеже 2.5 мм. Тогда в пространстве модели высота текста будет составлять 2.5 х 100 = 250 мм. Длину стрелки выберем в три-четыре раза большей высоты текста, чтобы над ним могла разместиться двухзначная цифра (рис. 4.8). Рис. 4.8. Деталь символа Homerun В реальной практике чаще всего нужны HR с одной, двумя, тремя и че- тырьмя стрелками. Рассмотрим вариант головы с тремя стрелками, объеди- ненными в единый объект. Итак, технические требования говорят, что выводимый объект должен по- вращаться, прежде чем занять нужное положение. Стрелки имеют фиксиро- ванные размеры. Ясно, что обе операции сделает команда -Insert (-Вставить). Там, где AutoCAD запросит Scale factor (Масштаб) по обеим осям, поставим ДД, или в коде " ;; ", т. е. выведем его таким, каким создали в библиотеке. Там, где AutoCAD запросит Rotation angle (Угол поворота), поставим в коде команды обратную косую черту (Backslash), т. е. ручной ввод угла. ЛСЛС_-Insert;имя блока,\;;\ Хвост должен быть гибким... Значит, в качестве лвоста выступит полили- ния, или сплайн, или дуга — их можно корректировать, используя ручки (Grips). Для большинства случаев достаточно дуги. Последняя, выполненная утолщенной полилинией, будет смотреться лучше. Итак, выбираем полили- нию с шириной 15 мм (в пространстве модели).
I.п».I b/ii’Ktl H fH'Mf’iiiaif ...mil * 63 Нырмсопывается iiikhh с смп подготавливается внешний библиотечный чер- ic* половы (рис. 4.9). Рис. 4.9. Голова символа Homerun Г.пмеры каждой стрелки мы уже выбрали. Крутизна дуги, по которой рас- положились стрелки, значения не имеет. Стрелки можно сделать командой bolid (Фигура). В этом случае основание каждой стрелки будет прямолиней- ным. А можно вычертить всю конструкцию с дугообразным основанием и ыполнить стрелки командой Hatch (Штриховка). Для символа выбор вари- иша значения не имеет. А вот выбор базовой точки зависит от дальнейших И’йствий. Допустим, мы вставили голову символа Homerun в чертеж, повер- нули ее в нужном направлении и зафиксировали. Дальше надо пририсовать хвост в виде дуги, начиная от точки, лежащей на вершине прямого угла по- । подпей стрелки, (где стоит цифра 5 — см; рис. 4.7) так, чтобы он как бы продолжал дугу, по которой расположились стрелки. Inn выполнения дуги полилинией AutoCAD предоставляет несколько воз- можностей, поэтому необходимо выбрать подходящую опцию: Angle (Угол), ( viiter (Центр), Direction (Направление), Radius (Радиус), Second Pt (Вторая ючка). Опробуем их все и проанализируем Как известно, для выполнения iivi и необходимо иметь три параметра: 3 точки, 2 точки и радиус, хорду, ук»л или касательную. Применительно к AutoCAD точки могут быть выстав- лены с помощью ЛК мыши, а третий параметр (в опциях Angle (Угол) и Hadius (Радиус)) набирается с клавиатуры. А в нашем случае известно, что *вост должен иметь приблизительно такую же крутизну и направление, как и । олова. Методом подбора (речь идет о символе, поэтому точные расчеты параметров дуги не требуются) находим, что если воспользоваться опцией Angle (Угол), угол 70° даст подходящую дугу. А если бы голова смотрела про- шв часовой стрелки, то подошел бы угол —70°. I глн 1алезть поглубже в дебри AutoCAD, то можно посмотреть, в какую i тропу на вашей системе выставлено положительное значение угла. Наде- ин ь, как и у автора, по умолчанию: против часовой стрелки. Проверим вариант выполнения хвоста нашего головастика полилинией . опцией Angle (Угол), причем угол равен 70°, но сначала надо закончить и plot ।пловы, назначив базовую точку как показано на рис. 4.10. При ном пало учсгн. ширину полилинии. Коль скоро мы выбрали ширину И мм, ".inn смс» инь ну Сучку на половину ^ирины полилинии, т. е. на 4 мм, iiiu-px по короткой стороне последней стрелки и немного вглубь
h4 '/»- и. /. I1пр «бит . и it, шиifit i h )M.vu| At »u*> <W»iw|if стрелки При шачигелыюм увеличении сочленение юлоны и хим hi ПК бу- дет смотреться красиво. ' BASE Рис. 4.10. Назначение базовой точки символу Homerun Дайте имя файлу H3R100, что в переводе на "человеческий" язык будет оз- начать: символ Homerun с головой, состоящей из трех стрелок, смотрящих вправо. "R" — от слова Right, правый, а 100 — это масштаб будущего черте- жа на бумаге. Сохраните файл в библиотеке C:\Macro\Block\H3RlOO. 4.4. Homerun Сначала надо приготовить новую панель инструментов с именем IV-Homeruns. Заложите в нее пока несколько кнопок, затем будем добавлять сюда новые по мере изучения материала. Эта панель станет теперь основной рабочей панелью на долгое время. Теперь проиграем по элементам детали кода. На новой кнопке с названием H3R100 отработаем вставку блока. лСлС_-1пзегГ; H3R100;\;;\ |4-7] • Для вычерчивания хвоста в виде полилинии составим таблицу шагов (табл. 4.3). За условный шаг 1 примем вызов команды Pline (Плиния), так как предшедствующая ей команда вставки блока уже отработана. Таблица 4.3. Подготовка кода создания полилинии как элемента символа Homerun Шаг Действие Запрос AutoCAD 1 Команда Pline с клавиатуры 2 ПК или J Specify start point: Начальная точка: 3 @ (отработка полилинии должна сле- довать сразу же после вставки блока командой [4-7]) 4 ПК или Д Specify next point or [Arc/Halfwidth/ Length/Undo/Width]: Следующая точка или выбери [...]
<MM "t bJKWlf И KilMtMWntpiM. I'ЧП 14 1>0ММЫ 65 Таблица 4.3 (продолжение) Illi ir Действие Запрос AutoCAD Команда Widt h < ПК или J Specify starting width <...>: Начальная ширина <...>: / 15 Н ПК или J Specify ending width <15> Конечная ширина <...>: и ПК или J Specify next point or [Агс/Halfwidth/Length/Undo/ Width]: Следующая точка.. 10 Arc 11 ПК или J Specify endpoint of Arc or [Angle/Center/Direction/ Halfwidth/Line/Radius/ Second Pt/Undo/Width]: Конечная точка дуги или [Угол/ Центр/Направление/Полуширина/ Линейный/Радиус/Вторая /Отменить/Ширина]: 12 Angle 13 ПК или J Specify included Angle: Центральный угол...: 14 70 1В ПК или . I Specify endpoint of arc...: Конечная точка дуги....
Ч.ч.1ь I, Ризр.1Ь>чиа и iMblpi 'Л<*1 kom.i<v| М*ню m « ttui.m«ля M Таблиц) 14.3 (окончание) Шаг Действие Запрос AutoCAD 16 ЛК по месту, где должна быть конеч- ная точка дуги (т. е. начало HR) 17 ПК или J — закончить команду Отсюда следует код команды прорисовки полилинии, который рекоменду- ется временно привязать к другой кнопке, не к [4-7]. Таблица 4.4. Создание кода вывода полилинии для символа Homerun 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Pline ; i Width ; 15 ; • Arc ; Angle ; 70 ; \ ; Чтобы проверить работу нашей временной кнопки, сначала с помощью кнопки H3R100 [4-7] вставьте голову HR. Затем, не производя никаких других действий, проверьте выполнение полилинии. Это нужно для того, чтобы не потерять нашу последнюю точку @. Если хвост пристраивается к голове правильно, можно объединить обе кнопки в одну, скопировав код полилинии из временной кнопки в поле Macro associated with this button: (Макрос для данной кнопки) кнопки H3R100, в конце первоначальной записи, где и положено быть хвосту. Получаем полный код команды: ~C''C_-Insert;H3R100;\;;\_Pline;@;_Width;15;;_Arc;_Angle;70;\; [4-8] Команда работает, голова выводится на чертеже под любым углом. Длина пристраиваемого к голове хвоста регулируется, а сам хвост после окончания команды поддается корректировке, если воспользоваться ручками (Grips). На рисунке, помещенном на кнопку, сделайте дополнительную надпись 4-8, что будет соответствовать коду [4-8] и позволит легче ориентироваться в кнопках, когда панель заполнится Осталось невыполненным последнее техническое условие: объект должен быть единым целым. Объединить оба объекта можно либо собрав их в блок, либо в группу. В первом случае наш хвост потеряет гибкость, поэтому команда Block (Блок) не подойдет. Поработаем с командой Group (Группа). Эту команду не так часто применяют, даже кнопки такой нет. Фактически этой командой можно создать набор элементов (Selection set) и дать ему имя. Затем, когда потребуется, например, скопировать этот набор, вместо поочередного выбора объектов можно вызвать сразу всю группу, назвав ее имя или нажав ЛК на любой из ее элементов. При этом на всех элементах
' । । < >ли и л.мгЛипм/ Лг мг в7 iH>4iiiiMi<iie>i ручки, которыми можно редактировать объекты. Таким обра- uim, применение ком iioii.i Group (Группа) может решить нашу задачу. Ныллыем команду Group с клавиатуры. Появилось диалоговое окно. Ви- 1ИМ, что вновь создаваемая группа должна иметь имя. Но там же есть окош- ко Hunamed (Без имени). Значит, AutoCAD сам даст имя, если мы его по- просим. «>кошко Selectable (Выбираемая). Здесь регулируется, будут ли объекты la Iруппе вызываться все вместе или порознь. Нам надо, чтобы все вместе, । с чтобы в окошке Стоял флажок Впрочем, так и есть по умолчанию. I сверь посмотрим, работает ли команда без вызова диалогового окна, т е. из командной строки, если перед именем команды поставить знак и как In шлют на работу команды системные переменные. Вводим команду I GroupJ (-Группа). Появляется приглашение в командной строке. Значит, I команду можно применить в нашем случае, записав все необходимые дейст- вия в коде команды. I Г системе помощи Help в разделе Group, selection, toggling выясняем, что и. системная переменная Pickstyle, влияющая на работу команды. Если in.пение Pickstyle равно 1 или 3 — то все объекты группы будут "скрепле- I цы” вместе, как в блоке, но при этом каждый объект поддается редактиро- IИ111ПЮ. если исполь^звать ручки. Значит, в код надо ввести значение I) । kstyie=i. На случай, если кто-то до вас выставил его в другое положе- I пне, например, 0 или 2. (Значение Pickstyle можно выбрать и поменять I и окне Options (Настройка) на вкладке Selection (Выбор). Флажок или его I («('•утствие в окошке Object grouping переводит значение переменной I’ickstyle в 1 или 0, а флажок в окошке Associative Hatch (Ассоциативная I пприховка) в 3 или 2 . llriK, запускаем команду -Group (-Группа), выбираем опцию Create (Соз- 111 п>) и AutoCAD запрашивает имя будущей группы. Мы помним, что в диа- I dnioBOM окне была возможность предоставить системе задать имя блока без нашего участия. Но как передать свою просьбу в командной строке? Очень | просто. Введите на запрос системы знак " * " и AutoCAD, задав в своих недрах неизвестное нам имя будущей группе, пустит нас дальше. На сле- 1УЮШПЙ запрос Enter a group description (введите описание группы) на- < миге ПК или Д, так как описание в данный момент нас не интересует. II ног здесь предлагается выбрать объект для группирования. Надо бы поме- III н> юлову и хвост HR, да лень-матушка одолела. Пусть AutoCAD это сде- III1 I ,а нас. Хвост HR был последним нарисованным объектом, т. е. Last, пычиг голова должна стать Previous (Предыдущий). И чтобы голове полу- >11Н1> ыкой синус, ее надо выбрать командой Select (Выбрать), причем п нужное время, i ризу после вставки, пока она еще имеет статус Last (По- лини) (Мы по > < делали, в частности, в разделе 3.3.)
68 Часть /. Разработка и настройка команд. Меню пользователя Дополним код [4-8], введя перед pline команду select, а после нее имя системной Переменной Pickstyle И Команду -Group. z'Cz'C_-Insert;H3R100; \;; \_Select;Last; ;_Pline;@;_Width;15; ;_Arc;__Angle;70;' ; _Pickstyle;l;_-Group;_Create;*;;_Last;_Previous;; [4-9] Работает! Красиво получается, всего за три щелчка ЛК или, воспользовавшись хоккейной терминологией, в три касания такой сложный объект вставлен в чертеж. Но если мы случайно оказались в режиме ORTHO, On (режим ор- тогональности включен), надо механически менять этот режим на Off (Откл). То есть надо протягивать руку к клавише <F8> или, того хуже, щелкать мышью в строке состояния (Status line) по кнопке ORTHO (ОРТО) Нет уж, пусть AutoCAD сделает и это. В начале кода перед вставкой блока добавим otrho,-off. Но, обеспечив себе удобство в работе переводом режима ORTHO в Off, мы как бы сказали: в дальнейшем разберемся, что нам нужнее: On или Off (Вкл или Откл). На самом деле после выхода из команды правилом хо- рошего тона было бы вернуть состояние ORTHO (ОРТО) (и других изменяе- мых в процессе команды характеристик) в то, которое было до применения команды. Как это сделать — об этом разговор в дальнейшем. Здесь впервые в код введена системная переменная Pickstyle и перед ее именем поставлен знак подчеркивания ( ). Следует заметить, что в русской версии AutoCAD имена системных переменных на русский язык не перево- дятся, поэтому знак подчеркивания перед ними ставить ые обязательно. Од- нако мы будем это делать для идентичности. Для комплексного решения задачи построения HR надо добавить возмож- ность написания текста. Команда Dtext (Дтекст) должна появится на курсо- ре мыши в тот момент, когда HR закончен. Но здесь нас ждет осложнение: в файле может быть несколько текстовых стилей и надо выбрать нужный. Кроме того, желательно, чтобы текст на бу- мажном чертеже был прорисован более тонкой линией, чем другие элемен- ты. Этого можно достигнуть, создавая весь текст чертежа в предназначенном для него слое определенного цвета, и этому цвету при выводе чертежа на плоттер назначить меньший вес линии (Linewcight), что проделывается в диалоговом окне Plot Style Table Editor (Редактор таблиц стилей печати). Или следует создавать текст в текущем слое, но изменить вес линии текста на меньший в диалоговом окне Properties (Свойства). Все это мы научимся делать позже, а пока для упрощения задачи пусть текст создается в текущем слое и с текущими параметрами Style, Justify, Height, Rotation Angle (Стиль, Выравнивание, Высота, Угол поворота). Текст при этом получится таким, каким он был настроен в последнем применении. Отступление При настройке текстового стиля могут быть два варианта выбора его яысоты. В no" Height (Высота) диалогового окна Text Style (Текстовые шипи) поста пип, 0 (муж,) и а пом. hhiii.iiian команды пиит ниин текста, шп>.ни иы<тну
!»..« | '• h'hH И .........I'fiff'hlU 69 i i гз “ командной ) i|kik« huh пид1и«'рдигь предыдущую установку высоты на- ж ином ПК В поле h ight (|i.icori) установить фиксированную высоту текста, и тогда AutoCAD не будпг опрашивать его высоту при вызове текстовых команд. II первом случае макрос текстовой добавки будет таким: _Dtext;\;; Здесь • инн конечный знак " ; " подтверждает высоту текста, заданного ранее, I шорой знак " ; " подтверждает угол, под которым пойдет текстовая строка, Iiikac гаданный ранее. !*•» и юром случае макрос текстовой добавки должен иметь на один знак " ; " ныне, так как высота текста уже известна AutoCAD. И дальнейшем мы вернемся к этому вопросу и автоматизируем процесс соз- Н1ПЯ текста, а пока примем первый вариант. При отработке команды сле- /IIIie. чтобы текущий текстовый стиль имел установленную высоту 0 (нуль), Иначе команда даст сбой. Проверьте это! Полный код команды H3R100: < )rtho;_Off;_-Iinsert;H3rl00;\;;\_Select;_Last;_Pline;@;_Width;15;;_Arc; L rjle;70; \;_Pick3tyle;l;_-Group;_Create;*; ;_Last;_Previous; ;_Dtext; ; [4-10| । iicynoK на кнопке отражает ее соответствие с кодом |4-10[ ft дальше, по логике» нам надо создать аналогичные HR с головами, со- । 1ОЯЩИМИ из одной, двух и четырех стрелок, смотрящих вправо (Right), и шныре HR, смотрящих влево (Left), чтобы получился такой набор: IIIR, H2R, H3R, H4R Illi , H2L, H3L, H4L Iiikhm образом, создается инструментальная панель с именем IV I Iomeruns-100 из восьми кнопок. 100 означает масштаб 1: 100, для кото- рою приготовлены блоки. На каждой кнопке есть соответствующий рису- нок, что позволяет быстро выбрать нужную по количеству стрелок и на- правлению. Панель отрывается только тогда, когда предстоит работа с HR, и остальных случаях ее нет на экране. Иля учебной практики ограничимся только одним Homerun H3R100 и од- ним масштабом 1:100. Поэтому панель IV-Homeruns состоит пока из трех । попок с индексами 8, 9, 10. 4.5. Экономим кнопки Надеюсь, у читателя уже начался изобретательский зуд: нельзя ли сделать универсальную кнопку для левого и правого HR? Помните, в разделе 4.1. 'IhinatiKa 6.кнаш", иге мы работали с дверями, прозвучала фраза о том, что мофно было (на временно иметь на экране прямое и зеркальное отображение
'l1 •/.«. a. I l'-i ! " ' ill 4 o.l й И.if» .•».. «th f nut ini, ii i hi m, полум.ш, yyi.uniii. iichvaikk Hui ii.i iijh ii । >< hi uni Лы кик нельзя Ki 1.31II. Намечаем cipareinio: вставляем Итону HR, как это мы уже делали выбира- ем подходящий уюл (в нашем учебном случае угол также учебный) и фик- сируем. Затем зеркалим ее относительно прямой, проходящей через точку вставки (логично) и через другую точку, которая выбирется вручную, обес- печив таким образом угол поворота головы (рис. 4.11). Дальше последует команда Erase (Стереть) для удаления той головы, которая нам меньше нра- вится. А потом все должно пойти, как в предыдущей кнопке. Рис. 4.11. Зеркальное отображение головы символа Homerun 1 — точка вставки, она же первая точка на линии зеркала. 2 — вторая точка на линии зеркала. Стоп! При отзеркаливании мы как бы положим копию головы HR на ори- гинал. Одно из двух: оригинал или копия должны быть удалены. В любом ли слу- чае оставшаяся голова будет иметь статус Last (Последний)? И вторая проблема: в выражении [4 10] мы начинали полилинию (хвост) с точки вставки головы (@). Тогда это была последняя точка, которую AutoCAD зафиксировал как Last point (последняя точка). А сейчас послед- няя точка оказалась в другом, совершенно случайном месте, там, где мы нажали ЛК для удаления ненужной второй головы. Это легко проверить. Проведите операцию вставки головы и ее отзеркаливания вручную. Сотрите ненужную голову, затем выберите команду Line (Отрезок) и начните его от точки, выбранной с клавиатуры клавишей Вы сразу увидите, где эта точка. Итак, первую точку, с которой дуга начиналась автоматически, мы потеряли. Можно задать ее вручную,, воспользовавшись объектной привяз- кой Snap to Insert (Твставки), а это значит лишний раз щелкать мышью. А можно запомнить нужные нам точки надолго, хотя бы на период пока файл открыт. Перефразировав известного телеведущего, скажем: есть такая возможность! Это обращение к команде Cal (Кальк). Здесь сделаем длительный перерыв, во время которого научимся составлять свое собственное меню и познакомимся-с некоторыми функциями встроен- ного в AutoCAD калькулятора.
пава 5 Собственное меню пользователя Ь.1. Загрузка меню И .мерное, многие из вас открывали диалогов окно Menu Customization i Адаптация меню). Окно контролирует группы меню, которые можно загру- зи н> в AutoCAD, и падающие меню. Вызывается окно из падающего меню loots => Customize => Menus, а также командой Menuload (Менюзагр). Д|я загрузки используется и команда Menu (Меню). Разница между ними | включается в том, что командой Menu (Меню) меню загружается целиком, и команда Menuload (Менюзагр) предоставляет возможность загрузить [»н> частично. На рис. 5.1 показано диалоговое окно Menu Customization (\ оптация меню) с двумя вкладками, вызываемое командой Menuload (Менюзагр). 1’И1 В 1 Ди итоговое окно Menu Customization
72 41< /< /. I i ij^iChhk i и н.ч нюимпчмщ, М*"> •'" u<jon.iHyiH 1десь п списке Menu Groups \1 руины меню) одноименноп Перной вкладки должно находи гься меню ACAD и, если загружено, меню Express (Экспресс). Вкладка Menu Ваг (Активные меню) этого же окна позволяет загружать или вьнружшь падающие меню группы ACAD или других групп меню, если они имеются и содержат в себе отдельные части, например, выпадающие списки. При нажатии кнопки Browse (Обзор) появляется другое окно Select Menu File (Загрузка меню из файла), где можно выбрать меню для загрузки (рис. 5.2). (Для того, чтобы увеличить рисунок, левая часть диалогового окна была искусственно удалена.) Select Menu File Exprei Views <= IB Q acetmain.mnc acetman. mns i£j acetmari_bak 1. тгъ File name faced mne Files otfc/pe l^enu Files (*^nc.‘rrins) Menui Files F mne* mns) Qpen Cancel mu Template c.mnu) Рис. 5.2. Диалоговое окно Select Menu File Выбор типа файла для загрузки Здесь на рисунке открыта директория Express (Экспресс) и в списке пока- заны файлы acetmain.mns и acetmain.mnc, любой из которых можно загру- зить. Если бы мы выбрали команду Menu (Меню), то это окно появилось бы сразу, минуя первое окно Menu Customization (Адаптация меню) (см. рис. 5.1). Обратите внимание на нижнюю часть окна. В поле Files of type: (Тип файла) раскрывается список, состоящий из двух строк, в которых предлагается вы- бор между загрузкой файлов (*.mnc, *.mns) и Menu Template (Шаблоны ме- ню) (*.mnu). Если бы была выбрана вторая строка (*.mnu), то в основном поле окна находился бы файл’ acetmain mnu и соответствующий ему резерв- ный файл. Какой же файл выбрать для загрузки?
I <1 lll«l 1 (',<(!< IП ННЧ M«*IIM III >41 «’»• >’Л* 73 Il ititie мы уже । (iii|iii).>ii i пи ъ с файлами меню: V.wl mini \i .id.urns V л<1 nine \i .ul.innr lu.i первых файла — это текстовые документы, которые можно открыть и редакторе Notepad (Блокнот) и вносить в них изменения. Два других фай- 1.1 написаны бинарным кодом и представляют собой компиляцию файла Ac.ul.mns. То есть в них заложен специальный перевод данных из файла Acad.mns на язык, понятный AutoCAD. Система работает именно с этими файлами. Один из них *.mnc отражает команды, а в другой *.тпг заложены растровые изображения, в том числе рисунки на кнопках (bitmaps). AutoCAD работает с этими файлами следующим образом: при первом за- пуске программы загружается шаблон меню Acad.mnu. AutoCAD автомати- чески записывает файл Acad.mns. Тот, в свою очередь, компилирует файлы Ac.id.mnc и Acad.mnr. На экране появился первоначальный вид, заложен- ный разработчиками Autodesk. Если удалить файлы Acad.mnc и Acad.mnr и лаже Acad.mns, то при перезагрузке AutoCAD они восстановятся. Обычно работа пользователя начинается с организации привычного вида экрана: от- крываются новые пвнели инструментов, существующие перемещаются на повое место, изменяется состав кнопок и т. д. С этого момента все измене- ния автоматически записываются в файл Acad.mns и отражаются в файлах Acad.mnc и Acad.mnr. Если теперь удалить эти файлы, то оставшийся файл Acad.mnu вернет AutoCAD в первоначальный вид и ваша работа по органи- 1.ШИИ рабочего поля пропадет даром. Именно поэтому в главе 2 рекомендо- валось сохранить копии файлов меню ACAD (Acad.mns, Acad.mnc и Acad.mnr) на случай их повреждения или утраты. При очередном запуске система смотрит, существуют ли файлы Acad.mnc и Acad.mnr и не старше ли они по возрасту, чем Acad.mns. Если такое обна- руживается, AutoCAD скомпилирует новые файлы вместо существующих, ба шруясь на более свежем Acad.mns. Если файла Acad.mns нет, то система поссоздаст его из файлов Acad.mnc и Acad.mnr. l.iKiiM образом, дата обновления файлов *.mnc и *.mnr всегда должна быть ыкой же или более свежей, чем у файла *.mns. Отсюда следует ответ на во- прос: какой файл загружать в AutoCAD в диалоговом окне, показанном на рис. 5.2, если по каким-то причинам одно из меню выгрузилось: (*.mnu) h i п (*.mnc, *.mns). Вероятно, тот, что был создан последним. При шгрузке меню *.mnu AutoCAD выдает дополнительное сообщение, что пере игру 1ка шаблона может привести к потере всех сделанных вами изме- нении Если финн *.mnu редактировался пользователем вручную и эти п iMciiciimi in ••глн последние, можно загрузить *.mnu. В остальных случаях
7-1 '/,i n././’.i i^-iD м-и i । Ип j ком ii Л» и 1Я надо загружать *.mns или *.шпс. Если же вы решили вернуться к раппен версии меню, записанного в файле *.mns и сохраненного в известной вам папке, то надо предварительно удалить файлы *.mnc, *.mnr. В этом случае окажется, что вновь скомпилированные файлы *.mnr и *.пшс будут более свежими, чем файл *.mns. 5.2. Файлы меню В предыдущих четырех главах мы создали несколько инструментальных па- нелей и отдельных кнопок. Некоторым из них логично нашлось место в ме- ню ACAD, например, Edit Any Text, три кнопки из панели Clipboard (Буфер обмена), которые могли бы заменить кнопки, связанные с буфером обмена в панели Standard Toolbar (см. раздел 1.2). Для других панелей лучше создать самостоятельное меню, наравне с меню группы Express (Экспресс). Это ме- ню можно будет загружать в AutoCAD и выгружать из него. Его легко пере- нести на другой компьютер, а копию можно хранить на дискете. Сейчас наши панели являются частью меню ACAD. Фрагменты этого меню мы уже видели в файле Acad.mns (см. рис. 2.4). Освежите копию файла Acad.mns, которая, если вы следуете линии, заду- манной автором, должна находиться в папке C:\Macro\My_MNS. Откройте файл. Рассмотрим его структуру. Сначала идут служебные символы, заголо- вок и полное имя файла: // // AutoCAD menu file — CAProgram Files\AutoCAD 2002\Support\acad.mns // Затем следует имя меню: * * *MENUGROUP=ACAD Ниже начинаются описания и комментарии, относящиеся к падающим меню. Каждая секция начинается с символов ”***". Нас интересует следующий раздел файла: * * *TOOLBARS Здесь записана информация обо всех панелях инструментов, в том числе и о созданных пользователем. У меня серия этих панелей начинается с lV-имя панели, что и показано на рис. 2.4. У вас вместо V, очевидно, сто- ит первая буква вашего имени. Далее следуют другие сведения, нужные AutoCAD для работы, в том числе и перечень всех команд с краткими комментариями. Обратите внимание на двойной символ косой черты, стоящий в начальных или концевых строках.
I ll^UA '• I .«4 |H< ,llh'n M. Uhl fllWU чШ.<1,ч1п 75 I- чп riiKo| двойной i iiMikui iiociannib перед одним из пунктов меню, то • но пункт Gyjici iiik>iii>>K*ii Нинель инструментов, например, не появится на кране, если перед с< именем поставить знак " // ". Если эти знаки поста- цц||> перед строкой, относящейся к конкретной кнопке, при очередном за- nv» ке AutoCAD этой кнопки не будет на панели. Отключать панель или кнопку вряд ли целесообразно, но зато можно включать в файл свои ком- мешарии, в том числе на русском языке, поставив перед каждой строчкой комментария этот символ. 1дссь же, в разделе **‘accelerators можно увидеть запись о сделанной на- ми и разделе 1.3 комбинации клавиш <Ctrl> + <Q> для ускоренного вызова лii.iлотового окна Customize (Адаптация). (Слово Accelerator переводится как yi коритель.) В конце файла видим служебные символы и запись: ,7 / End of AutoCAD menu file — C: Program FilesX AutoCAD 2002\Support\Acad.mns •7 Ниже показаны три способа организации файла *.mns собственного меню. Первый способ. ♦ ( охраните файл Acad.mns в папке C:\Macro\My_MNS под именем V Macro.mns. Само собой разумеется, вместо V стоит первая буква вашего имени. I сверь надо удалить весь ненужный текст, оставив заголовки, интервалы между строками, абзацы, касающиеся наших панелей и концовки. Раздел Accelerators можно оставить в меню ACAD. 1.ИОЛОВОК и полное имя файла, а также имя меню меняем на следующее: // AutoCAD menu file - C:\Macro\My_MNSW-Macro.mns // ••* ••*MENUGROUP=V-Menu концовку также изменяем: // End of AutoCAD menu file - C:\Macro\My_MNSW-Macro.mns // Практически все содержимое файла поместилось теперь на рис. 5.3 Обратите iiiiiiM-iiiiic пн имена файлов рисунков. Здесь нигде нет номерных имен псе они iiimi п< цы па оригинальные в соответствии с разделом 2.2.
Ч.П М I f .U/l.lOi Mui MJMi Г/М1»№лк 'Mrtfyi ftfi ...................*МП»ЛЛ i V-M»cro.mni Notop id He formal View Help AutoCAD menu file - C:Viacro\My_MNS\V-Macro.mnc ***MENUGROUP-V-Menu * *’‘TOOLBARS «*1V-EDIT ™TBJLV-EDIT [„Tool bar("lv-Edit", -Top, „show, 1, 0, 1)) !D_userButton„39 [„Button("Copy-Edit", Copy and Edit.bmp", "iCON-16_BLj lD_userButton_7 [_Button("Edit any text". Tedit.bmp". "ICON—16_blank") W*1V—CLIPBOARD *4fTB_JlV—CLIPBOARD ID_JLV_Clipboard_0 [„Toolbar("iv-clipboard", -Floating, -Hide, 714, 359, ID_copybase_0 [_ButtonC'copy with Base point'*. "Copybase.bmp", "ICON—L> ID_Pastebloc-0 [_Button("Paste as Block", ."paste block.bmp", "ICON„16-Bt ID_pasteorig_0 [_Button("paste to original Coordinates", ''paste origin.! * *1V-CHANGE„VAR * “T В J.V-C HANGE—VAR ID—lv_Change_var_0 [-Toolbar("iv-change var" „Floating, -Hide, 261, 28} ID_userButton_38 [_Button("Change scale", "change scale.bmp", "ICON—16_l ID_user Butt on_31 ID_us er But t on_3 2 ID_userBut t on_3 3 ID—user Butt on_3 6 ID—userButton—35 ^_Button("Change Rotation Angle", "change Angle.bmp", .-Button (“Change Att Angle", "change Att Anq.bmp", "IC( ,_Buttonf"Change Att Color", "change Att Color.bmp", c-ButtonC'Multiple pIwe", "Multiple PlWE.bmp", "icon_1« ._Button("Purge Block", "purgeBlock.bmp", ICON—16_BL/ ’““TOOLBAR1 *"TB—1VF-CHANG E_VAR ID-TODlbari_0 [-ToolbarC'lVF-chanqe var", „Floating, „Hide, 406, 288, iD_U5erFlyout_4 [-Flyout(“user Defined Flyout", ICON—16_blank, ICON—16„i **lVT-lhSERT ID—IVT-insert-O [-ToolbarC'lVT-lnsert", „тор, _show, 0, 3, 1)] ID_USerBUttOn_41 [-Button("Doorl", "Doorl.bmp", "ICON-16_BLANK")1ACAC_-' ID_userButton-43 [„ButtonC"Door2", "Door2.bmp", "icoN-16_blank")]acac_-: !D_userButton_42 r_ButtonC‘Door3", "Door3.bmp", "icon„16_BLANK")] acac_< ID—USerButton—44 [_Button("R100", "R-lOO.bmp , "ICON—16_BLANK")JАСАС-ОГ1 ID—USerButton_45 [_BUttOn("R50", "R-50.bmp", "ICON—16„BLANK")]ACAC-Orthl ID_U5erButton_46 L-BUttonC’Tag", "Tag.bmp , "icon„16_blank"“]AcAc_ortho “CLV-HOMERUNS lD„llv_Homeruns_0 [„Toolbar("iv-Homeruns", _тор, „show, 0, 2, 1)] ID—US er Button—47 [_ Button( "H3R_4-8". "H3R_4-8.bmp", "ICON-16_BLA.NK")]AC' ID„USerBUttOn_48 Г—Buttоп("н3R_4-9", "H3R_4-9.bmp", "ICON—16_BLANK")]AC' ID-U5erBUttOn_49 [-BUTtOn("H3R_4-10", "H3R_4-10.bmp", "ICON—16—BLANK )]' *z,k,kHELP STR INGS ID_USERBUTTON—18 [user Defined Button] // End of AutoCAD menu file - C:Viacro\My_MNS\v-Macro.mnc // Рис. 5.3. Файл меню V-Menu Сохраните файл. Убедитесь, что в диалоговом окне Options (Настройка) на вкладке Files (Файлы) прописан путь к папке My_MNS. Теперь здесь нахо- дится рабочее меню. Запустите AutoCAD и загрузите новое меню, используя диалоговое окно Select Menu File (Загрузка меню из файла). Процесс загрузки был описан в начале этого раздела. Если все прошло ус- пешно, на экране AutoCAD можно увидеть двойной комплект панелей ин- струментов. Один комплект из меню ACAD и второй комплект из меню V-Menu. Все панели надо рассортировать по принадлежности к меню и убе-
I l.lll. I Л. Cl '< utl III h 41 An (IM I' HA >i>UiOr>il>l 77 пннпнсь, 410 кнопки n mu ||>уме1Н4ЛЫ1ых панелях нового меню работают, можно удалить .111.1110111'1111.10 панели из меню ACAD. Для этого надо в окне ( iislomiz.c (Ддшп 1 ши) (см. рис. 1.1) выделить панель и нажать кнопку Dilctc (Удалить). При очередном запуске AutoCAD абзац с этой панелью ьудет автоматически удален из файла Acad.mns. Описанный выше процесс не всегда получается с первого раза. Надо дейст- noiiai b очень аккуратно, особенно при удалении ненужного текста из копии фапла Acad.mns. Нюрой способ. < делайте еще одну копию файла Acad.mns. Удалите все, кроме заголовка и имени меню, как показано на рис. 5.4. Г' V-Macro.mnj • Notepad Fie Edit Format yiew Help H H AutoCAD menu file - C:\Program Files\AutoCAD 2D02\Support\acad.mns ***MENUGROUP=V-menu Рис. 5.4. Заготовка для меню 1.ПОЛОВОК оставьте прежний, оригинальный. Замените только имя меню: * * *MENUGROUP=V-Menu. ( охраните файл под именем V-Macro.mns и закройте его. Если файл с та- ким именем уже был создан, измените имя. Отройте AutoCAD и командой Menu (Меню) или Menuload (Менюзагр) загрузите это пустое пока меню, бандите в диалоговое окно Customize (Адаптация) и в поле Menu Group (I руппа меню) выберите V-Menu. Поле Toolbars (Панели инструментов) чис- 1ос, там ничего еще нет. Нажмите кнопку New и присвойте новой панели имя IV-Clipboard. Узкий прямоугольник пустой панели появится на экране. Среди ранее созданных инструментальных панелей найдите панель с назва- нием IV-CIipboard, принадлежащую меню ACAD. Перенесите все три кноп- ки ной панели на новую или скопируйте их, удерживая нажатой клавишу Сп1> клавиатуры. (Во время выполнения этих действий окно Customize (Аллигация) должно присутствовать на экране.) Закройте AutoCAD и от- I.рчй'Ге его снопа Новая панель должна появиться на экране. Откройте те- перь <|>апл V М изо mns Вы увидите, что AutoCAD сам переписал заголовок, ||о|).||Ц||1 новую нпн',|||. и janiiciui концовку, при этом нигде не ошибся и ос- I.1IHIII и кв • !>>• ин было необходимо, нужные пробелы. Одно только не
.'6 Ч.и ib I. Р.1 .iOoim и нллроина ком.чщ Минь tkv",} <1л ’ля сделал — не перенес наших*имеи рисунков на кнопках, а присвоил им но- мерные имена (рис. 5.5). Г V-Macro.mns - Notepad да Ele Edit Fermat View Help // AutoCAD menu file C:\Macro\My_FINS\V-Macro.mns ♦**MENUGROUT=V-Menu ♦♦♦TOOLBARS **1V-CLI₽BQARO ID_1V_C1ipboard_0 [„Tool bar("IV-Clipboard", „Floating, „Show, 236, ID_Copybase_0 („В ttonC'Copy with Base Point", "Copy9961.bmp", "J ID_Pastebloc_0 [„Button("Paste as Block", "Past2391.bmp", ‘ICO, 16C ID_Pasteorig_0 [„Button("Paste to Original Coordinates , "PastJS 12 II End of AutoCAD menu file - C:\Macro\My_MNS\V-Ma„ro ,mns Рис. 5.5. Автоматическое заполнение меню Далее предстоит небольшая ручная работа по переименованию пиктограмм и переносу оставшихся панелей из меню ACAD, с которой справиться не- трудно. Теперь собственное меню готово. # Третий способ. Данный способ рассчитан на совсем ленивых. Откройте новый текстовой файл в NOTEPAD и назовите его X-Menu.nuis. Для этого в диалоговом окне Save as (Сохранить как) выставьте тип файла АП Files (Все файлы). Поместите его в папку C:\Macro\My_MNS и зайдите в AutoCAD. Загрузите меню уже известным способом. Поскольку файл был чистым и это меню не имело даже имени, то при загрузке по умолчанию оно получит полное имя файла. Соз- дайте в новом меню инструментальную панель и скопируйте сюда любую кнопку. Закройте AutoCAD и откройте файл X Menu.nins. Здесь вы с удоволь- ствием увидите, что появились абсолютно все нужные записи (рис. 5.6)! Поменяйте теперь имя меню, убрав из него путь доступа, и запустите Auto- CAD. Все три способа создания файла меню * mns основаны на том, что AutoCAD сам записывает пункты меню из диалогового окна Customize (Адаптация). То же самое происходит при назначении "горячих клавиш". Теперь при создании новых кнопок или "горячих клавиш" всегда следует помнить, в каком меню вы расчитываете их разместить — в меню ACAD или в меню V-Menu. При вызове диалогового окна Customize (Адаптация), если щелкнуть ПК по любой новой кнопке, раскроется список всех пансчей инструментов нового меню Если щелкнуть ПК по любой кнопке меню
I 'MWI ' ( i'0< l<‘ HHl lh‘l| и ДЯ 79 \< AD. |XiCKp<»< пн пинок iucx оригинальных панелей AutoCAD При выде- iriiuii cipoKii / Menu" в поле Menu Group (Группа меню) диалогового окна < ’Momuc (Адлпгнпни) и забудьте поставить флажок в окошке Show Tooltips on toolbars (Покаibinaiь комментарии). Иначе при приближении курсора мыши к кнопке не появится ее название. Рис. 5.6. Создание меню ”с чистого листа” Iciicpb можно это новое меню V-Menu перенести на другой компьютер. При этом следует скопировать и папку с файлами рисунков на кнопках." Оба м.нсриала надо разместить в тех же директориях (C:\Macro\My_MNS и < \Macro) на другом компьютере, а в диалоговом окне Options (Настройка) па вкладке Support File Search Path (Путь доступа к файлам поддержки) пало добавить к имеющемуся списку еще три папки C:\Macro\Blocks, < \Macro\Icons, C:\Macro\My_MNS. Впрочем, если переносится и свой профиль (Profile), то он сам установит ИП1С0К путей доступа к файлам поддержки, перенесенный с первого ком- пыогера. Перед копированием профиля его следует освежить, нажав кнопку I xport (Экспорт) и выполнив процедуру сохранения. II папке Blocks у нас находятся учебные блоки. При реальном переносе ме- ню на другой компьютер состав "приданного" может быть иной. Порядок установки своего меню на другой компьютер должен быть сле- дующим: I В окне Options (Настройка) импортируйте свой профиль (Profile) и уста- новите его текущим. Нажмите кнопку Apply (Применить) и на вкладке I lie (Файл) убедитесь, что в пути доступа к файлам поддержки добавлены новые директории. Если профиль не переносится, запишите эти дирек- гории вручную. (шрушге свое меню из файла V-Menu.mns, пользуясь командой Mciiiilouil (Mt iimiarp) или Menu (Меню).
fh) Hell lb I I'.l Ifl.lfliltb.l И ll.b 1,4'llM hliM.llm M*i<«............................... III Гели все операции вы пол пены корректно, инструментальные iianenn пере- несенного меню появятся на экране. Иногда бывает необходимо перейти на другой профиль, а затем вернуться на свой. Часто возникает вопрос, где вносить изменения — в файле *.mns или *.mnu. Последний мы пока не создавали, но сделать это нетрудно. Файлы Acad.mnu и Acad.mns отличаются только некоторыми комментариями. На- ши файлы, описывающие панели инструментов, ничем не отличаются по содержанию. Сохраните файл как *.mnu в той же директории, и все. Полу- чился шаблон, который нельзя изменить (испортить) из AutoCAD Его можно отредактировать только вручную. При его загрузке восстановится вид ваших собственных панелей инструментов в соответствии с последней ре- дакцией файла *.mnu. Впрочем, всегда можно хранить отдельно последнюю копию файла *.mns, установка которой вместо оригинала даст тот же резуль- тат, что и загрузка из шаблона. Не забудьте только удалить файлы *.mnc и *.1ппг старой версии, чтобы они переписались заново. Теперь получилось, что в папке C:\Macro хранятся не только запасные, но и рабочие материалы — Icons, My__MNS, ProfileKniga.arg, утеря которых мо- жет стать весьма существенной неприятностью, поэтому сделайте вторичные копии этих файлов где-нибудь в другом месте и периодически их обновляй- те, добавив к имени папки дату, когда сделана копия.
Часть II РАСЧЕТЫ. ЗАГРУЗКА СТИЛЕЙ □ Расчетщ с помощью геометрического калькулятора □ Внемасштабные элементы □ Применение функций LISP в макрокомандах □ Применение функций языка DIESEL для автоматизации масштабирования □ Работа с языком Script в макрокомандах
Глава 6 Расчеты с помощью геометрического калькулятора 6.1 Общие положения Цепью этой главы не является полное описание возможностей калькулятора. Желающим изучить его более подробно придется поискать соответствующую литературу. Поможет в его изучении и сисгема помощи Help AutoCAD. Команда Cal (Кальк) вызывает геометрический калькулятор. С его помо- щью можно решить математическую задачу или рассчитать и поставить на чертеже точку Калькулятор может считать сложные математические выра- жения, используя стандартные функции. К.шькулятор оценивает математические выражения в соответствии со стан- нартными правилами: П выражения, заключенные в скобки, рассчитываются первыми, начиная с внутренних скобок; 1 порядок действий: сначала возведение в степень, затем умножение или деление, последним производится сложение или вычитание; П последовательность выполнения равноценных операций слева направо; П отсутствие или наличие пробелов, их количество не влияют на результат (это касается всех выражений калькулятора, не только математических). Калькулятор оперирует как с целыми (Integer), так и с вещественными (Real) числами. В дальнейшем мы будем использовать английские термины. Калькулятор имеет также ряд специальных функций, позволяющих рассчи- ii.iii.irb вектора и точки, поставить точки на чертеже или выбрать их курсо- ром, в том числе используя функцию объектной привязки — OSNAP Ряд функций калькулятора работает и в 3D-пространстве. В пашей paboic назначение и расчет точек имеет первостепенное значение Через ра<:с1.|илспиые определенным образом точки наши кнопки проведут н\ чинк- IIHIIIII if .ином, и пческого вычерчивания деталей чертежа.
iM Чм lb II I'.ti >№«м IK Si 1 1И I Й В версии AutoCAD LT nci калькуляторе, по се пользователям ыкжг следуе| ознакомиться с этой главой, поскольку она дает ключ к пониманию пред- лагаемых для версии LT решений без применения калькулятора. Одно из упражнений этой главы предназначено для версии AutoCAD LT. Математические функции, поддерживаемые калькулятором, приведены в табл. 6.1. Таблица 6.1. Математические функции, поддерживаемые калькулятором Оператор/функция Описание ( ) л Групповые выражения Возведение в степень *, / Умножение, деление + , - Сложение, вычитание sin(angle) Синус угла cos(angle) Косинус угла tang(angle) Тангенс угла asin(real) Арксинус числа. Число должно быть в промежутке от —1 до 1 acos(real) Арккосинус числа. Число должно быть в промежутке от —1 до 1 atan(real) Арктангенс числа In(real) Натуральный логарифм числа Ig(real) Десятичный логарифм числа exp(real) Показательная функция натуральных логарифмов explO(real) Показательная функция десятичных логарифмов sqr(real) Квадрат числа sqrt(real) Квадратный корень числа. Число не должно быть отрицательным abs(real) Абсолютная величина числа round(real) Число, округленное к ближайшему целому trunk(real) Целая часть числа r2d(angle) Перевод меры угла из радиан в градусы d2r(angle) Перевод меры угла из градусов в радианы Pi Константа п
I H tit. I ( Г .(< <« Itji Hi lAh Hit Ail» 'Mill'll I *cn< 4 <' K.lJIbKyJlflTOpa 85 в 2. Назначены »точек П.нкрем команду cal (Кальк) на клавиатуре. Затем <Enter>. AutoCAD за- ир нинваст выражение. > • Expression: 2+6 Л 8 Повторим команду cal (Кальк) Л » Expression: 2+6*3 Л 20 l.'iecb знак "*" есть символ умножения. Повторим команду cal (Кальк) Л »Expression: (2 + 6) *3 Л 24 Ка к и положено в Математике, сначала производится действие более высо- кою порядка. Цосфойте линию определенной длины с помощью калькулятора. Выставьте режим ортогональности (ORTHO) в состояние On (Вкл). Команда Line л (можно с кнопки) Specify first point: Задайте первую точку щелчком ЛК. specify next point: Задайте направление линии, отведя курсор мыши в любую сторону. Команда 'Cal Л Апостроф перед командой cal — знак того, что кальку- лятор применяется, не прерывая команду Line. »Expression: (2+6) *3 л л Повторное нажатие клавиши <Enter> необ- ходимо для того, чтобы закончить выполнение отрезка. Команда List (Список) Л .'elect objects: Опция Last Л (или, сокращенно l) Последний созданный объект 1 found Один объект найден Select objects: Л Появилось окно AutoCAD Text Window (Текстовое окно AutoCAD). Найдите в нижней части окна сведения о линии. 1. mitli (длин i) =24 hiiiiiio именно Hindi длины мы задали вычертить калькулятору, и он с этой I hi.l’lfll Cllp.lllll i' ч
МП fl It II M/|«| • I iMfllwl Килькуляiop мож* i oOv>inibiii;iii> Jioci.uo'iiio сложные m.ih muiii<i< «>nr in.ipa жения, что видно из табл. 6 I. Теперь возьмем команду Line (Отрезок). Режим ортогональности любой. Line Л Specify first point: Задаем первую точку specify next point: Вместо постановки следующей точки вызываем 'Cal, с апострофом 'Cal Л »Expression: Р1=@ Здесь мы попросили калькулятор запомнить точку начала линии под именем Pl ("Р" от слова Point, точка). Символ @ ото- бражает последнюю взятую точку. Specify next point: Поставьте конечную точку линии Л К Specify next point: J Вычерчивание отрезка закончено. Cal л Вызываем калькулятор командой cal, на этот раз без апострофа, так как команда Line закончена. »Express.ion: Р2=@ Конечная точка линии получила имя Р2. Точкам можно присваивать любые имена, кроме чисто цифровых. Теперь начертите несколько разных объектов в другой части чертежа, что-то подвиньте, что-то скопируйте, имитируя интенсивную работу. Затем, нахо- дясь в произвольном месте чертежа, введите команду circle (Круг): Circle Л Specify center point for circle...: Задайте координаты центра ок- ружности при помощи калькулятора: 'Cal Л (С апострофом) >>Expression: Pl Л (хххх.) AutoCAD показывает координаты центра окружности, каковой является точка Р1. Specify radius of circle...: Радиус окружности также зададим при помощи калькулятора: 'Cal л >>Expression: Р2 Л Приблизьте то место чертежа, 1де были заданы точки Р1 и Р2. Убедитесь, что AutoCAD сделал окружность с центром в точке Р1, радиус которой равен рас- стоянию от Р1 до Р2. Теперь сохраните этот учебный чертеж под любым име- нем, закройте и откройте его снова Повторите операцию с окружностью: 'Cal Л >>Expression: Pl J >>Error: AutoLISP variable Pl has no value.
। riu.it> | i€4. in 6 in >ii|i.hi 1чомырическоги калькулятора 87 (IIcpeMcniioii Aulol |S|’ pi не присвоено значение.) Приходим к заключению: калькулятор запоминает координаты точек как переменные AutoLISP (Первое знакомство с языком LISP уже состоялось). Впоследствии мы научимся системные переменные AutoCAD переводить и системные переменные AutoLISP, а последние использовать в вычислени- ях при помощи калькулятора. 11амять у калькулятора достаточно длинная, а именно — пока открыт файл. Вспомните, объекты, получившие статус Previous (Предыдущий), сохраняли сто на очень короткое время (см. раздел 3.3), Но и этого было достаточно для сю применения в нашей работе. А тут— целая вечность, вся сессия с этим файлом. ) । о упражнение немного уводит нас в сторону от изучения калькулятора, но имеет отношение к вставке символа Homerun. Режим ортогональности ORTHO поставьте Off (Откл). Нарисуйте любой прямоугольник и противоположный его угол запомните как точку А2. По- метьте прямоугольник ручками (Grips). Подвиньте курсор мыши на ручку ючки А2 и нажмите ЛК, а затем ПК. В появившемся контекстном меню ЛК выберите опцию Rotate (Повернуть), затем сразу ПК и Сору (Копировать) После этого постройте несколько копий прямоугольника, расположив их веером относительно«точки А2, как показано на рис. 6.1. Рис. 6.1. Упражнение Все прямоугольники оказались как бы нанизанными на точку А2. (Будем надеяться, после прочтения раздела 1.2 у читателей не осталось сомнений и необходимости иметь контекстное меню на правой кнопке мыши.) Упражнение для полной версии AutoCAD I оманда Erase (Стереть): г J Select objci i»
88 Часть II. /’.« 4", iki сгилеи >>Expression: A2 J 1 found J Последняя копия прямоугольника удалена. Повторяем операцию, удаляя тем самым предпоследнюю копию, и т. д., пока не будет удален оригинал. Если командой Draworder (Порядок) вы измените порядок, в котором пря- моугольники были нанизаны на точку А2, поставив одну из первых копий наверх, то команда Erase (Стереть) выберет тот, что стал верхним. Отсюда вывод: сначала удаляется тот объект, который расположен сверху. Упражнение для LT и полной версии Выполните или восстановите веер четырехугольников согласно описанию к рис. 6.1. Командой Erase (Стереть) с опцией Last (Последний) удалите последнюю копию четырехугольника. Повторите команду с этой же опцией. Стирается предпоследняя копия и т. д. Таким образом статус Last (Последний) после- довательно переходит от последних копий к начальным. Этим обстоятельст- вом можно воспользоваться для построения команды универсального сим- вола Homerun для LT-версии. Интересно, что команда Draworder (Порядок) в этом случае ничего не меняет: AutoCAD считает объекты по хронологии их построения, независимо от того, что расположено-наверху. Калькулятор может назначать точки и давать им имена. Точки могут приго- диться для дальнейшего использования. Для этого служат функции. Одна из них, Cur, происходит от слова Cursor, курсор мыши. Cal J »Expression: Cur J Enter a point: (Введите точку) Поставьте точку на экране. (хххх.) AutoCAD показывает координаты точки Cal J >>Expression: Р5=@ (хххх) AutoCAD показывает те же самые координаты. Теперь это координаты точки с именем Р5. Можно две эти операции све- сти в одну: Cal J >>Expression: P6=Cur J Enter a point: Поставьте точку на экране (хххх) AutoCAD показывает координаты точки. Мы получили точку Р6 с указанными координатами.
' ; ni l 6 I i. I<*lhlII. i*i. ,<<'> I >4,1 H/iH'M к li.HD h IllbhWl**11>/>л 39 6.3. Вычислении точек объектной привязки k pii.k)iiHiup moaci in iKxii.ioii.iib возможности объектной привязки (OSNAP) । ik член, арнфмсгнчел кнх выражений. Il.i’icpinre ирон вольный прямоугольник. Теперь зададимся целью поста- niiib окружность произвольного диаметра в центре прямоугольника без до- |цч|||пгельных построений. IpviiiMH словами, надо найти центр прямоугольника. Circle (или просто "с") J ;pecify center point...: Запрос точки центра окружности Cal J ^Expression: (End + End)/2 J ‘lect entity for End snap: Выберите объект для привязки "Конечная точка". Ih рскрестье курсора превратилось в квадратик — AutoSnap Marker (Маркер Ли।онривязки), которым AutoCAD приглашает показать конечную точку, 1 нашем случае — один из углов прямоугольника. Щелкните ЛК по одному 1 । чу, затем по противоположному и можно убедиться в том, что окружность р 1местилась точно в центре прямоугольника. Размер маркера автопривязки регулируется в диалоговом окне Options (На- стройка) на вкладке Drafting (Построения). В. рнемся к разделу 4.1, к тому месту, где дверь вставлялась в проем и точка w инки приходилась на середину проема. Тогда нам очень пригодилась бы 1НН1.1Я объектная привязка "Середина между двумя точками" Сейчас мы । можем ее создать. Запишите код команды на новую кнопку: *_Cal;(End+End)/2; При проверке команда выдает координаты средней точки, например, четы- рwiельника, как и было задумано. Но если выполнить сначала команду ( iiilc (Круг) или Line (Отрезок), или другую команду, а затем применить ну новую макрокоманду, то ожидаемого результата нет. AutoCAD по- врежпему выдает только координаты точки. Посмотрите еще раз на код только что сделанной команды. Начинается он, кик и все предыдущие, с лслс. Это сочетание равноценно двойному нажа- пно клавиши <Esc>, т. е.- мы сначала сбросили только что взятую команду, пинрпмср. Circle (Круг), а затем требуем от кнопки, чтобы она рисовала ок- ру кноеп. В ном i аучае ,ЛсЛС" следует убрать.
‘Ю ‘Imiblll'i iij cihjikiI Уточненный код: • '_Cal;(End+End)/2; [6-1] Проверьте его работу. Одновременно убедитесь, что совсем не обязательно щелкать ЛК именно по конечной точке, достаточно щелкнуть по линии где- нибудь вблизи нее. Отступление OSNAP (Привязка) с использованием функции калькулятора Cur будет выби- рать по вашему желанию End, Mid, Nea и т. д., если в настройках OSNAP (Привязка) стоят флажки одновременно в нескольких окошках. Надо только слегка пошевелить мышью, пока на курсоре не появится нужный символ: End — □ , Mid - д и т. д. Только убедившись, что появился нужный символ, можно нажать ЛК. Перебор символов можно выполнить и при остановленной мыши путем нажатия клавиши <ТаЬ>. Знак подчеркивания надо поставить только перед командой Cal (Каик). AutoCAD переходит в режим калькулятора где понижает английский язык даже в русской версии. Режим объектной привязки, использующий для нахождения середины меж- ду двумя точками конечные точки , не является универсальным. В другом случае может понадобиться средняя точка между серединами двух отрезков, или между точками, не являющимися ни концами, ни серединами чего- либо. Поэтому для создания универсальной привязки лучше применить функцию cur, о которой речь шла выше: '_Cal;(Cur + Cur)/2; [6-2] Присвойте кнопке рисунок, например такой и поместите ее в сущест- вующую панель инструментов Object Snap (Объектная привязка) для прак- тического использования. Имя новой привязки — Middle between two points (Середина между двумя точками). Эта команда, к сожалению, имеет ограничение. Если режим привязок на- строен одновременно на несколько вариантов, а в районе предполагаемой середины между двумя точками есть ряд объектов, вместо истинной середи- ны привязкой может быть захвачена случайная точка на ближайшем объек- те. Об этом всегда следует помнить, поэтому в поле Description (Пояснение) окна Customize (Адаптация) сделайте запись: Attention! Limitation! В этом поле можно написать и по-русски: Внимание! Ограничение! Эта запись появится в строке состояния при приближении курсора к кнопке. Или на время работы команды можно отключить режим OSNAP, выставляя вруч- ную нужную опцию дйя забора нужных точек. Следует иметь в виду, что если какая-либо программа, в том числе и макро- команда, создается для коммерческого использования, она должна быть все- сторонне проверена и обкатана в самых невероятных ситуациях. Если обна-
linn Л Р.иу >1Ы г |1<>М<ч1|Ы> <><>.’ ЖИО hrt 1ькуингора 91 |Ц ♦ II 11.1101LH О| |>1111Н*|' IIIIII ко । < >|Ч.1С невозможно исправить, такую программу МЧАНО IICIIOJI |> IOII1I11. io ihxn для себя. 1рцмсняя калькулятор для использования функций объектной привязки, HllllO иметь в виду, чю для ввода названия привязки следует использовать I >н сс первых буквы (табл. 6.2). Таблица 6.2. Сокращенный вызов объектных привязок Аббревиатура OSNAP 1 nd ENDPOINT — конечная точка Ina INSERT — вставка блока или текста hit INTERSECTION — пересечение Mid MIDPOINT — средняя точка • »n CENTER — центр NEAREST — ближайшая точка N< d NODE — точка, также начало выносной линии размера Una QUADRANT — квадрант I'rtr PERPENDICULAR — перпендикуляр Inn TANGENT — касательная I । .4. Заданные расстояния и углы Калькулятор может вычислить точку, отстоящую от известной на заданное (мссгояние. Возьмем команду Circle (Круг). Circle Л pecify center point for circle...: . Укажите точку центра окружно- сти. :₽ecify radius of circle...: JIK поставьте точку на будущей окружно- ciii. Получив окружность, вызовите калькулятор Cel J Ixpression: Pl=@ J Пнн.мите команду Line: (Отрезок) । л pacify first po±nt: (Первая точка:) Не указывая точку вызовите каль- k ул и юр '(«1 j hi 11 'И 11 । ( in, о] j Отрезок получил, начало
У2 Часть II. Расчеты. Загрузка стилей specify next point...: (Следующая точка...:) Завершите отрезок в про- извольной точке нажатием ПК J Убедитесь, что начало отрезка находится в точке, отстоящей от центра окруж- ности на 10 единиц вправо и на 20 единиц вверх. Этой точке можно дать имя Повторите упражнение. После того, как центр окружности получил имя Р1, вместо команды Line (Отрезок) сразу повторяем вызов калькулятора. Cal J »Expression: Р2 = Р1+[10,201 (хххх) AutoCAD ответил координатами точки и запомнил ее под именем Р2. Выражение [10,20] — это вектор, прибавляемый к точке Р1. На конце векто- ра встала точка Р2. В общем случае точка или вектор являются набором из трех вещественных чисел, заключенных в квадратные скобки. Третье чис- ло — это координата Z, которая в нашем примере равна 0 и поэтому может быть опущена. Также замечаем, что при вычерчивании окружности мы щелкали ЛК дваж- ды: чтобы назначить центр и чтобы выбрать радиус. Но точка @ (Lastpoint, последняя) определилась именно в центре, т. е. при первом щелчке. Второй щелчок не стал последней точкой (Lastpoint) AutoCAD запоминает положе- ние последней точки логически, а не механически. Полезные советы При выполнение упражнений калькулятора, связанных с вычислением точек, часто приходится проверять их координаты. Быстро сделать это может команда AutoCAD ID. Название этой команды происходит от слова I Certification — распознавание. Расположение точек можно проверить, например, вычерчиванием линий между ними из командной строки, используя прозрачную команду ' Cal — от точки Р5 к точке Р6, затем к точке Р8 и т. д. Следите при этом, чтобы режим объектной привязки был в по- ложении Off (Откл). Проще всего это делает клавиша <F3>. В противном случае воз- можен сбой команды: вместо ожидаемой точки линия может прийти, например, на конечную точку одной из ранее начерченных линий. В командах, связанных с вычер- чиванием линий через вычисленные точки, мы будем автоматически отключать режим объектной привязки на время работы команды, а затем возвращать его. 6.5. Точка на линии Калькулятор может вычислить точку, лежащую на линии, соединяющей две ранее назначенные точки, по заданному параметру. Возьмите опять команду Line (Отрезок) Line J
I "4441 f P«li '«Bl IJ < III'Минн Bl 1як*1И1/ч1Ч01ЖЧУ КЛЛЬЛу/М1<>р,1 93 l« iiy first i...in (ll,,|4i.in 10ЧК.1) Начните отрезок из произвольной P.l'lkll г- I ty next point Вместо ввода следующей точки наберите: . п1 J Expression: P1=@J cify next point...: Поставьте конечную точку на экране и закончите пн ню, затем вызовите калькулятор: r«l J • Expression: Р2=@ J J/iecb начальная точка отрезка получила имя PI, а конечная — Р2 Возьмите команду Circle (Круг) < Ircle J •ч «icify center point for circle or ...: Вместо ввода центра окружности наберите: al J Expression: Pit(Pl,P2,0.25) J |.щанная нами окружность получила центр в точке, расположенной между 1’1 и Р2 на расстоянии, равном 0.25 от длины Pl—Р2. Запомним еще одну функцию калькулятора — pit. Функция может высчитывать точку между пнумя известными. Запомним правильный синтаксис ее написания. /(ругая похожая функция — pid. Начертите отрезок линии длиной 10 еди- ниц. Начальной точке дайте имя А, конечной — В. Повторите команду ( ircle (Круг) । Ircle J pecify center point...: 'Cal J Expression: Pld(A,B,3) J Центр окружности встал на точку, отстоящую от точки А на три единицы и < |орону точки В. Вычисленным функциями Pit и Pid точкам можно дать имена и хранить н>чки для дальнейших построений, которые можно вести в автоматическом режиме. Запись этого выражения для первого примера такал: 1-1 = Pit (Pl, Р2 , О . 25) Пни для второго примера: - Pld(A,B,3) ItiMcinM также, что вещественное число 0.25 можно записать как .25 Здесь опущен 0, но осталась точка, отделяющая десятичные доли от целого. Каль- ЕУчиюр (и и общем случае AutoCAD) поймет эту запись правильно.
IM f Ч.Н П> II /'.1.4 (IK Ihl < J Hit 'Й <l'yn> iiiiki hi можно iicpciin iu kiik iioopcuiiiiiypy от Point, I Hie, phranteTer (точка, линия, пирометр), а и функции pld буква "d" обозначает Distance (расстояние) Цвв другие функции могут вычислять точки, находящиеся на пересечении двух oipc,ков или на пересечении отрезка с планом. Проведите два пересе- кающихся отрезка и назначьте конечные точки Р1 и Р2 на одном из них и РЗ н Р4 на другом. Р5 >111 (Pl, Р2, РЗ, Р4) I — or Intersection, пересечение I — от Line, линия При помощи функции ill калькулятор вычислит точку Р5 в месте пересече- ния щрезков, в том числе и для сходящихся (не пересекающихся) отрезков. Функция Ир определит точку пересечения линии, проходящей через точки Pl, Р2, с планом, на котором лежат три другие точки РЗ, Р4 и Р5. Запись при этом должна быть такой: Р6=11р(Р1,Р2,РЗ,Р4,Р5). 6.6. Нормаль Функция калькулятора Nor (от слова Normal, нормаль) вычисляет единич- ный вектор, перпендикулярный линии или плану. Век*гор определяет на- правление нормали, а не местоположение на плане. Чтобы опре телить точ- ку, нужно добавить вектор к известной точке. Здесь мы рассмотрим только пример определения вектора, нормального к линии Pl—Р2 для плоского чертежа (рис. 6.2). Другие возможности функции Nor, касающиеся трехмер- ного черчения, выходят за рамки нашего повествования. Рис. 6.2. Нормаль Считаем, что точки Р1 и Р2 уже определены. Надо вычислить точку РЗ, ле- жащую на нормали к линии Pl—Р2. По определению фунции Nor для плос- кого чертежа (2D) результирующий вектор-нормаль ориентирован влево от липни PI Р2. т. е. прогни часовой стрелки, если за центр циферблата при- шив IO4KV PI
Ill.ll I fl /'l. ffl'Ki IpU’M I hlllll K.MU.fll ПН'р*95 I J rxpreaaion: Pi HiN r(Pl,P2) J Ixxxx) коордип.п i.i При ном расстояние PI—РЗ будет составлять 1 единицу, так как к точке Р1 ;n>ti.iiuicii единичный вектор. Для определения точки, лежащей на другом р.птюянии, обозначим его "L", выражение такое: II Pl+L*Nor(Pl,Р2) l.iл.пгте длину L, например 3 единицы. Определите точку РЗ и проведите линию 1’1 РЗ.-Убедитесь, что она получилась длиной 3 единицы и перпендикулярна । 'ниши Pl—Р2. И не забудьте при этом отключить режим объектной привязки! 6.7. Вычисление расстояний I цлькулятор может вычислить расстояние между двумя точками, а также кр.нчайшее расстояние между точкой и линией (рис. 6.3). Рис. 6.3. Дистанция. Кратчайшее расстояние II нервом случае используется функция Dist (дистанция). l-let(Pl,P2) Калькулятор возвращает расстояние PI—Р2. По игором случае используется функция Dpi (Distance, Point, Line — дис- 1.1НЦИЯ, точка, линия): 1<1>1(РЗ,Р1,Р2) Калькулятор возвращает кратчайшее расстояние от точки РЗ до линии Pl—Р2. I in точка РЗ определяется курсором (ЛК), то выражение принимает вид: l»pl(Cur,Pl,Р2) I ли, например, надо вычислить высоту треугольника, используя объектную приписку, то выражение будет такое: 1 pl(End End,End) При этом iicpni.iii щелчок ЛК должен быть по вершине, откуда начинается ni.noi.i Tpeyio»i.iiинн
99______________________________ Ч-и и II г v »«/<> iii ।1 6.8. Вычисление углов Для вычисления углов служит функция Апд. Выражение Апд(Р1,Р2) опре- деляет угол между осью X и линией Pl—Р2 (рис. 6.4). Р2 Рис. 6.4. Вычисление углов Выражение Ang(P3,p4,P5) определит угол между отрезками РЗ—Р4 и РЗ—-Р5. Первой в скобках стоит вершина угла. На базе этой функции можно сделать кнопку для измерения углов: ЛСЛС_Са1Ang(End,Nea,Nea) ; [6—3] Команда измерит угол за три щелчка J1K, причем первый щелчок должен быть по вершине угла. При необходимости измерит^ угол между двумя схо- дящимися отрезками, когда видимой вершины нет, надо делать дополни- тельные построения, что неудобно. Поэтому лучше сделать так: назначить по две точки на каждом отрезке и вычислить точку их пересечения функци- ей ill, затем ввести результат в функцию Ang. Все это можно сделать за один прием, ведь калькулятор считает выражение во внутренних скобках первым. ЛСЛС_Са1;Pl=Nea;\;Р2 =Nea;\;РЗ =Nea;\;P4=Nea;\;Ang(Ill(Pl,Р2,РЗ , Р4) , Р2,Р4); ]6-4] Проанализируйте выражение. Оно записано здесь, минуя таблицу шагов Определите, влияет ли последовательность назначения точек на результат? Можно ли и как поменять местами точки во внутренних скобках? Можно ли вместо точек Р2 и Р4 во внешних скобках взять другие точки? Почему вы- брана объектная привязка Nearest (Ближайшая), а не Endpoint (Конточка)9 Наша команда сделала измерение угла за четыре щелчка. Используя LISP, можно было бы измерить угол за два щелчка, так как в LISP есть функция извлечения конечных точек отрезка, а здесь нам приходится щелкать четыре раза. Но если хорошенько подумать, можно измерить угол, образованный двумя сходящимися линиями, за два щелчка. Поручим AutoCAD сделать дополнительные построения автоматически, а после измерения угла удалить их. Надо получить вершину, т. е. временно продлить отрезки до их нересе-
I i.dm Ii. I'aiwTbl i. iniKuniihhi.. iiM.tpipwx.hu> и h.i/».xy/<wiopj 97 •и пня или iia'icpiif iii ниш px\ друше (лрезки. Первый вариант не выглядит in рсиекгивным. I < ни ii-ipiicoiia11> иовсрм Or любой точки первого исходного отрезка (при- II» iKa N< а (Б), назовем точку Р1) до мнимого пересечения со вторым ис- мыным отрезком (привязка Арр (ж), точка Р2). Затем другой отрезок — in ючки пересечения до любой точки второго исходного отрезка (привязка hi (Б), точка РЗ). Дополнительные линии удалить последовательными командами Erase (Удалить) с опцией Last (Последний). Точки Pl, Р2 (пере- • I чепие) и РЗ останутся. Далее измерить угол функцией Ang(₽2,pi,p3). А сели вместо линии взять полилинию? Будет короче. Но что-то говорит <i him, что с полилинией будет хуже. Что же? Ее ширина! А вдруг полилиния Выла настроена раньше на определенную ширину, тогда будет неудобно с in'll работать. Проверять каждый раз ширину? Но мы ведь программисты. II' е должно делаться автоматически. Вскоре мы познакомимся с основами I ISP и научимся менять ширину полилинии на время работы команды, воз- |рзщая затем ее в исходное состояние. |Л пока отложим полилинию и вернемся к линиям. Здесь нас может подсте- Ь. |,иь еще одна опасность: вдруг текущий слой заблокирован? Тогда коман- '(.I Erase (Стереть) не сможет удалить временные линии. Ну что же, будем цедить за состоянием слоя и вручную удалим линии, если такое случится, Ника не научимся (опять при помощи LISP) временно менять состояние 1'iineu. Или, что мы уже должны уметь, создать специальный слой, сделать •'io текущим, выполнить в нем дополнительные построения, удалить их и V 1 злить слой. I лелать эту кнопку (без учета того, что слой может быть заблокирован) Предлагается читателям в качестве задания 6.1. Код кнопки получает I нас очередной номер [6-5]. Цой кнопкой с именем Angd можно открыть новую панель инструментов • пищанием IV-Misc. Misc это сокращение от слова Miscellaneous, смешан- пып А происхождение названия кнопки вы найдете в ответе на задание. I пришивается, зачем надо делать кнопку для измерения угла, если в панели Dimension (Размеры) есть команда Dimangular (Рзмугловой), делающая замер о простановку результата за три щелчка. Если нам нужна простановка угло- ||<чо размера, тогда альтернативы этой команде нет. Если же только измере- ние, тогда кнопка оказывается полезной: результат получается быстро и । тчпостью до четвертого знака градуса. Не требуется предварительно на- ipaiuiarb угловой размер на необходимую точность (по умолчанию команда Dimangular (Рзмугловой), выдает точность до 1°). Но если надо получить ре- ivni.iai в градусах, минутах и секундах, пользуйтесь стандартной командой liliiiaiigiilar с I'liolueieiByiomeft настройкой размерного стиля.
•*' l/.i« 'b II Г < ч«'ь, l«t/pyi iHjjeil 6.9. Вычисление точки с помощью вектора Функция калькулятора vec (от слова Vector, вектор) вычисляет вектор от точки Р1 до точки Р2. Vec(Pl,P2) Постройте отрезок, начав его от точки 0,0,0 под произвольным углом и дли- ной 10 единиц. Вызовите cal и задайте отрезку конечные точки: Р1 = [0,0,0] и Р2 = End (рис. 6.5). Координаты точки должны быть записаны в квадрат- ных скобках. Запишите полученные координаты точки Р2. Определите век- тор Pl—Р2, пользуясь функцией vec. Сделайте копию отрезка в другом мес- те, задайте ему начальную точку РЗ и конечную Р4. Определите вектор РЗ— Р4. Результат будет такой же, как и для вектора Pl—Р2. Функция vec вычислит разницу в координатах по всем осям для начальной и конечной точек вектора. Функция veci вычисляет единичный вектор от точки Р1 в направлении точки Р2. Для определения вектора длины L от точки Р1 в направлении Р2 надо L умножить на единичный вектор. L*vecl(pi,Р2) Для получения точки Р5 (рис. 6.5), отстоящей от точку РЗ на заданное рас- стояние, например 17 единиц, и в направлении Р4, надо к точке РЗ доба- вить соответствующий вектор, на конце которого и будет искомая точка. P5=17*Vecl(РЗ,Р4) Аналогичным способом можно вычислить точку, отстоящую от известной. Это можно сделать, используя расстояние между ними и угол, отсчитывае- мый от оси X против часовой стрелки (рис. 6.6). Рис. 6.5. Вычисление точки с помощью вектора Рис. 6.6. Вычисление точки через расстояние и угол
/ЛЛ1 i I 2 i Ч'ЧЬ ПОАЮНрГ !• lAIPlf'iBipi лиц> fui 1ЬКу/1чГЧ/)1 99 V> fl + 1^*401 l/icci. PI — iimei iii.i» точка; 1’2 — вычисляемая точка; S - величина вектора; 10" — угол между вектором и осью X. Утол обозначается символом ” < ". Заметим, что |5<40] — это есть вектор в полярных координатах. 6.10. Вычисление точки вращением известной точки вокруг оси При помощи функции Rot можно получить точку на плоскости путем вра- щения известной точки вокруг оси Z на заданный угол (рис. 6.7). Рис. 6.7. Вычисление точки вращением Г! = Rot(P2,Pl,Ang) (ня 3D осью вращения может быть другая линия, не совпадающая с осью Z, по проходящая через известные точки Р1 и Р2. В этом случае для получения ючки Р4, если известна точка РЗ и угол, на который ее надо развернуть, выражение такое: Rot(РЗ,Pl,Р2,Ang) < Кч. вращения при этом ориентирована от Р1 к Р2. 6.11. Единицы измерения углов 11<> умолчанию углы представлены в градусах и их десятичных долях. Если необходимо представить угол в градусах, минутах и секундах, то запись ве- тчины угла такая: 1>)мив 20с “5dl0'20” I кхь буква "(1" oi слова degree, градус.
100 Чачь II . । 1гли колнчесию целых ipanycou О (пуль), го обязательно ii.i'iu i.uiiu ui>. 0dl0'20" нуль градусов *10мин 20c \ Если же нет минут или секунд, то их можно опускать: 15d20" = 15градусов 20секунд При необходимости представить углы в радианах за величиной угла должна следовать буква R: 15.6R = 35,6 радиан Константа записывается как pi. Выражение для перевода угла из радиан в градусы: R2D(угол) В скобках записывается угол в радианах, который надо перевести в градусы. Например, Cal J >>Expression: R2D(pi) J 180 Угол радиан = 180° Выражение для перевода угла из градусов в радианы: D2R(угол) В скобках записывается угол в градусах, который над® перевести в радианы. Например, cal J »Expression: D2R(180) J 3.14159 Задание 6.2. Команда для измерения углов [6-5], созданная ранее, давала результат измерений в градусах и их десятичных долях. Дополните код так, чтобы результат выдавался в радианах. Сделайте так же, чтобы можно было прочитать результат измерения углов как в градусах, так и в радианах. Оче- редной номер кода [6-6[. В табл. 6.3 даны сокращения для наиболее часто применяемых выражений, включающих объектную привязку Endpoint (Конточка). Таблица 6.3. Сокращенный вызов объектной привязки Endpoint Функция Сокращение Описание для выражения dee Dist (end, end) Расстояние между двумя конечными точками
I и in* fl f,i< ч*ил ( iMflHipitPPHit** ir>iH । i > .ii) iithm.i 101 Таблица 6.3 (окончание) Функция Сокращение дня выражения Описание 11 La Ill(end,end,end,end) Пересечение двух линий, заданных четырьмя конечными точками nine (end+end)/2 Середина между двумя конечными точками nee Nor(end,end) Единичный вектор в плоскости XY и нормаль к линии, соединяющей две конечные точки vee Vec(end,end) Вектор от линии, соединяющей две конечные точки V, el Vecl(end,end) Единичный вектор от линии, соеди- няющей две конечные точки Пользуясь этой таблицей, код [6-1] можно записать короче: '_Cal,-mee [6-7] ( Замечание ) Следует заметить,*что перед функциями калькулятора, в случае [6-7] это "тее", нельзя ставить знак подчеркивания! G.12. Калькулятор экономит щелчки II версии AutoCAD LT нет калькулятора, но пользователям данной версии । в’цует ознакомиться с этой главой потому, что здесь показано как можно иьоитись имеющимися средствами. II разделе 4.5 была намечена стратегия создания универсальной кнопки для щ'пого и правого символа Homerun — трех-голового головастика. Для рабо- п>| было необходимо запомнить точку вставки блока. Теперь при помощи uiKoro мощного инструмента, как калькулятор, мы сможем это сделать. «бкройте библиотечный файл H3R100 и сохраните его под новым именем II ИОО. Коль скоро мы создаем универсальную кнопку для левого и правого (пмнола Homerun, буква R в имени блока, означающая Right, правый, уже нс нужна. |>1я отработки команды разобьем ее на два этапа. Первый этап — это встав- ки блока головы, отзеркаливание ее и удаление ненужной. На втором этапе к.... хвост, и можно уже предчувствовать, что здесь будут проблемы.
tOZf Чяс|». ///'.. •>»(,. Ulpyjfhrl I 1ИЛ»И За основу для первого этапа возьмем начало кода |4-10|, заменим имя блока и составим таблицу шагов (табл 6.4). Таблица 6.4. Подготовка кода вставки символа Homerun, направленного в любую сторону Шаг Действие Запрос Autocad 1 Ortho 2 ПК или J Enter mode [On/Off] Состояние [Вкл/Откл] 3 off 4 ПК или J 5 -insert 6 ПК или J Enter block name: Имя блока: 7 Н3100 (Если блок вставляется впервые, здесь следует набрать полный путь к файлу: C:\Macro\Blocks\H3100.dwg 8 ПК или J Specify insertion point...: Точка вставки: 9 ЛК в чертеже Enter X scale factor... Масштаб по оси X... 10 ПК или J Enter Y scale factor... Масштаб по oci. У... 11 ПК или J Specify rotation angle ...<0> Угол поворота... 12 ЛК выбор угла (Для пользователей LT шаги 13,14,15,16 опускаются) 13 Cal с клавиатуры (здесь можно не вводить апостроф ('), так как преды- дущая команда полностью закончена
103 in i ( I .к u.’tu ( < tifst/ и и hii/o Таблица 6.4 (продолжение) Шаг Действия Запрос Autocad U ПК или J >>Expression Выражение 1® pl=@ даем имя Р1 точке вставки блока 1® ПК или J 11 Mirror , с клавиатуры Iй ПК или J Select objects: Выберите объекты: 1 । Last О ПК или J Select objects: Выберите объекты: •' 1 ПК или J Нет Других объектов) Первая точка оси отражения 2 @ Точка вставки блока ?3 ПК или J Specify second point of mir- ror line Вторая точка оси отражения зеркала 4 ЛК поставить зеркальную копию, выбрав подходящий угол Delete source objects? (Yes/No) <N> Удалить исходные объекты? <Нет> о ПК или J Мы хотим временно оста- зить оба изображения — прямое и зеркальное ₽в Erase 7 ПК или J Select objects: Выберите объекты:
104 4.i< и I1 I ч»ч1> i,up «h.i i initvH Таблица n.4( икончание) — Шаг Действие Запрос Autocad 28 ЛК пометить одно (любое) изображе- ние для удаления 1 found Select objects: 1 найден Выберите объекты: 29 ПК или J Удалить выделенное изо- бражение Код первого этапа команды для кнопки Н3100 (табл. 6.5). Таблица 6.5. Создание кода вставки символа Homerun, направленного в любую сторону 1 2 3 4 5 6 7 8 9 io 11 12 лслс Ortho Off ; -Insert t H3100 ; \ t i \ 13* 14* 15* 16* 17 18 19 20 21 22 23 24 Cal t Pl=@ ; Mirror ; Last ; • ; / \ 25 26 27 28 29 • Erase i \ • * Только для полной версии Запись в поле Macro associated with this button (Макрос для данной кнопки) окна Customize (Адаптация) для полной версии AutoCAD: ЛСЛС_Ortho;_Off;—-Insert;НЗ100;\;;\_Cal;Pl=@;—MirrorLast;;' ;_Erase;\; [6-8] В команде H3RI00 мы применили к вставленному блоку команду Select (Выбрать), чтобы он стал Previous (Предыдущий), и при этом мы воспользо- вались опцией Last (Последний). Здесь на блоке уже создана точка Р1. AutoCAD узнает объект по этой точке, поэтому вместо Last можно поста- вить 'Са1,-Р1. А можно оставить и Last - вспомните второе упражнение раздела 6.2. Этим должны воспользоваться пользователи LT ~C^C_Ortho;_OffInsert;Н3100;\;;\_Cal;Pl=@;_Mirror;_Last;;\ ;_Erase;\;—Select; •_Cal;Pl;; [6-9] ДЛЯ ПОЛНОЙ ВСрСИИ
i лаиа 6. Расчеты с <к>М|иц» м г омырического калькулятора 105 ЯС''С_Ortho;_Of f ;_~Insert ;Н3100; \ ; ; \_Mirror;_Last; ; \ ;_Erase; \ ;-Select;_Last; ; [6-10] ДЛЯ версии LT Теперь можно заняться хвостом. Попробуем сначала механически добавить выполнение дуги полилинии из табл.4.4 к коду [6-9]: .._Pline;@;_Width;15;;_Arc;_Angle;70;\; Но, как мы уже знаем, точка @ теперь, после удаления ненужной головы, '•гала случайной и не может быть использована. Поэтому заменим @ выра- жением ’Са1;Р1. Новая добавка к коду [6—9|: ..-Pline;'Cal;Pl;_Width;15;;_Arc;_Angle;70;\; ДЛЯ ПОЛНОЙ версии пли к коду [6—10] для LT: ..—Pline;Ins;\_Width;0.15;;_Arc;_Angle;70;\; как будто делает команду работоспособной. Но что же происходит? Если удалено зеркальное отображение блока, дуга пристраивается как надо, а ес- ли удален оригинал, дуга оказывается вывернутой так, что ее выпуклость не < оответствует выпуклости головы Вспоминаем, что, выбирая опцию, по ко- юрой строится дуга, мы стремились уменьшить число щелчков ЛК. Поэто- му приняли опцию Angle (Угол), подобрав угол 70°. Здесь же голова может смотреть в любую сторону. Поэтому следует взять другую опцию для дуги, например, Direction (Направление) и вручную давать дополнительную точку. Ничего не поделаешь, за универсальность надо платить. 1еперь запись вычерчивания дуги будет выглядеть так: .Arc;_Direction;\\ ; Чалее надо сгруппировать два объекта. Копируем запись группирования с [4-10] и меняем здесь Previous на 'Са1;Р1 для полной версии. Для LT ос- швляем без изменения. 1аодно проверим вручную (с клавиатуры) некоторые сокращения. В AutoCAD ангора они работают (табл. 6.6). Таблица 6.6. Сокращенные имена команд и опций Полное имя Комментарий Сокращенное имя (Alias) Alias, который принимаем Off Опция команды ortho и др. Откл Of Of liiuert Вставка -1 • -Insert Minor >•’[ Ж й Л1 > Mi Mirror
106 Часть II. i п четы 1 к inn стилей Таблица 6.6 (окончание) Полное имя Комментарий Сокращенное имя (Alias) Alias, который принимаем Select Выбрать Select Select Last Опция команды Select (Выбрать) Las, La, L Last Previous Опция Предыдущий команды Select (В русской версии AutoCAD ошибочно дано "Текущий") Pr, P Pr -Group Г руппировать -G -Group Erase Стереть E Erase Pline Полилиния PI Pline Width Опция Ширина команды Wid, W W Pline Arc Опция Дуга команды Ai, A Ar Pline • Angle Опция угол команды Ang, An, A Ang Pline Direction Опция Направление команды D, Di, Dir Dir Pline Dtext Динамический текст Dt Dtext У вас могут быть некоторые различия, особенно в русской версии AutoCAD, поэтому в последней колонке не все команды даны сокращенно. Составьте такую таблицу для себя и заполняйте ее по мере работы с книгой. В даль- нейшем вновь появившиеся команды мы будем записывать целиком, пока к ним не привыкнем. Вновь появившиеся сокращения следует добавлять в эту таблицу. Следует напомнить, что файл Acad.pgp содержит только сокра- щенные имена команд, а в этой таблице показаны преимущественно опции. Очень важное замечание Помните, что при переносе команд на другой компьютер они могут не срабо- тать из-за различия в сокращениях. При тестировании команды на другом ком- пьютере легко определить место где произошел сбой в работе по этой причине.
I i t । a , i rn<M( i .(>лим1А/< Ч'ичлтиго калькулятора 107 Откроил t окно AutoCAD Text Window (Текстовое окно AutoCAD) и найдите строку Unknown command Неизвестная команда Замените сокращенное имя команды или опции на полное Теперь команда должна сработать. После всех добавок и сокращений запись кода трехголового символа Homerun, который может быть повернут в любую сторону, для полной вер- • mi AutoCAD выглядит так: '( AC_Ortho;_Of;_-Insert;H3100;\;;\_Cal;Pl=@;_Mirror;_Last; Erase;\;-.Select;'_Cal;Pl;;_Pline;Cal;P1;_W;15;;_Ar;_Dir;\\ Pickstyle;1;_-Group;-Create;*;;_Last; IT;;_Dtext;\;; [6-11] Добавьте кнопку в панель инструментов Homerun. На рисунке должна быть ссыл- ки па номер кода [6-11] Для LT версии: CAC_Ortho;_Of;_-Insert;H3100;\;;\_Mirror;_Last;;@;\;_Erase;\ I Select;_Last;;_Р1;_Ins;\_W;15;;_Ar;_Dir;\\;_Pickstyle;1;_-Group;_ ।eate;*;;_Last;_Pr;;_Dtext;\;; [6-12] - Customize Commands | Toolbars l Button Properties]] Keyboard | tJame: H3_6-12LT description: Off Of, Previous Pr, Width W Arc Ar, Direction Dir. Homerun для масштаба 1:100. Выводится в обе стороны. Macro associated with this button: "C*C_Ortho;_Of;_-lnsertH3100.\ \_Mirror_Last@.\_Erase.\;_Select_ Last_PI;_lns;\_W;15;;_Ar;_Dir;\\:_Picl<.style;1;_-Group:_Create;',;:_Last _Pi>.;_Dtert\:; Рис, 6.8. Диалоговое окно Customize с кодом для вывода символа Homerun в версии AutoCAD I J
108 Часть II. Расчеты. Загрузка стилей Кнопка для этой команды в панели Homerun Здесь нам пригодится не- использованное ранее поле Description (Пояснение) диалогового окна Customize (Адаптация). Введите сюда принятые нами сокращения (Alias). Это поможет в дальнейшем вспомнить, как создавалась команда: Off__Of, Previous__Pr, Width__W, Arc__Ar, Direction__Dir,-. Здесь же можно кратко изложить логику построения команды или дать ее описание (рис. 6.8). Зачем же мы вводили калькулятор, если результат для полной и LT-версий одинаковый, а код для LT-версии короче? Потому что с калькулятором вы- полнение команды требует на один щелчок ЛК меньше. В первом случае точку Р1 как начало полилинии программа нашла сама, а во втором случае полилиния началась от точки вставки блока, которую мы искали вручную, воспользовавшись объектной привязкой Ins (Твставки). Ради экономии даже одного щелчка стоит опробовать новую идею.
Глава 7 Внемасштабные элементы Нпемасштабными называются элементы, которые имеют одинаковые разме- ры независимо от того, в чертежах какого масштаба они изображены. При- мерами таких элементов могут служить текст и детали размеров, а именно: величина стрелок, зазоры и т. д. Предположим, что проектируется сеть •лектрических розеток на этаже здания, архитектурная основа которого вы- полнена в масштабе 1:50 (речь идет о бумажной копии чертежа). Если изо- бразить розетку в этом же масштабе, т. е. в натуральную величину в про- । |ранстве модели, она получится значительно меньшей, чем другие детали плана, и на распечатке мы увидим ее изображение немногим больше точки. '||обы чертеж можно было прочитать, следует искусственно увеличить раз- меры розетки. А поскольку изображение мелких деталей изделия заводского п потовления не имеет существенного значения, то розетка вычерчивается как упрощенный символ, например, как показано на рис. 4.4. Для более мелкомасштабной основы 1:100 размеры символа розетки увеличены вдвое и па бумажной копии останутся такими же, как и на чертеже масштаба I 50. Таким образом, в библиотеке надо иметь набор символов для всех употребительных масштабов. То же самое можно сказать и о тексте. На чер- |сже любого масштаба его высота должна быть одинакова. Детали размеров ыкже относятся к категории "внемасштабных элементов". Величина стрелки выноски, например, выбирается такой, чтобы она выходила на бумажном чертеже приблизительно 3 мм длиной, независимо от масштаба чертежа. Ниже показана логика решения этой задачи. 7.1. Вставка блоков 1>'|<жи или внемасштабные символы вычерчиваются в масштабе 1:1, и впо- 1ИСДС1ВИИ, при вводе в чертеж (пространство модели) к этим символам применяется масштабный коэффициент. Если будущий чертеж планируется пыиодить нм печать в масштабе меньшем, чем 1:1, например, 1:20, 1:100 п । л., к> iiiio.'Hiicm коэффициент увеличения. Коэффициент уменьшения иримснясп и, । пн м iriiii.iO крупнее, чем 1:1, например, 2: 1, 5 :1 и т д.
11<) Ч.1Г11. // QIHIIUll Коэффициент можно ввести автоматически, для чего необходимо сообщить программе, в каком масштабе будет выводиться на плоттер эта часть про странства модели. Когда вводится блок, то на запрос: Enter х scale factor (масштаб по оси X) надо ввести коэффициент, например, 100, если вы работаете с масштабом 1:100, или 0.5, если масштаб вашего чертежа на бумаге будет 2:1. При за- просе Enter y scale factor (масштаб по оси Y) надо подтвердить этот же коэффициент. 7.2. Текстовые стили Можно создать текстовый стиль, одинаково пригодный для вывода в черте- жах разного масштаба. Величина текста определяется его высотой (Height). Командой Style (Стиль) вызовите диалоговое окно Text Style (Текстовые стили). Заполните все необходимые поля. Для поля Height (Высота) сущест- вуют два варианта: П задается фиксированная высота текста; П высота текста устанавливается равной 0 (нуль). Для первого варианта при последующем вызове команды Dtext (Дтекст) AutoCAD не будет запрашивать высоту текста, она ему известна. Он запро- сит только угол наклона текстовой строки. Во втором варианте AutoCAD предложит по умолчанию высоту текста, за- данную при его последнем применении и предоставит возможность поме- нять ее в командной строке. Так же, как и в первом случае, AutoCAD запро- сит угол наклона текстовой строки. Второй вариант является более гибким, и большинство пользователей пред- почитает проставлять в диалоговом окне Text Style (Текстовые стили) высо- ту текста 0 (нуль). Мы тоже будем работать с этим вариантом. Чтобы текстовый стиль стал универсальным, надо при вызове команды Dtext (Дтекст) в создаваемом для этого коде задать высоту текста, подходя- щую для масштаба 1:1, т. е. 2.5 мм, и затем применить к ней (умножить) масштабный коэффициент: П 2.5 х 100 — для масштаба 1:100; П 2.5 х 20 — для масштаба 1:20; П 2.5 х 0,5 — для масштаба 2:1. Системная переменная, в которой хранится высота текста, называется Textsize. Приготовление текстового стиля можно сделать автоматическим, вложив этот процесс в код команды. Составляется таблица шагов (ыб.п I)
Iляпа 7. Внвмясштлбн»,>• м'чы 111 Таблица 7.1. Приготовление текстового стиля Шаг Действие Запрос Автокада 1 -Style 2 j Enter name of text style...: Введите имя текстового стиля... 3 Ust (от слов Universal Style, универсаль- ный стиль) Имя Ust будет использоваться во всех последующих примерах 4 j Specify full font name...: Определите полное имя шрифта... б Romans.shx e (по усмотрению автора) В j Specify height of text <...>: Определите высоту текста 7 О (на случай, если кто-то накануне выставил высоту текста отличную от О (нуль)) 8 J Specify width factor <...>: Определите коэффициент ширины О 0.65 (немного зауженный текст, выпол- ненный шрифтом Romans.shx смот- рится лучше) 10 J Specify obliquing angle <...>: Определите угол наклона букв <...>: И О
112 Чють II Ра< ч ц, ».«/»>• а стилей Таблица 7.1 (окончание) Шаг Действие Запрос Автокада 12 д Display text backward? ... .<N>1) Показать, как выглядит текст с оборотной стороны прозрачной бумаги (интерпретация автора). В русской версии AutoCAD: справа налево 13 д Display text upside-down?...<N>1 2) Показать текст перевернутым? ...<N> 14 Д Vertical?...<N> Вертикально? ...<N> 15 Д Начиная с шага 13 везде стоит знак Д, т. е. предполагается, что никто не изменял до этого текстовый стиль "Lst", вводя экзотические опции, и здесь все оставлено по умолчанию <N>. Добавка к будущему коду, создающая новый текстовой стиль (табл. 7.2)’ Таблица 7.2. Создание частичного кода приготовления текстового стиля Шаг 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ЛСЛС -Style ; Ust ; Romans.shx ; 0 ; 0.65 ; 0 ; ; ; 1 Опиия Display text backward предназначена для технологии, при которой ос- нова чертежа печатается на обратной стороне прозрачного прочного гибкого пла- стика. Основа отзеркалена относительно плоскости чертежа. При этом текст должен выводиться также отзеркаленным относительно плоскости чертежа. При таком спо- собе печати на лицевой стороне пластика можно многократно наносить и стирать необходимые детали без повреждения основы. Применяется для согласования между различными организациями. 2 Опция Display text upside-down дает текст, отзеркаленный относительно ли- нии, параллельной строке. Если текст, выполненный с этой опцией, развернуть на 180°, получится тот же результат, что и с опцией Display text backward. Опция Display text upside-down может быть применена в чертежах геодезии. Здесь принято разворачивать UCS (ПСК) так, чтобы ось X смотрела вверх, а ось Y вправо. Текст с обычной настройкой при этом получается отзеркаленным. Гели же выбрать опцию Display text upside down и установит уши nobopoi.i |ексга 90°, гекс i будет выходить нормальным
I п.г । 7. i i л* НгЫ 113 11осыпьте последоп.пелыюсть из таблицы на временную кнопку и посмот- ри ie, как она работает. При нажатии на кнопку каждый раз будет переопределяться текстовый шль Ust, и даже если кто-то ранее изменил его характеристики, текст вый- дет так, как заложено в команде. Домашние задания: I Назначить два текстовых стиля, дать им имена. В одном проставить высоту 2.5, в другом — нуль. 2. Проработать команды Dtext, Text, —Text, Mtext, T, —Mtext, —T, Style, —Style. 3. Поменять высоту текста и выравнивание из командной строки. Это весь- ма важное задание, которое надо проработать основательно 7.3. Размеры < точки зрения возможности применения масштабного коэффициента к величине текста и элементов размера, у текстового стиля и размерного сшля есть сходство и различие. Сходство заключается в том, что у обоих сть системная переменная, отвечающая за глобальный размер. Для текста но Textsize, для размера — Dimscale. Значение Textsize назначается в диа- логовом окне Text Style (Текстовые стили) в поле Height (Высота) или в ко- мандной строке при создании текста командами Dtext (Дтекст) или —Text. Переменная Dimscale назначается в диалоговом окне Dimension Style Manager (Диспетчер размерных стилей). Откройте окно командой Dimstyle (Рзмстиль), затем нажмите кнопку New (Новый), если создается новый раз- мерный стиль, или Modify (Редактирование), если что-то корректируется и существующем размерном стиле. Во вкладке Fit (Размещение) есть поле Scale for Dimension Features (Масштаб размерных элементов), где и устанав- ливается системная переменная Dimscale, если включен переключатель Use overall scale of: (Глобальный масштаб). В обоих случаях можно ввести из командной строки переменную Textsize или Dimscale и изменить их значе- ния для текущих стилей. Ра щичие заключается в том, что при изменении Textsize с именем тексто- ного стиля ничего не происходит. При изменении Dimscale, например, при применении к нему масштабного коэффициента, появляется новый размер- ный стиль, дочерний по отношению к текущему, но имеющий то же имя. Он называется Style overrides (Переопределенный стиль). Им можно пользо- п.и вся до тех пор, пока не будет применен любой другой размерный стиль. После этого временный стиль исчезает. 1пя паиботе ч.и го встречающегося способа простановки размеров — и iipocip.iiu iii' Mii'irmi когда обьекгы вычерчиваются в натуральную вели-
114 Чя»1ьН /’д, *h>ip чину — есть две возможности применить к элементам размера ма, ппабпый коэффициент, приведенные далее. П Создать единый размерный стиль Dimstyl , настроенный на вывод в чер- теж масштаба 1:1, например, "Dim-U". Здесь буква "U" от слова Universal, универсальный. Для использования этого стиля в чертежах других масштабов надо умножить значение его переменной Dimscale на масштабный коэффициент и выполнить размер стилем "Dim-U" overrides (Переопределенный). Слово "overrides" не войдет в имя стиля, но коман- ды List (Список) или Properties (Окносв) покажут, что стиль переопреде- ленный. □ Создать столько размерных стилей, сколько масштабов обычно использу- ется в вашей работе. Они будут отличаться друг от друга как именем, так и величиной системной переменной Dimscale. Например, ’’Dim-50", имеющий глобальный масштаб 50 и "Dim-100", глобальный масштаб ко- торого равен 100. В этом случае можно сделать так, чтобы все они выходили с помощью од- ной кнопки, а масштабный коэффициент входил бы как в имя стиля, так и в системную переменную Dimscale автоматически. Мы вернемся к вопросу применения масштабного коэффициента для размер- ного стиля в главах 15—17. Здесь же будут рассмотрены все варианты проста- новки размеров, как в пространстве модели, так и в пространстве листа. * 7.4. Создание коэффициентов Теперь нужно решить такую задачу, как задать программе AutoCAD коэф- фициент, вернее, серию коэффициентов для разных масштабов, чтобы он смог вернуть его нам в нужный момент без специального запроса. Среди системных переменных AutoCAD есть три под названиями: Userl, UserR и UserS. Слово User переводится как пользователь. То есть это пере- менные, назначаемые пользователями. Буква 1, последняя в слове Used, — от слова Integer, целое число. Системная переменная Userl сохраняет и по запросу выдает целые числа, как положительные, так и отрицательные 1, 5, 10 и т. д. Таких переменных всего пять. Можно назначить Useril, Useri2, ... Useri5. Буква R— от слова Real, вещественное число. Переменная UserR сохранит и выдаст вещественные числа, например, 0.5, 1.2, —5 и т. д. Таких переменных тоже пять. Можно использовать Userrl; Userr2; ... Userr5. Буква S от слова String, текстовая строка. Эта переменная сохранит и выдаст текст. И этих переменных пять: Usersl, Users2, ... Users5. Наберите на клавиатуре useril и нажмите <Enter>. UserilJ
I 1МИ.1 / Hl/WAII. Illi «Al...... »l. It. 115 iiiitai n»w win f' t U*h<) 1 I ’0>. BncHnie новое iii pk inir дня Useril <0> 100 J lenepL это значение 100 можно будет использовать как коэффициент мас- ппаба. AutoCAD будет хранить его в файле, пока вы его не измените. Приготовьте для будущей работы панель с четырьмя новыми кнопками. В диалоговом окне Customize (Адаптация), на вкладке Toolbars (Панели ин- струментов) прежде всего подсветите новое меню V-Menu в поле Menu (roup (Группа меню) и нажмите клавишу New (Новая) (см. рис. 1.1). Здесь подсвечено меню ACAD. Впрочем, в появившемся окне New Toolbar (Новая панель) также можно выбрать группу меню, куда предполагается ввести оче- редную панель инструментов. Имя новой панели IV-Scale (Масштабный фактор). Впрочем, можно теперь переименовать все панели инструментов, убрав из них название IV, так как все они принадлежат отдельному меню, помечен- ному вашим именем (xx)-Menu. Примечание Для того, чтобы в общем списке панелей новые заняли места наверху списка, а не согласно английскому алфавиту, в разделе 3.6 мы условились добавлять к имени панели префикс 1V. Вместо цифры 1 можно поставить знак дефис (-), который также выведет имя панели в начало списка. Это же касается и других списков, например, в диалоговом окне Layer Properties Manager (Диспетчер свойств слоев). Оставим переименование на усмотрение читателей. Здесь же будем продол- жать ставить индекс IV перед именем панели, чтобы на экране отличать паши панели от других. Код для первой кнопки: ^C_Userr1;100 [7-1] Коды для других кнопок: СЛС_ Userrl;50 [7-2] СЛС_ Userrl;l [7-3] СЛС_ Userrl;0.5 [7-4] Имя файла рисунка 1_100 рЮО Имя файла рисунка 150 Имя файла рисунка 11 Имя файла рисунка 21 1=50 ТГ 2? )io уже наша вторая панель, созданная в рамках отдельного меню V-Menu. Первой стала IV-Misc (см. раздел 6.8). Откройте папку My_MNS и здесь те- перь можно увидеть файлы с номерными именами пиктограмм, созданные AutoCAD. Откройте файл V-Macro.mns и замените в нем ссылки на номер-
/ /О' •/I. TH III III t« hl lull’ll ные имена ссылками па данные нами имена файлов рисунков и папке C:\Macro\lcons. Сохраните файл. Затем перезапустите AutoCAD, чн>бы убе- диться, что все пиктограммы восстановили рисунки. Не забудьте сохранить копию файла отдельно от его рабочего экземпляра. Итак, новая панель инструментов приготовлена для дальнейшей работы. Нажимая на ее кнопки, мы каждый раз будем переустанавливать системную переменную userri, которую введем впоследствии в код независимых от масштаба команд. Эту панель вполне можно превратить в выдвижную и разместить где-нибудь в верхней части экрана. К ней придется часто обращаться. Если вы пользуетесь исключительно масштабами мельче 1:1 (1:10, 1:20 и т. д.), то лучше взять переменную Userl, так как коэффициент всегда це- лое число. В нашем учебном случае мы создаем комбинированную панель, подготавливая коэффициенты как для масштабов мельче, чем 1:1, так и для масштабов крупнее, чем 1:1. Для последних коэффициент есть веществен- ное число, меньшее 1, поэтому выбрана универсальная системная перемен- ная UserR, запоминающая как целые, так и дробные числа. Если нет необ- ходимости использовать переменную UserR, лучше сберечь ее для других случаев и использовать переменную Userl Прочитать данные по всем системным переменным можно при помощи ко- манды Setvar (Устперем), где Set означает установить, Var — variable, пере- менная: » SetvarJ Enter variable name or [?] : <Userrl> По умолчанию предложена системная переменная userri, последняя, с ко- торой мы работали. Можно поменять ее значение, если необходимо. Если ввести ” ? ", то AutoCAD предложит просмотреть весь список системных переменных текущего файла и их значения. Можно также просмотреть весь список, комментарии к нему и изменить при необходимости через падаю- щее меню Express =» Tools => System Variable Editor (Экспресс =» Сервис => Редактор системных переменных) или набором на клавиатуре команды Sysvdlg. Нашей ближайшей задачей является автоматическая выборка значения сис- темной переменной Userri с целью использования ее в качестве масштаб- ного коэффициента для независимых от масштаба элементов. Это умеют делать языки LISP и DIESEL, и в соответствующих главах мы ознакомимся с некоторыми функциями этих языков.
Глава 8 Применение функций LISP к макрокомандах 8.1. Введение I ISP — это язык программирования, встроенный в систему AutoCAD. Сло- им LISP образовалось от двух слов: LISt Processing, что означает обработку । писков. Список— это набор данных, заключенных в круглые скобки. Вспомните выражение калькулятора: Апд(Р1 р2,рз). То, что в скобках — но список. LISP — один из старейших и, возможно, самый старый среди юиствующих языков программирования высокого уровня. Структура языка очень удачно вписывается в AutoCAD, поэтому его создатели выбрали именно этот язык и Адаптировали его к системе. Это позволяет создавать в I ISP подпрограммы, работающие в системе AutoCAD, что значительно расширяет возможности этой системы. Мы возьмем из LISP всего несколько функций. Как и в любом языке программирования, для написания функций LISP тре- Пуегся выдерживать определенные правила. Выражения LISP всегда начи- наются и заканчиваются круглыми скобками. Внутри скобок могут быть вложенные выражения, в свою очередь также заключенные в скобки. Коли- •нтпю открытых и закрытых скобок должно быть одинаковым. Элементы выражения LISP разделяются пробелами. Нет пробелов только между ка- вычками и заключенным в них выражением. Допускается не ставить пробел но и после открывающейся или закрывающейся скобки, до и после выраже- нии, заключенных в кавычки. • •1Ц.1Ч1Ю программы LISP пишутся в текстовом редакторе Notepad (Блокнот) и имеют расширение lsp. Здесь место не ограничено и поэтому пробелы ста- тная везде, даже там, где их допускается не ставить. Так программа легче Ч1пае1ся. В нашем случае, когда выражение языка LISP включается в мак- рокоманду, иногда приходится экономить место Если код команды слит- ым длинный и не вмещается в отведенное для него место в поле Macro HHMHialcd with this button: (Макрос для данной кнопки) окна Customize (A'l.iii' ищи), можно опустить те пробелы, которые не влияют на работу
11В Член. II 1‘а< ч»1и i,t>i>yt»n cihji»^ команды, т. е. пробелы, перхд открывающейся скобкой и после закрываю- щейся скобки, перед и после выражений, заключенных в кавычки. Но это только в том случае, если мы непременно хотим увидеть весь код целиком в окне Customize (Адаптация). Так удобнее, чем каждый раз открывать файл V-Macro.mns для прочтения и корректировки. Если в командной строке начать запись с открывающейся круглой скобки, то AutoCAD распознает, что последует выражение LISP и будет готов его обработать. Но если в командной строке вы сначала наберете cal Д, то бу- дет работать калькулятор, а не LISP. Здесь тоже есть скобки, но все выра- жения калькулятора записываются через запятые, а наличие и количество пробелов значения не имеет. Наберите в командной строке: (+„12~6) Д 18 Здесь символ обозначает пробел, и, чтобы избежать возможной ошибки при наборе текста книги, мы будем вводить этот символ во все выражения LISP. Представленное выше выражение есть не что иное, как сложение двух чисел 12 и 6. Оба принадлежат к типу Integer, т. е. являются целыми. LISP возвра- тил результат, который тоже принадлежит к типу Integer, а именно, 18. Здесь знак "+” — функция, а числа 6 и 12 — аргументы. Попросим LISP об- работать более сложное выражение: 24 — 6 и результа разделить на 9. (М(-~24~6) «9) Д 2 Ответ 2. Напишем это же выражение для вычисления на встроенном в AutoCAD калькуляторе: Cal Д »Expression: (24-6)/9 Д 2.0 Запись для калькулятора кажется более логичной. Но нам придется при- выкнуть и к записи для выражений LISP Обратите внимание: LISP посчитал результат с точностью до целого числа (Integer), а калькулятор — с точностью до знака после запятой, т. е. выдал результат типа Real, вещественный. Изменим выражение для LISP: (М(-~24,0~6)~9) J 2.0 Теперь результат также получился принадлежащим к типу Real. Список математических функций, которые поддержи нас г 1 ISP, можно най- ти в специальной литературе. Для нас же пока достаточно четырех стандарт-
I if.HM Ц I I I I M 'AWh 441Щ IX 119 ni.li .(рифме11РКЧmix л- n< iniiii В нашей работе мы будем использовать мате- м.иичсские cnocofiiioi in I 1SP для умножения на масштабный коэффициент. 8.2. Функция Setq Функция setq предназначена для присвоения имени. С ее помощью можно "привязать" некие параметры к символу, т. е. дать им имя: (*; tq-A-l 5) Д 13 ' biccb записано: запомнить число 15 под именем "А". Г.< tq~B~ (*~2~4) ) Д R I'lecb записано: запомним результат операции во внутренних скобках, т. е. произведение 2x4, под именем "В". Ч|обы извлечь значения "А" и "В", надо ввести в командной строке воскли- п.псльный знак и имя и нажать <Enter>: <А Д И !В Д I8 I ISP будет помнить, *1то "А" это 15, а "В" это 8 до тех пор, пока открыт файл uni эти же имена не будут присвоены другим значениям. Например, введите выражение: < а д Expression: A=Cur J I uter a point: В ВОД ТОЧКИ ( ..) координаты. la । ем: !A д II вместо цифры 15 мы получаем два числа — координаты только что назна- ченной с помощью калькулятора точки. Калькулятор и LISP обмениваются информацией. Имя, заданное при помощи функции setq, является переменной AutoLISP. калькулятор использует эти же переменные. И это обстоятельство дает воз- можность при вычислениях калькулятором использовать системные пере- менные AutoCAD. Например, переменная Userrl, применяемая в качестве Min in габного фактора (см. раздел 7.4). Кплькулятор не может извлечь значение переменной Userrl и работать I пен, но если перевести значение системной переменной AutoCAD в пере- м> иную Aiilol ISP. то она будет воспринята калькулятором. В разделе 8.4. fiynci никл I.1HO, > ж ио сделать. •
120 Часть II I' i. чсн-j f,ж.1 стилей 8.3. Функция Ssget Функция собирает в набор серию выбранных элементов. Происходит от Selection — выбор, Set — набор, Get — получить. Начертите несколько различных элементов. (Ssget) J Select objects: Выберите объекты: Вы можете выбрать объекты, они получат имя от LISP, но как впоследствии их извлечь? Скомбинируем две функции в одно выражение: (Setq«A« (Ssget)) J Select objects: Выберите объекты: Пометьте нарисованные элементы, затем нажмите <Enter>. Наберите команду Move (Перенести) J и вместо выбора курсором наберите ia. Ваш выбор элементов готов к передвижению на новое место. Помните команду Group (Группа), которую мы применили в разделе 4.3? Почти то же самое, но от LISP. Более оперативная, но не долговременная возможность запасти выбранный набор элементов. Используйте ее в практическом черчении. Ее преимущество: если объекты собраны в группу командой Group (Группа), а затем применена команда Undo (Отменить), группа исчезает. В то время как группа объектов, выделенная функцией LISP ssget, сохраняется. 8.4. Функция Getpoint Эта функция равноценна функции калькулятора cur. Ее имя произошло от слов Get, получить и Point, точка. При помощи этой функции можно полу- чить координаты точки (табл. 8.1). Таблица 8.1. Сравнение функций извлечения координат точки при помощи языка LISP и калькулятора LISP Калькулятор (Getpoint) J CalJ Ожидает ввода точки. Введите точку Expression: Cur J (...) координаты Enter a point (Введите точку) (...) координаты Скомбинируем функцию Getpoint с функцией Setq: (Setq^Pl—(Getpoint)) J введите точку (....) координаты
I.IIM Я IllHMrHH Illi ф1 I» |<Ш I I Гц M.IHI iQhl>M.IH/|.tX 121 1< ||>*|>1> IIIICIUIU I » I .1 Попучылм те же координаты. Командой Line (Отрезок) начните линию от точки !Р1. Сбросьте команду, luHiiopiire ее снова и начните линию от той же точки, но через команду Cal (К.1ньк). Убеждаемся, что это одна и та же точка. Точки, назначенные как । гп.кулятором, так и функцией LISP Getpoint, являются переменными \uloLISP. Часто возникает необходимость следом за первой точкой получить вторую. |>ычо бы удобно иметь так называемую "резиновую" линию, которая тянется in первой точки ко второй. Такие линии можно наблюдать, применяя команды Move (Перенести) или Сору (Копировать). Язык LISP предоставляет такую но 1можность. Для этого в выражение для второй точки, которое идет вслед «и определением первой точки, надо подставить имя первой точки. t q.-.Pl«(Getpoint));\(Setq-.P2~ (G -tpoint~Pl) П.нпачьте это выражение кнопке и посмотрите, как оно работает. Чюбы сделать подобную линию с использованием калькулятора, надо вве- । in сюда построение обычной временной линии, которую впоследствии ылить. В разделе 13.1 это будет пою зано. 8.5. Функция Getvar 11ажмите на одну из кнопок созданной в предыдущей главе панели IV-Scale, например, 1 '.100. Введите в командной строке: l< tvar«"Userrl") J I ни Функция Getvar извлекла значение системной переменной Userri, только но назначенной при помощи кнопки. Катание функции происходит от сочетания Get — получить, var — variable, переменная. Имя системной переменной заключается в кавычки. I-, 1кое состояние ортогональности у вас сейчас на экране? Поставьте ORTHO и положение On. Пиелите: I tvar~"Orthomode") J I 1'ieci. Orthomode — системная переменная, в которой хранится текущий ре- । им ортогональности Она может быть равна -1, что соответствует команде Oitho On или 0 что сооветствует команде Ortho Off. LISP возвратил 1, под- iih’pniiii icm 1мым, Ч1о режим ортогональности включен.
122 Часть /А Гисч. /ы Лиру ка стилей Скомбинируем две функции Setq И Getvar. (Setq—Or—(Getvar—"Orthomode") ) J [8-1] 1 Теперь LISP запомнил состояние ортогональности под именем Or, где or — это произвольное имя, данное автором. Если имя or правильно и своевре- менно извлечь, состояние ORTHO станет On. Нажмите <F8>, убедитесь, что режим ортогональности на текущий момент отключен. Теперь введите ! Or J 1 LISP вернул ORTHO в положение On (Вкл). Создайте новый слой под именем "TEXT" и сделайте его текущим: (Getvar—"Clayer") J TEXT” Здесь clayer — системная переменная, в которой хранится имя текущего слоя. Если текущим выставить другой слой, то системная переменная будет содержать в себе имя этого нового слоя. На то она и переменная. Но вернемся в слой "TEXT". LISP возвратил имя слоя, подтвердив тем са- мым, что слой "TEXT" является текущим. И скомбинируем две функции: Setq И Getvar. » (Setq«-.Cl<-> (Getvar->"clayer") ) J "TEXT" Здесь cl — произвольное имя, под которым мы запомнили название теку- щего слоя Пусть оно будет cl — от слов Current Layer, текущий слой. Если имя cl правильно и своевременно извлечь, текущим должен стать тот слой, название которого LISP запомнил под именем cl, т. е. "TEXT". Смените слой. Введите: !С1 J "TEXT" Проверьте, текущим опять стал слой "TEXT". Выражение: (Setq«A«(Getvar«"Userrl")) переводит значение системной переменной AutoCAD, в данном случае Userrl, в переменную AutoLISP, которую можно включить в выражение для вычисления калькулятором. Нажмите на одну из кнопок панели IV-Scak- например, 1:50. Сделайте временную кнопку и в поле Macro associated with this button: (Макрос для данной кнопки) введите: ''С^С (Setq^A—(Getvar—"Userrl") ) ;Са1;2*'А' ;
I i.ui.i n II iMeiMiiiir ..IIRI'i м ixp<»u<M<«ivi I 123 li\i iiii "А" и ubip.i* пин кидькулятора должна быть заключена в одинарные клпычки. При 1ШЖЛП1И пи кнопку будет получен результат 100. Поменяйте масштаб и убеди ieci>, чю результат удваивается. Мы будем пользовашся в дальнейшем такой возможностью сочетать LISP и к.ыькулягор. 8.6. Функция Setvar Команда AutoCAD Setvar (Устперем) -позволяет устанавливать нужные зна- чения системным переменным. Функция с аналогичным действием и тем же и.нванием есть в LISP. I ели у вас текущий слой сейчас "TEXT" смените его на другой и введите и командную строку. I (Setvar«"Clayer«Cl) -I ГЕХТ" А теперь взгляните на окошко панели инструментов Object Properties (Свой- 11ва объектов). Какой слой стал текущим? "TEXT"! LISP сменил слой. Мы воспользуемся этим для того, чтобы, находясь в текущем (рабочем) слое, не переключат^ его для вставки текста, размеров и всего того, чему надлежит быть в соответствующих слоях. Все эти объекты будут размещать- 1Я в специализированных слоях автоматически. 8.7. Число в строку Рассмотрим еще две функции, которые будут применены в дальнейшем. Как уже говорилось в предыдущей главе, для каждого масштаба может быть соз- дан свой размерный стиль. Логично, если в имени стиля будет заложена цифра масштаба. Например, "Dim-50". Имя размерного стиля — это тексто- вая строка. "Dim-" также текстовая строка. Цифра 50, очевидно, будет полу- чена из системной переменной Userrl, т. е. эта цифра есть вещественное число (Real). Возникает вопрос: как превратить вещественное число 50 и 1екстовую строку и как объединить две разрозненные строки "Dim-" и "50" и единую строку? Тогда в дальнейшем, в главе 16, когда понадобится назна- чить имя размерного стиля, программа сможет сделать это автоматически. Функция Rtos превращает число в строку. Читать ее (по-русски) надо как Ар-ту-эс. Английская буква "R" обозначает Real, вещественное число, "to" переводится как предлог "к". Английская буква "s", от слова String, строка. Гаким образом, смысл функции Rtos состоит в том, что она переводит чис- чо в строку
124 Ча> i± ll I i' i> in >< ii bun Наберите: (Rtos—50) J "50.00" Была цифра, стал текст. Как это показать? Нажмите на кнопку 1:50 (панель инструментов IV-Scale). Теперь масштабный коэффициент, в качестве ко торого выступает системная переменная Userrl, стал равен 50. Наберите: ( *—2— (Getvar—"Userrl") ) J 100.00 Здесь мы умножили 2 на число 50 и получили ответ 100. Теперь введите: (*—2— (Rtos— (Getvar—"Userr 1") ) ) -! ;error: bad argument type... Ошибка: неподходящий аргумент... Результат, который выдала функция Rtos, уже не воспринимается как циф- ра, поэтому операции умножения не произошло. Полная и правильная запись этой функции учитывает и систему единиц, и необходимую точность вывода результата: (Rtos—Реальное число~Мос1е<-Асcuracy) Mode — это система единиц, в которых выполняется чертеж. Для метриче- ской системы должна быть цифра 2. Если бы чертеж выполнялся в футах и дюймах, то была бы цифра 4. Accuracy - это задаваемая пользователем точность вывода результата. Она может не соответствовать точности, заданной в диалоговом окне Drawing Units (Единицы измерения). Для нашего случая достаточно назначить точ- ность до одного десятичного знака, потому что учебная панель инструмен- тов IV-Scale содержит всего одну кнопку с масштабом больше единицы, а именно 2:1. Значение системной переменной Userrl при нажатии на эту кнопку становится равным 0.5 (один десятичный знак). Отсюда для перево- да реального числа, содержащегося в системной переменной Userrl в тек- стовую строку, следует записать: (Rtos-(Getvar—"Userг1")-2-1) В главе 7было принято использовать в качестве масштабного коэффициента системную переменную UserR, потому что наша учебная панель инструмен- тов IV-Scale содержит в том числе кнопку с масштабом 2:1. Здесь масштаб- ный коэффициент есть реальное число 0.5. Если масштабы крупнее 1:1 не используются в повседневной работе, то в качестве масштабного коэффици- ента обычно применяется системная переменная Userl, представляющая собой целое число (Integer).
I ii.ih* 81' tiMvHttHit,' , pihiiiiii /1:,I v. ирокомандчХ 125 I bi переводя числи ihii.i Integer в текстовую строку служит другая функция I ISP: itoa. Здесь первая буква от слова Integer, "to" соответствует предлогу к", буква "а" является первой буквой слова Alphabetic, т. е. элемент алфави- ы как символ текстовой строки. Читается функция так: Ай-ту-эй. Интерес- но, что для двух сходных функций авторы предусмотрели разные окончания. Функция Rtos имеет окончание "s", а функция itoa оканчивается на "а" По смысл этих окончаний одинаков: символ текстовой строки, String. Для функции itoa, работающей только с целыми числами, не требуется пока- зывать ни системы единиц, ни точности вывода десятичных знаков 8.8. Объединение строк Имя размерного стиля должно быть текстовой строкой. Выше при помощи функции Rtos получена добытая из системной переменной Userri строка, < оответствующая цифре масштаба. Надо теперь сделать строкой полное имя ра мерного стиля "Dim-50", т. е. добавить впереди к уже полученной строке Ч)" слово "Dim" с дефисом, набранное с клавиатуры Соединить две строки В одно целое сможет функция strcat. Имя функции происходит от слов Suing — строка и Cat — второй слог слова Concatenate, что значит объеди- ни i ь, связывать. Пиелите в командную строку: treat—"Dim-"—"50") J Dim-50" Функция объединила две строки в одну. Получилось слово "Dim-50". 1'1я соединения двух составляющих имя размерного стиля строк, где вторая । оставляющая является значением системной переменной Userri, следует «.шпеать выражение: trcat—"Dim-"—(Rtos —(Getvar—"Userri")—2—1)) -I im-50.0" I.ikobo имя размерного стиля, полученное с применением трех функций I ISP: Getvar, Rtos И Strcat. 8.9. Исходное состояние < рагу же переведем полученные знания в практическую плоскость. Верни- нть в pajdei 4.4. Там написано: "...после выхода из команды правилом хо- рошею ioiii быио бы вернуть состояние ORTHO (режима ортогонально- < ।и)и ю коюр • огню до применения команды" Вставьте выражение [8-1]
126 Часть II. Расчеты. Загрузка стилей в начало кода [6-11] перед Ortho;of. Тем самым мы запомнили состояние ортогональности перед вводом макрокоманды Н3100. В конце кода введите выражение: (Setvar«"Orthomode"~Or) Таким образом, код [6-11] становится таким: ЛСЛС (Setq-»Or<-.(Getvar->"Orthomode") ) ;_0rtho,-_0f;_-Insert;H3100;\; ; Cal;Pl=@;—Mirror;_Last;\;—Erase;\;_Select;'_Cal;Pl;;_Pline;_ Cal;Pl;_W;15;;_Ar;_Dir;\\; _Pickstyle;l;_-Group;_Create;*;;_Last;_Pr;;_ Dtext;\;; (Setvar->"Orthomode"~Or) [8-2] и нам не надо больше протягивать руку к клавише <F8> для переключения режима ORTHO! Внутри команды состояние Ortho (Орто) всегда будет off, а после исполнения команды — такое, каким оно было до ее взятия На практике могут быть сбои: возможно, кто-нибудь не закончит команду целиком, прервав ее клавишей <Esc>, и тогда режим ORTHO не успеет вос- становиться. Поэтому лучше последнее выражение, возвращающее режим ORTHO в исходное состояние, передвинуть внутри цепочки ближе к началу и вставить туда, где режим ортогональности уже становится безразличным. После команды Pline (Плиния) и перед системной переменной Pickstyle. ЛСЛС (Setq->Or«(Getvar<->"Orthomode") ) ;_Ortho;_Of;_ -Insert;НЗ100; \ ; ; \_Cal; Pl=@;_Mirror ;_Last; ;@; \ ,-^.Erase; \ ;_ Select;Cal;Pl;;_Pline;Cal;Pl;_W;15;;_Ar;_Dir;\\; (Setvar<-."Orthomode"~Or);_Pickstyle;1;_ -Group;—Create;*;;_Last;_Pr;;_Dtext;\;; [8-3] Обычно мы вводим в коды знак подчеркивания перед именем команды или опции. Исключение Не ставьте знак подчеркивания перед выражением LISP, введенным в цепочку макрокоманды! Вспомним теперь цитату из раздела 4.4.'. "...желательно, чтобы текст на бу мажном чертеже выходил более тонкой линией, чем другие элементы. Этого можно достигнуть, создавая весь текст чертежа в предназначенном для него слое (Layer ) определенного цвета, и этому цвету при выводе чертежа на плоттер назначить меньший вес линии (Lineweight). Таким образом, наша ближайшая задача состоит в том, чтобы автоматически назначить новый слой с заданными характеристиками, разместить в нем текст, а затем вернуть назад тот слой, в котором мы начипаип нычсрчивап
I /мва 8. Применение функции I ISP в макрокомандах 127 символ Homerun Прежде всего в начале кода [8-3] надо записать выраже- ние, запоминающее текущий слой: ( :ctq~.Cl~.(Getvar<-»"Clayer") ); Затем, перед написанием текста надо создать новый слой с именем... пусть оудет "TEXT" и задать ему цвет и тип линии. Цвет выберем, например, жел- ।ый, т. е. № 2, а тип линии по умолчанию Continuous, это обычная сплош- ная линия. Команда для создания нового слоя и без вывода диалогового ок- на -Layer (-Слой), или сокращенно -La, в командной строке предлагает ряд опций: I .7Make/Set/New/0n/0ff/Color/Ltype/Lweight/Plot/Freeze/Thaw/Lock/ tinlock/state] Г’/Создать/Установить/Новый/Вкл/Откл/Цвет/Типлиний/вЕслиний/пеЧать 1аморозить/Разморозить/Блок/рАзблок/Конфигурация]. Первая опция маке (Создать). Мы ее и используем. Составим таблицу шагов (табл. 8.2). Таблица 8.2. Подготовка частичного кода создания нового слоя с заданными параметрами Шаг Действие Запрос Автокада 1 -La 1 J Current layer: ... Показывает имя текущего слоя Enter an option [?/Make/Set/New...] .- Введите опции[?/Создать/Установить/Новый...] 1 Маке 4 J Enter name for new Layer...: Введите имя для нового слоя TEXT п J Enter an option [?/Make/Set/New/On/Off/ Color...] : Введите опции [ ?/Создать/Установить/Новый/ Вкл/Отлп/Цвет...] : / C l 1 *4iT 1 •
ЦП '111 It II I H 4. tlJ Г,l 1Ц/1 И Таблица 8.2 ( кончани I Шаг Действие Запрос Автокада 8 J Enter color name or number (1-255): (Здесь можно ввести первую букву имени цвета для первых 9 цветов, но проще ввести номер цвета. Таб- лица цветов вызывается командой Color (Цвет)) 9 2 (номер желтого цвета) 10 J Enter name list of Layer(s) For color 2 <TEXT>: Введите имена слоев для желтого цвета <ТЕХТ> 11 J (другие слои нас не интересуют) Enter an option...: (Предлагается еще что-то изменить. Так как тип ли- нии Continuous (Сплошная) создается по умолчанию и он нас устраивает, на этом остановимся) 12 J Можно многократно создавать новые слои под тем же именем. AutoCAD допускает это, что и позволяет нам включить в кнопку опцию маке. • Превращаем данные из таблицы в код: _-La;_Make;Text;_Color;2;;; и вставим эту цепочку в выражение [11-3] перед "_Dtext". После выполне- ния текста, т. е. в самом конце макрокоманды, запишем выражение для вое становления слоя: (Setvar-"Clayer"~Cl) Код принимает такой вид: ЛСЛС(Setq«Or-.(Getvar-."Orthomode") ) ; (Setq—Cl~(Getvar—"Clayer”) ) ;Ortho;_Of; Insert;H3100;\I;\_Cal;Pl=@;_Mirror;_Last;;@;\;_Erase;\;_Select;'_ Cal;Pl;;_Pline;'_Cal;Pl;_W;15;;_Ar;_Dir;\\;(Setvar—"Orthomode"—Or); Pickstyle;1;_-Group;_Create;*;;_Last;_Pr;;_-La;_Make;Text;_ Color;2;;;_Dtext;\;;(Setvar—"Clayer"—Cl) [8-4] Если несколько выражений функции setq идут последовательно друг за другом, то запись можно сократить. В нашем случае есть две подряд функ- ции setq и их можно свести в одно выражение' (Setq—Or—(Getvar—"Orthomode")—Cl—(Getvar—"Clayer") ) ;
следует поставить в панель инструментов I 1'И lipillllIM.ICI Bil l ( ........i_v.il i I ti nin..<|.i")..Cl«(Getvar«"Clayer") ) ;_Ortho;_Of ; I ;H <10G) . 1;Г1^8;„Mixror;„Last@\;„Erase;\;„Select;'_ >1I Pl;;_Pline; I;P1;_W;15;;_Ar;„Dir;\\;(Setvar«"0rthomode"<->0r);_Pickstyle;1;_ '-ip;—Create ; Last;_Pr;;_-La;„Make;Text;„Color;2;;;_Dtext;\;;(Setvar—"Clayer I ) |8-5] Кнопку с этим кодом IV-Homeruns — для тех, кто работает с полной версией AutoCAD, и после проверки работоспособности команды и замены номерного имени файла рисунка на кнопке на смысловое обновить копию файла V-Macro.mns. Посмотрите внимательно на код. Что еще здесь изменено из существовав- ших до взятия команды HR установок и не возвращено обратно? Где допу- щена некорректность и что надо сделать, чтобы ее исправить? Это ваше за- дние 8.1. Полный код команды создайте самостоятельно. Мы не будем 1.шать ему очередной номер и продолжим работу над усовершенствованием < имвола Homerun на базе кода [8-5]. 8.10. Масштабный коэффициент Пользователи AutoCAD LF должны прочитать эту главу, так как на базе на- ших рассуждений для полной версии будет получено решение для LT в сле- дующей главе. Откройте файл НЗЮО. Как следует из раздела 4.3, голова HR была заготовлена для вывода в черте- же масштаба 1:100. Уменьшите ее ровно в 100 раз, взяв за базовую точку "Base" (рис. 4.10), и сохраните файл под именем "НЗ". Коль скоро вставка блока становится независимой от масштаба, добавка ”100" теряет смысл. Теперь голова подходит только для прямого ввода в чертеж масштаба 1:1. Какие элементы HR должны быть увеличены, чтобы стать пригодными для другого масштаба? П голова П ширина полилинии хвоста Г) текст . Голова у нас выводится как блок. Следовательно, х scale factor и y scale factor должны быть не 1, а, например, 100. Откройте новый учебный файл или вычистите существующий файл и его базу данных от всех предыдущих вставок блока с именем НЗ, используя команды Erase (Стереть) и новую кнопку Purge Block (Удалить блок)
tie) Часть II. t\ii чин <4, м 1и/юй Нажмите на кнопку 1:100 Toolbar IV-Scale. выставив тем самым ciicieMiiyio переменную Userrl в значение 100. Проведем теперь вручную вставку блока НЗ. Введите в командной строке: -Insert J Enter block name or [?] <...>: Имя блока... H3J Specify insertion point or [...]: Базовая точка... Укажите ее Enter X scale factor, ...<1>: Масштаб по оси X... По умолчанию стоит <1>, но мы введем сюда выражение LISP, получающее значение Userrl В следующей главе мы введем сюда выражение DIESEI для LT версии. (Getvar—"Userrl") J 100 Enter Y scale factor (use X scale factor) J Масштаб по оси Y... Specify rotation angle <0.00> Угол поворота... Покрутите мышью и остановите вращение головы ЛК, пока она (голова) не закружилась. Итак, выражение функции Getvar решило масштабную проблему вставки блока. Это выражение будет вставлено в код [8-5), в группу знаков, начи- нающуюся с -insert, после первой косой черты. Пока здесь стоит знак " ; ", т. е. <Enter>, подтверждающий х scale factor = 1 и появляющийся по умолчанию. После вставки выражения (Getvar«"Userri") этот же знак " ” подтвердит х scale factor = loo. А следующий, второй подряд знак ; ", подтвердит y scale factor=x scale factor. Теперь займемся хво- стом. Какой ширины была полилиния в предыдущих версиях команды Н3100? 15 мм для масштаба 1:100. Если бы мы готовили команду для ввода символа Homerun в чертеж масштаба 1:1, то задали бы ширину полилинии 0.15 мм. Теперь эта ширина 0.15 мм является базовой. При запросе началь- ной ширины полилинии следует умножить 0 15 на коэффициент масштаба (Getvar—"Userrl”). Функция умножения на языке LISP: (*—0.15~(Getvar~"Userrl")) В выражениях LISP, если один из сомножителей меньше 1, не употребляйте цифр без предшествующего нуля, т. е < 0.15>, а не< .15>. Для подтверждения конечной ширины полилинии следует ос вшить имею щийся знак <Enter>. Теперь ширина полилинии 6yiiei мишеп. юлько
I II.IM П_при ifn II' I' II *• 1Ъ/и»,пЛ1.1>|7| it ni idiu, кикам кнопки ii iiuikHii ink ipyMeiiioB toolbar IV-Scale оыла нажата перец ЭТИМ. Прежде чем запяи.ся ickctom, следует вернуться к главе 7 и перечитать раз- дел "Текстовые стили". Как отсюда следует, необходимо приготовить стиль с высотой текста 0 (нуль) и сделать его текущим. Ранее, в предыдущих версиях кнопки Homerun было сделано допущение о применении текущего, возможно, не подходящего для надписей над предками HR, текстового стиля. Здесь мы исправили это положение. < оздав новый текстовый стиль, затем при вызове команды Dtext (Дтекст) можно ввести при назначении высоты текста результат умножения постоян- ной величины 2.5 на масштабный коэффициент. Здесь 2.5 мм — это размер текста, рекомендуемый для масштаба 1:1. Точно также как это было сдела- но применительно к полилинии: (*—2.5—(Getvar—"Userrl”)) 1еперь остается запомнить текстовый стиль, который был текущим до при- менения команды: I Jetq—Ts—(Getvar—"Textstyle") ) 1десь ts — наше имя для значений, хранящихся в системной переменной xtstyle. После написания текста вернется текстовый стиль, который был юкущим ранее: I Setvar—"TextstyleТЗ) I гли в чертеже используется только один текстовый стиль или стиль с ус- ловным названием Ust является преимущественным, последние добавки можно не вводить. Полный и окончательный код команды универсального трехголового сим- пола Homerun НЗ, учитывающий не только направление поворота его голо- IH.I, но и масштаб будущего чертежа, для полной версии AutoCAD выглядит юнерь так: C~C(Setq—Or—(Getvar—"Orthomode")—Cl—(Getvar—"Clayer")—Ts— (Getvar—"Textstyle"));_Ortho;_Of;_-Insert;H3;\(Getvar—"Userrl");;\_ 1;P1=@; Mirror;_Last;;@;\;_Erase;\;_Select;'_Cal;Pl;;_Pline;'_Cal;Pl;_W; (•—0.15—(Getvar—"Userrl"));;_Ar;_Dir;\\;(Setvar—"Orthomode"—Or); Pickstyle;1;_-Group;_Create;*;;_Last;_Pr;;_-Style;Ust;Romans.shx;0; (I 65;0;;;; La;_Make;_Text;_Color;2;;;_Dtext;\(*—2.5—(Getvar—"Userrl"));0; ( tvar—"Textstyle"—Ts);(Setvar—"Clayer"—Cl) [8-6] Кнопка с этой командой устанавливается на панели инструментов IV-IIomeruns под именем НЗ.8-6. Вид части окна Customize (Адаптация) ним кодом показан на рис. 8.1 Здесь и далее в аналогичных рисунках
132 Часть II. Расчеты. Загрузка стилей пиктограмма (Button Image) перенесена с правой стороны диалогового окна в его нижнюю часть, что позволяет укрупнить рисунок. 2 j Customize Commands I Toolbars I Button Properties Keyboard | Ыегпе: |НЗ_8-6 description Off Of. Previous Pr, Width W, Arc Ar Direction Dir. Ust-имя текстового стиля Homerun не зависит от масштаба и выводится в обе стороны. Моего associated with this button. *C*C(Setq Or (Getvar “Orthomode”) Cl (Getvar "Clayer") Ts (Getvar ‘tTextstyle''));_Ortho:_Of._-lnsertH3VGetvar "Userri ").\_Cal;Pl -@;_Mirror._Last.@.V_Erase;\,_Selecl'_Oal,P1 ;;_P line;LCal.Pl ;_W;(* 0.15 (Getvar “Userri")) _Ar J>AV(Setvar ‘'Orthomode" Or)_Pickstyle l._-Group;_Create.*.J_ast._Pi,_-StyleUst.Romaris shx; 0;0 E5.0:;;:_-l_a_Make.Text_Color 2 ;J3te>t\(*2 5 (Getvar "Userri "));0,(Setvar "Textstyle" Ts),(Setvar "Clayer" Cl) Close Рис. 8.1. Диалоговое окно Customize с кодом вывода символа Homerun с учетом масштаба чертежа для полной версии AutoCAD Код становится предельно большим и может не вместиться в поле Macro associated with this button: (Макрос для данной кнопки). Проблема состоит в том, что не всегда строки заполняются целиком. Часть текста перескаки- вает на другую строку, оставляя предыдущую незаполненной. Можно убрать часть необязательных пробелов в выражениях LISP, отредак- тировать текст клавишей <Backspace> (вернуть назад), но это нс решает проблему. Homerun — это учебная команда, реальные команды, которые чи- татель будет разрабатывать для себя, могут быть длиннее. Надо искать ради- кальный выход из положения. И он есть Это файл *.mns. Туда можно записать значительно более длинный код команды. На рис. 5.3 показан файл V-Macro.mns. Здесь видно начало кодов команд. Откройте реальный файл V-Macro.mns. В нем код записан в длинную строку В этом файле код можно редактировать. Также можно весь код записать здесь вместо окна Customize (Адаптация), и код впоследствии появится в окне автоматически. Точнее, та часть длинного кода, которая уместится в окне Customize (Адаптация). Сде лайте копию файла V-Macro.mns. Чтобы длинная строка кода в файде *.mns читалась лучше, можно ввести в местах, где желательно раздолии, длинную запись па строки, идн " + ". Нажмите, на ИлЛницгу <iEn(ai иск пиши курсор
I II (И /I f * иль Н гнн<* 1/* .HhpihnAlllVhlK 13! mi шиком " । ' При ном (ixi. icKCi после курсора перейдет па новую сгро- 11<> AutoCAD Пу к-1 >111П111> весь код целиком Копия файла V-Macro.mns ia рис К * 1 ирс ле I а плеч i.i ( /-Macro, тем - Notepad Be Edit Format Mew He|p !D_userButton_5 r_Button("H3_b-5", "H? 8-5.bmp", "icon_16_blank")J+ *c*c(setq or (Getvar "orthomode") cl (Getvar "clayer"));_ortho;_of;+ --Insert;H31OO;\;;\_cal;Pl 8;-Mirror;-List;;©;\,_Eras=,\;_Select;' + _cal; Pl; ;_P1;'_cal;Pl;_w;15;;^Ar:_Dir; \\;(setvar "orthomode" or); + _Pi ckstyle;1;--Group;-Create;»;;-Last;_Pr;;_-La;-Make;Text;_color; + ;_Dtext;\;;(Setvar "clayer" cl) ID_UserBUtton_7 [_Butt0n("H3_8-6", "H3_8-6.bmp", "ICONJ.6_BLANK")]+ *CAc(setq or (Getvar "orthomode") zl (Getvar "clayer")+ Ts (Getvar "Textstyle"));_ortho;_of;--Insert;H3;\(Getvar "userrl")+ ;;\_Cal;Pl=®;.Mirror;-Last;;©;\;_Erase;\;-Select; '_Cal; Pl; ;_Pline; + '_cal; Pl;_w; (• 0.15 (Getvar "userrl")); ;_Ar;_Dir;\\;+\ (setvar "orthomode" or);_picksty1e;l;_-Group;_create;’‘; ;_Last;_Pr;; + --style;ust;Romans, shx; 0:0.65;0;;; ;_-La;_Make;Text;_color;2;;;-Dtext; + \(* 2.5 (Getvar "userrl"));0;(setvar "Textstyle" Ts);(setvar "clayer" cl) Рис. 8.2. Фрагмент файла V-Macro.mns I icci. показаны только два пункта по кнопкам НЗ_8-5 и Н3_8-6 с их пол- ными кодами, которые отредактированы с использованием знаков ” + ". ||>нможностью записи длинных программ непосредственно в файле *.mns знается очень важная задача: на языке Menu Macros можно составлять шннраммы, объем которых значительно превышает возможности диалого- вою окна Customize (Адаптация). Г файле *.mns можно записать макрос длиной до 1040 символов. Для записи iioiiec длинных последовательностей можно использовать язык LISP. Есть । те один способ закладывать в макросы длинные последовательности ко- манд. Это использование Script-файлов. Подробнее мы познакомимся с ни- ми в последующих главах. 0.11. Загрузка Множество полезных программ можно найти в различных источниках, пкшочая Интернет. < о тайте отдельную папку для хранения попавших в ваши руки I ISP-программ. Назовем ее "LISP". Чтобы опробовать программу, надо с предварительно загрузить в AutoCAD. Для этого служит диалоговое окно Load/Unload Applications (Загрузка/Выгрузка Приложений), которое выпивается из падающего меню Tools => AutoLISP => Load... (Сервис => Ainol ISP => Загрузка...) или меню Tools => Load Application (Сервис/ Нгрузка приложений) (рис. 8.3).
134 Часть II. Paw in м,щ »мл <. ! g Load/Unload Applications Lookjn: | О Lisp О 13book-BSp | pCalc.LSP EJcpi.Rp EJlPIZLSP ! Ucattlsp Ecr.lsp E^rs.lsp EJChat.Isp EJatflsp g)Chb.lsp gCrotLSP ''2 Ba. LSP ^chdm.LSP fictXtLSP EjBh.Isp ©Chetlsp 0CLRL.LSP 0BISC.LSP JalCpelLSP EomscLSP bJBresHLSP E|Cpe2.LSP £2 Encp LSP Filename: jcRLLSP Д| * £1 cr И’’' О |ffi I® | Hfoclsf lsp 0Lrtl.LS₽ BPv.LSP 0Lnt2.LSP UPcI.Isp Elnt31SP EJsta I.LSP |g|Fr«d.LSP |g]Txtch.LSP EJmulsp Й ixt. lsp £2 Per LSP ES Via. LSP EJpiga.LSP £3vbPp Load Files ol type: JAutoCAD A^'ps (* arx" lsp.* dvb * db\" vbc* fas) Loaded Applications | Histoty list [ Г Add to Histoty ]Pa» Filo Startup Suite Contents AcDbICIkEdit arx C:\Program Files\AutoCAD Z002\ Рис. 8.3. Диалоговое окно Load/Unload Application В окошке Look in: (Смотреть в) в верхней части окна следует выбрать папку, где хранятся LlSP-программы и раскрыть ее. (На рисунке в качестве образца показана раскрытая директория LISP. Содержание папки — учебное.) Выде- лите файл, предназначенный для загрузки, и нажмите кнопку t oad (Загру- зить). На сером фоне в нижней части окна Load/Unload Applications (Загрузка/ Выгрузка приложений) и одновременно в командной строке появится со- общение об успешной загрузке программы. Таким способом можно загру- зить программу только на одну сессию работы. При следующем запуске AutoCAD программа не будет загружена. Если предполагается пользоваться программой относительно часто, надо поставить флажок в окошке Add to History (Добавить в протокол). Теперь для вызова программы вместо поиска ее в поле Look in: (Смотреть в) можно ее загрузить из вкладки History list (Протокол) в нижней части окна Load/Unload Applications (Загрузка/ Выгрузка Приложений). Если же программа используется регулярно, ее сле- дует включить в стартовую зазрузку. Для этого нажмите кнопку Contents (Приложения) и в появившемся окне Startup Suite (Автозагрузка) (рис. 8.4) при помощи кнопки Add (Добавить) добавьте нужную программу. Загрузив программу, надо теперь ее запустить. Как узнать то волшебное слово, которое вводится в командной строке, чтобы программа «аработала? Для большинства программ это можно сделать таким способом Откройте
f iMtt.i H I ifyiihitinl 11 Г и м.<ух>иомлщ*£ 135 I ISP iipoi рзмму One 1>|к|>1.ншс|ся в текстовом редакторе Notepad (Блокнот). II верхних строках попппис выражение, похожее на это: ulnfun С: CRL () Рис. 8.4. Диалоговое окно Startup Suite II данном случае CRL и есть тот ключ, который запускает программу. Это шчетание букв, придуманное автором программы, как правило, является । пкращением от ее полного имени. Здесь CRL происходит от слова Curly, ' фшурная скобка. Программа вычерчивает красивую фигурную скобку за два щелчка ЛК. Длина скобки определяется щелчками. Все элементы скобки » шписят от масштаба будущего чертежа. Позже мы сделаем то же самое на попке и без LISP. Нетерпеливый читатель уже сейчас может попробовать < пои силы, не дожидаясь нужной главы. Используйте расчет точек при по- мощи геометрического калькулятора. I' п> и другой способ одноразовой загрузки LlSP-программы, позволяющий I оцповременно узнать ключ к ее запуску. Откройте Проводник (Explore), найдите нужную программу, выделите файл и прижатой ЛК вытащите его пи поле чертежа. (AutoCAD должен быть открыт.) В командной строке попжио появиться .immand: (LOAD "С:/MyACAD/Lisp/CRL.LSP”) C:CRL Нрсирамма загружена, ключевое слово (crl) найдено. Можно ее испытывать и пнем решить для себя, оставлять ли программу в своей коллекции.
Глава 9 Применение функций языка DIESEL для автоматизации масштабирования 9.1. Строка состояния. DIESEL и AutoCAD LT Язык программирования DIESEL был впервые введен AutoCAD R12. DIESEL — это аббревиатура от Direct Interpretively Evaluated String Expres- sion Language. В вольном переводе это звучит, как прямая интерпретация содержания текстовой строки. Это язык текстовой строки. Результат обра- ботки строки также выводится в виде строки и может быть воспринят Auto- CAD дословно. Если DIESEL выдал слово "Line", AutoCAD поймет это сло- во дословно, т. е. воспроизведет команду Line (Отрезок). Выражения DIESEL всегда предваряются специальным знаком $ (доллар) Откройте окно Customize (Адаптация) и посмотрите на запись макроса стан- дартных команд Сору (Копировать), Move (Перенести) и некоторых других. Здесь можно увидеть типичные выражения DIESEL. Как и в языке LISP, количество открытых и закрытых скобок должно быть равным. Элементы выражения здесь разделяются, в отличие от LISP, запятой, а не пробелом, что похоже на выражение функции калькулятора. Введем при помощи DIESEL новые данные в строку состояния — Status Line. Эта строка расположена в самой нижней части экрана AutoCAD. Ее левая часть по умолчанию не заполнена, поэтому ничего необычного не видно. Этой частью строки управляет системная переменная Modemacro. Наберите на клавиатуре: Modemacro J Введите текст: Do not forget to walk your dog. J He забудь погулять с собакой. В левой части строки состояния появилась эта надпись (рис. ') ।) Теперь она будет напоминать о ваших обязанностях до тех пор, пока AutoCAD
lIMM»* > ***'*'I f *4 •' • ...... <•• ill HIM III, |ЛИ£Х>П.|/|ГТ1 n<* iivjk'i liiKpidi, mi <u i> дц nij i к» улил 11 co сноси собакой. Или пока вы не Il illlllllll ГС пиром' III! 1<»|||11Я ч 1 о-нпбудь другое. Ente^ne^va lue For MODEMACRO, or . for none <11" > : DOG Coirunand: 00 NOTFORLFTTO jVALKYQi -RDUG 20 2790 11 9979 SNAP Рис. 9.1. Строка состояния (Status Line) Испытаем способности DIESEL в математике — попросим его сложить два числа, 3 и 8. Вызываем Modemacro J I’nter new value for Modemacro, or , for none <"Do not forget to walk y< ur dog" >: $( + ,3,8) J В маленьком окошке в левой части строки появилось число II. Также уве- ренно DIESEL может выполнять вычитание, умножение и деление, исполь- |уя для этого символы, соответственно, ” — ", " * ”, " / ". Количество аргу- ментов в математических выражениях не должно превышать 9. Этот талант DIESEL может быть использован А пока продолжим упражнения со строкой состояния, потому что из нее можно извлечь определенную пользу. Рассмотрим одну из функций DIESEL Getvar. Введите в командной строке: Modemacro J В ответ на приглашение наберите: (Getvar,Textstyle)J [9-1] В левой части строки состояния вы увидите имя текущего текстового стиля. Измените его (падающее меню Format => Text Style (Формат => Текстовые стили...), или введите команду Style (Стиль) в командной строке). В строке состояния текстовый стиль обновился. Значит, эта строка живая. Она может отражать текущие изменения системных переменных. Добавим сюда и вы- соту текста. Если используется несколько текстовых стилей и разные высо- 1Ы текста, удобно иметь на экране текущие установки. Действительно, в па- нели инструментов Object Properties (Свойства объектов) есть четыре окошка, где показаны текущие значения параметров Layer (Слой), Color (Цвет), Linetype (Тип линии), Lineweight (Вес линии) В панели инструмен- тов Dimension (Размеры) и некоторых других также есть такие окошки, и которых можно контролировать текущие установки. А для текстового
138 Часть II. Расчеты. Загрузка стилей стиля такого окошка нет, но мы заменили его выводом данных в строке со- стояния. Вызовите Modemacro J Заполним командную строку: $(Getvar,Textstyle)«$(Getvar,Textsize) [9-2] Пробел между двумя выражениями можно не ставить, но тогда оба значения вызываемых системных переменных, имя текстового стиля и высота текста сольются. Нажмите <Enter>. В строке состояния теперь появились текущие значения текстового стиля и высоты текста. В AutoCAD 2004 есть новая (по сравнению с предыдущими версиями) панель инструментов Styles (Стили), в которой можно контролировать текстовые и размерные стили. При помощи системной переменной Modemacro можно вложить в строку состояния любую информацию, находящуюся в системных переменных. Чуть позже мы воспользуемся этим неожиданным открытием, а пока вер- немся к нашим символам Homerun. В главе 6 кодом [6-12] мы закончили команду универсального трехголового НЗ для LT-версии. Символ Homerun выводился в обе стороны, но был зави- сим от масштаба. Для каждого масштаба в библиотеке должен быть соответ- ствующий символ. В главе 8 для пользователей полной версии было дано выражение LISP: (Getvar„"Userrl"), получающее коэффициент масштаби- рования от системной переменной Userrl Но в DIESEL, как мы уже знаем, есть аналогичная функция с тем же названием Getvar, уже опробованная в командной строке после вызова переменной Modemacro. Попробуем ее применить для всех составляющих символа Homerun: при вставке блока, для определения ширины полилинии и задания высоты текста. Если это удаст- ся, то обладатели AutoCAD LT смогут иметь всего один символ для вставки его в чертежи любого масштаба. Но сначала испытаем, сможет ли DIESEL произвести умножение некоего числа на извлеченное функцией Getvar зна- чение переменной Userrl. Также надо,опробовать работу функций DIESEL с помощью кнопки. Нажмите на одну из кнопок в панели инструментов IV-Scale, например, 1:50. Системная переменная Userrl получила значение 50. Введите в команд- ной строке: Modemacro J Enter new value for Modemacro, or . for none <"$ (Getvar, Textstyle) $(Getvar,Textsize)”>: Дополните строку: $(*,0.15,$(Getvar,Vserrl)) 19-31
I <» <чц. u<)it|xii>v< м и ши. ширину iiujuuiihiiui xnocia Ш< умножением его •in юной iiiiipiniiii О И ни мт in кюпый коэффициент (для масштаба 1:50). • )ii|>iHiiie iiiiiiM.iiim пи |||.||>.1ж<*пие |9-3]: пробелов нет, количество открытых и шкрьпых скобок одинаково. Все составляющие выражение элементы раз- делены запятой, знак " $ " есть перед каждым заключенным в скобки выра- жением. |ецсрь можно нажать <Enter>. В строке состояния появилась цифра 7.5 как р- (ультат умножения 0.15 на 50. I гперь опробуем работу функции DIESEL с помощью кнопки. • '<> тайте временную кнопку, без имени и рисунка. Запишите код: ।' C_Modemacro;$(Getvar,Userri)); и нажмите кнопки Apply (Применить) и Close (Закрыть) Измените теперь тачение переменной Userri, нажав на одну из кнопок в панели инструмен- та IV-Scale. Введите команду с помощью новой кнопки. Мы ожидаем уви- псгь в строке состояния новое значение Userri, как это получилось бы в случае ввода системной переменной Modemacro вручную в командной < |роке. Но здесь сохраняется прежнее значение переменной Userri. Следо- вательно, команда не сработала. Для записи выражения функции DIESEL в диалоговом окне Customize (Адаптация) и в файлах *.mns и *.mnu надо добавить связку ,,$м=". Она по- шалит DIESEL отработать правильно. CAC_Modemacro;$М=$(Getvar,Userri); [9-4] Теперь кнопка работает. При изменении масштабного коэффициента Userri после нажатия новой кнопки его значение попадает на свое место в строку сэстояния. 9.2. Перевод объекта в текущий слой В полной версии AutoCAD, в меню Express (Экспресс) есть команда Laycur. Она переводит объекты в текущий слой. Для AutoCAD LT эта команда не- доступна, но мы попытаемся найти ей замену. Изменить слой объекту озна- чает изменить его свойство. Для этого служит команда Properties (Окносв), вызывающая соответствующее диалоговое окно. Можно ли воспользоваться командой Properties (Окносв) из командной строки и без вызова диалого- вого окна? В главе 12 будут показаны несколько способов открытия диало- гового окна Properties (Свойства). Один из них — это набор на клавиатуре аббревиатуры Ch. (Это сокращение показано на рис. 1.8 и 1.9.) Но сокраще- ние Ch произошло от команды Change (Изменить). Есть и такая не часто употребляемая в AutoCAD команда. Набор на клавиатуре Change (Изменить) или, что то же, -Ch вызывает в командной строке (и без вызова диалого- вого окна!) запрос: Select obnects: 1 found
140 Часть II. Ра с Ча I hl anvih | . /ИЛ И Укажите объекты 1 найден Select objects: Specify change point or [Properties]: Укажите точку или [Свойства]: Нас интересуют именно свойства, поэтому вводим pj. Далее появляются новые опции: Enter property to change [Color/Elev/Layer/LType/LtScale/LWeight/ Thickness]: Введите свойства для изменения...: Нас интересует слой (Layer) LaJ Enter new layer name <xxxx> DimsJ Введите имя нового слоя <хххх> DimsJ Вот и ключ к решению проблемы. Можно поменять некоторые свойства объекта, в том числе слой, из командной строки и без появления диалого- вого окна, а значит провести это изменение автоматически. Остается ввести имя текущего слоя, которое хранится в системной перемен- ной Clayer. При помощи функции DIESEL Getvar можно извлечь это имя, если воспользоваться выражением: $М=$(Getvar,Clayer); Код команды, переводящий единичный объект в текущий слой, получается таким: Z ЛСЛС_СДапде;\;_Properties;_La;$М=$(Getvar,Clayer),-; |9-5| Для перевода ряда объектов в текущий слой можно поступить двояко: * ЛСЛС_СЬапде;\,-„Properties ;_La;$M=$(Getvar,Clayer);; |9-6] Или: ЛСЛС_Бе1ес1; \_Change;_Pr; ;„Properties ;_La; $М=$ (Getvar, Clayer) ; ; [9-7] Разница между [9-6] и [9-7] заключается в следующем. В первом случае при выделении объекта он тут же переводится в текущий слой, но команда Pan (Пан), если ее необходимо применить для выделения следующего объекта, превращается в менее удобную команду -Pan (-Пан). Подробнее об этом говорилось в разделе 3.2. Кроме того, для выхода из команды надо нажимать клавишу <Esc>. Во втором случае команда Pan (Пан) работает традиционно, но выбор объектов следует заканчивать стандартным нажатием ПК мыши. При извлечении с помощью функции DIESEL Getvar текстовых строк, как в этом случае, есть одно существенное ограничение: в строке не должно быть пробелов. Если в имени слоя, которое является текстовой строкой (String), есть пробел, команда не будет работать. Поэтому пало шмсшнть пес
I I •« <( /|>M <**rVMa«rw<MH»W МЮТ11ГП1Р11/><>**'<H* I II IKXx' ihi и iiMriiiis * >kii ii. и inpiiMi |>, таком подчеркивания "_". Интересно, чп> при виоле iipoi цм> hiiniix пробелы, в строку состояния при помощи п<*р< мснпоп Mo<l<tmin:i4>, они помещаются туда без ограничений. 9.3. Длина дуги Ппо|да возникает необходимость узнать длину дуги. В этом случае проще всею обратиться к команде List (Список) или Properties (Окносв). Но что певать, если надо проставить размер длины дуги? Ведь в стандартном наборе панели инструментов Dimension (Размеры) команды для измерения длины лу|и нет. Можно поступить таким образом: измерить угол, образованный iiyioft, при помощи команды Dimangular (Рзмугловой), проставить угловой р.имер (в градусах) и затем полученный размерный текст отредактировать, имение на результат измерения, выданный командой List (Список). В принципе, это несложно сделать вручную, для чего даже не надо выписы- вать на бумажку длину дуги из текстового окна AutoCAD Text Window (Тек- . твое окно AutoCAD), которое вызывается клавишей <F2>. Достаточно воспользоваться "горячими клавишами" <Ctrl> + <С> и перенести результат и окно редактирования текста, где нажать <Ctrl> + <V>. Здесь может поя- виться небольшая ручная работа по округлению результата, если не требует- ся точность, заложенная в диалоговом окне Drawing Units (Чертежные еди- ницы). По если измерения дуг и простановка их длин не разовая операция, а мно- юкратно повторяемая, следует автоматизировать этот процесс. Здесь надо решить две задачи: I Каким-то образом получить сведения о длине дуги. 2 Ввести эти сведения в окно редактирования размерного текста вместо значения углового размера. Вторая задача, в свою очередь, порождает сопутствующую: надо добиться юго, чтобы окно радактора текста не появлялось на экране. Будем решать шдачи по мере их появления. Итак, где взять длину дуги? Раз она показана в справочном окне AutoCAD 1'ext Window (Текстовое окно AutoCAD) при вводе команды List (Список), шачит, хранится в какой-то системной переменной. Эта переменная назы- вается Perimeter. Справочная система Help выдает об этой переменной сле- дующие сведения: П Тип — Real, вещественное число; П Сохраняет последнее значение периметра, подсчитанное командами Area (Площадь), DBIist (Бдсписок) и List (Список). Оказывается, к дуге, если последняя выполнена полилинией, можно приме- нить команду Area (Площадь). При этом подсчитывается площадь, образе-
142 Часть II Л|СЧ"Ь.< i.u|>v«hK. 1,,л«й ванная собственно дугой й условной линией, соединяюшсй начальную и конечную точку этой дуги, а также длина дуги. Команда List (Список) выда- ет эти же сведения, также как и команда Dblist (Дбсписок), но последняя выдает информацию обо всех объектах чертежа и вызывать ее для получения длины одного только объекта неразумно. Таким образом, если вызвать команду List (Список), выделив искомую дугу, но превращенную предварительно в полилинию, в системную переменную Perimeter будет занесено значение ее длины. Отсюда несложно создать ло- гику кода, реализующего последовательность шагов: 1. Превращение дуги в полилинию командой Pedit (Полред). 2. Команда List Список), или Area (Площадь). 3. Команда Dimangular (Рзмугловой). 4. Редактирование размерного текста. 5. Возвращение полилинии в дугу. Здесь просматривается несколько серьезных препятствий: □ А если дуга уже была выполнена полилинией? Тогда действие по п. 5 несанкционированно превратит ее в простую дугу. □ Команда List (Список) вызовет текстовое окно AutoCAD Text Window (Текстовое окно AutoCAD), которое будет мелькать на экране, раздражая глаз. » □ При редактировании размерного текста диалоговое окно редактора текста не должно выводиться на экран. Последнее препятствие обойти несложно: команда Dimangulai (Рзмугловой) имеет опцию Text (Текст), применение которой позволяет работать в ко- мандной строке, без вывода на экран редактора текста. Мелькание окна AutoCAD Text Window (Текстовое окно AutoCAD) также можно устранить, если заглянуть вперед, в раздел 15.5. А как же быть с полилинией? Не созда- вать же две отдельные кнопки, одну для измерения простых дуг, а другую для дуг, выполненных полилинией. Существует функция под названием If, перевод которой "если". Логика этой функции применительно к нашей за- даче такова: если это простая дуга, надо перевести ее в полилинию, изме- рить и затем возвратить обратно в дугу. Если это полилиния, измерить ее и оставить таковой. Задача серьезно усложняется и, чтобы не залезать глубоко в дебри языков программирования, попробуем поискать другое решение. Не найдется ли другой команды, кроме List (Список) или Area (Площадь), выдающей длину дуги и независимой от того, является ли дуга полилинией или нет? Система помощи Help, увы, помочь не смогла. Из предложенных ею трех команд ни одна не подошла. Но чертежник-практик может при- помнить, что при применении команды Lengthen (Увеличить) в командной строке появляется измеренное значение длины объема. Ну. юнацно, если
I / if j V гиг i^> iwiifHil ч мши I >11 II .'«< j |'>м.пи.<.1ции мае шгасмрования 143 дчину объекта пило и iMciiini., io предварительно пользователь имеет право увидеть се сущее inytoiuci значение! Проверьте команду на примере простой uyiH и ду!и полплинии. В обоих случаях в командой строке есть текущая пиша дуги. Если команду прервать клавишей <Enter> или <Esc>, значение длины дуги все равно успеет войти в системную переменную Perimeter. И не надо усложнять задачу и вводить функцию If (Если). А вот система помощи Help подкачала. К перечню из трех команд, после которых меняется значе- ние системной переменной Perimeter, следовало бы добавить и четвертую команду Lengthen (Удлинить). Не помещало бы и примечание, что для ко- манд Area (Площадь), DBIist (Бдсписок) или List (Список) надо, чтобы из- меряемый объект был полилинией (или сплайном), а для команды Lengthen (Удлинить) безразлично, полилиния это, или простая линия, или дуга. Может быть, в компании Autodesk прочитают эту книгу и исправят оплош- ность к выходу следующей версии. И гак, меняем логику команды: I Команда Lengthen (Удлинить). После выделения дуги, команда прерыва- ется нажатием <Enter>. Команда Dimangular (Рзмугловой), в которой на запрос выбора объекта можно ввести символ @ (последняя, использованная командой Lengthen (Удлинить), точка). * I Здесь же вводится опция Text (Текст), позволяющая вписать значение нового текста в командной строке без вызова редактора текста Инод нового текста, полученного из системной переменной Perimeter, при ПОМОЩИ ИЗВесТНОЙ фуНКЦИИ DIESEL Getvar. Код команды: ,'’„Lengthen;\;_Dimangular;@;_Text;$m=$ (Getvar, Perimeter) ;\ [9-8] Команда работает, измеряя как простые дуги, так и дуговые сегменты поли- тики, но выдает результат с точностью до 8-го знака! То есть с максималь- но позможной точностью и не зависящей от установок в диалоговом окне burning units (Чертежные единицы). • iiiiiib препятствие. Но загрублять результат мы уже научились В разделе 8.7 (<i.i'ia рассмотрена функция LISP Rtos, переводящая реальное число в строку и учитывающая при этом заданную точность. Такая же функция и с этим же именем есть у DIESEL. Поэтому выражение [9-8] немного усложняется и принимает такой вид: Lengthen;\;_Dimangular;@;_Text;$m=$(Rtos,$(Getvar,Perimeter), i).\ |9-9| I ire i. цифра "2" функции Rtos учитывает метрическую систему единиц, •I Ш1<|>|>.1 I — гго |<1чп<к ||| (количество десятичных знаков), с какой вы хотите
144 Часть II. Расчеты. Загрузка стилей произвести измерение. Эту цифру можно менять при необходимости от 0 и до 8. Измерение будет проводиться текущим на момент вызова команды размерным стилем. К сожалению, при изменении длины дуги текст не меняется, даже если размер выполнен ассоциативным — ведь первоначальное значение размера было изменено. 9.4. Масштабный коэффициент Теперь можно вернуться к коду [6-12] и ввести в соответствующие места добавку в виде извлеченного из системной переменной Userrl масштабного коэффициента. При вводе блока вместо символа " ,- ", подтверждающего масштаб по оси X = I, введем: $М=$(Getvar,Userrl); При определении ширины полилинии вместо цифры 15 подставим выражение: $М=$(*,0.15,$(Getvar,Userrl)) [9-10] Смысл этого выражения точно такой же, какой был описан в главе 8 с ис- пользованием функции LISP. Когда символ Homerun вставлялся в чертеж масштаба 1:100, ширина полилинии была выбрана 15 мм. Здесь уменьшен- ная в 100 раз величина 0.15 умножается на 100. Этот коэффициент получен путем извлечения значения системной переменной Userrl. Если предвари- тельно была нажата кнопка 1:100 из панели инструментов IV-Scale, то ре- зультат будет 15. Если была нажата другая кнопка, результат будет ей соот- ветствовать. Теперь, не затрагивая пока той части кода [6-12], в которой создавался текст, получаем новый код универсального символа Homerun для версии LT: AC^C_Ortho;„Of;_-Insert;НЗ;\$М=$(Getvar,Userrl);;_Mirror;_ Last;\;_Erase;\;_Select;_Last;;_Pline;_Ins; $(*, 0.15, $ (Getvar, Userrl) ) ; ;_Ar;_Dir;W; _Pickstyle;l;_-Group;_Create;*;;_Last;_Pr;;_Dtext;\; [9-11] Здесь НЗ — уже новая голова, уменьшенная относительно старой в 100 pai. Это мы проделали в главе 8. Теперь поработаем с текстом. В разделе 7.2 мы создали специальный тексте вый стиль под именем Ust — универсальный, т. е. пригодный для чертежей любых масштабов. Затем создавался специальный слой под именем "Text" желтого цвета, куда и выводился текст. Высота текста определялась умножс нием базовой высоты 2.5 мм на масштабный коэффиlinen i и ну операции) выполнял LISP (раздет 8.10).
IuimD /1. HMr'ih ini» и. . il'll ‘.|| inn .111111M.11W i.ntitH мп, п/мпиг iiniuni 7-i lounn П1КЖ8 miiaiki tn.i nun f I Персии поручить определение высоты irxc 1.1 Dll SI I I Xt;\$M=$(*,2. , : (a. Lvar;Userrl));0; [9-12] II коде |8-2| при помощи LISP мы запоминали текущее состояние режима прнпопальности, текущий слой и текстовый стиль, а затем, после вставки епмпола Homerun (установки при этом меняли), возвращали их обратно. I >11 SEL не имеет прямой функции для запоминания текущего состояния i поемных переменных. Можно идти окольным путем, но это требует более |чубокого изучения DIESEL, что выходит за рамки нашей темы. Поэтому примем здесь принципиально иное решение, используя в качестве головы Homerun блок с атрибутами. I к‘сь просматривается одно дополнительное преимущество: поскольку ат- рпбугы принадлежат блоку (голове HR), они автоматически войдут в группу И песь HR — и голова, и хвост, и текст будут единым целым. До сих пор к кет не входил в группу. Кроме того, очевидна возможность сократить ко- личество щелчков мыши, что само по себе является хорошим поводом для опробования новой идеи. Hi кройте чертеж НЗ и сохраните его как НЗА. Добавленная буква "А" под- I кажет, что эта голова при вставке блока будет иметь атрибуты. Над каждой । । редкой надо выставить по одному определению атрибута. Команда Attdef (\юпр) вызывает диалоговое окно Attribute Definition (Описание атрибута), ыполнение полей которого требует комментария. Для первого атрибута, вы- < ।являемого у перзой стрелки, запишем значения, показанные на рис. 9.2. Рис. 9.2. Диалоговое окно Attribute Definition
146 4 ik II I' । .j> 11 1ИИЧ1 В разделе Text Options (Параметры текста) значение Just'icnHon (Itыр.нлiii ванне) установлено в Middle'center (Середина в центре). Это удобно при по- следующем развороте текста, чтобы финально он располагался под углом О (Напомним, что в процессе вставки головы HR она вращается) Текстовый стиль может быть любым общеупотребительным для чертежа. В нашем слу чае показан стиль Ust, созданный ранее, универсальный для любого мае штаба текстовый стиль. Высота текста (Height) должна быть задана такой, какой вы хотите видеть ее на чертеже масштаба 1:1, т. е. 2.5 мм. Раздел Mode (Режим). Если поставить флажок в окошке Verify (Контроли- руемый), при первой же вставке блока появится диалоговое окно с предло- жением установить истинное значение атрибутов, т. е. реальный номер электрической цепи. (Надеюсь, читатель не забыл еще, что символ Homerun предназначен для вставки в чертежи разводки электрических цепей.) Лучше эту операцию сделать после того, как HR полностью встанет на свое место а пока получить временное значение по умолчанию, т. е. букву "А", проставленную в поле Value (Значение). Для этого служит окно Preset (Установленный), где надо поставить флажок. Нажатием кнопки Pick Point (Укажи точку) выберите положение атрибута над первой стрелкой и щелкните ОК. Таким же образом определяются два оставшихся атрибута, их значение (value) будет, соответственно, "В" и "С". Теперь перекрасьте определения атрибутов в желтый цвет, используя окно Color Control (Цвета) на панели инструментов Object Properties (Свойства объектов) или команду Properties (Окносв). Напомним, что мы условились придать тексту желтый цвет, а по- чему— об этом говорилось в разделе 8.9. Общий вид HR с определениями атрибутов показан на рис. 9.3. Рис. 9.3. Голова символа Homerun с тремя атрибутами При вставке этого файла в чертеж электрической разводки голова HR вой- дет туда блоком с атрибутами. Вместо цифр 1, 2, 3 появятся соответствую- щие буквы А, В и С. Код команды образуется дальнейшим развитием кода [6-12]. Команду Dtext (Дтекст), находящуюся в конце кода, убираем. Вместо нее вызывается команда, редактирующая атрибуты, поскольку они выйдут со значениями по умолчанию (А, В, С), Attedit (Атред).
14/ Iim^ i 'f /(рим «• хии iHMKrt / W './t для nwreM.iH.t >ции млг иплоириыния Коль скоро к код HHo iiH <>f «сркаливание блока с атрибутами, надо позабо- гиться, чтобы сш омнам переменная Mirrtext была в положении 0 (нуль). Подробнее об чом было сказано в разделе 3.4. Поэтому введем перед командой Mirror (Зеркало) добавку: Mirrtext;о. Командой -Attedit (-Атред) можно развернуть каждый из атрибутов, чтобы они расположились под углом 0°. Это уже знакомая операция, отработанная и разделе 3.4. Одновременно, не выходя из команды, можно изменить их шачения на нужные. Здесь могут быть разные варианты последовательности действий: ''СЛС—Ortho; OfInsert ;НЗА; \$М=$ (Getvar,Userri) ; ; Mirrtext; 0;_ Mirror;_Last;;\;_Erase;\;_Select;_Last;;_Pline;_Ins;\_ W;$M=$(*,0.15,$(Getvar,Userri));; _Ar;_Dir;\\;_-Attedit;;;;;\;—Angle;0;—Value;;\;;;;;;\;_Angle;0; —Value;;\;;;;;;\; —Angle;0;_Value;;\Pickstyle;1;_-Group;_Create;*;;_Last;_ Pr;; [9-131 В данном случае в команде -Attedit (-Атред) надо пометить первый атрибут. Он развернется на угол 0° и попросит изменить свое содержание (вместо буквенного — на цифру номера электрической цепи). Затем, после ручного нажатия <Enter> или ПК (надо дать понять AutoCAD, что редактирование окончено), выделите второй атрибут. Он автоматически развернется на угол 0° и будет ждать редактирования, а вслед за вторым и третий. Cj Custom.ze Commands | Toolbars Button Prope-ties | Keyboard | blame: |нз_914$ description: OffOt Previous Pr Width W, Arc Ar Direction Die. $-знак применения DIESEL Homerun c атрибутами не зависит от масштаба и выводится в обе стороны. bjdcro associated with this buttes । X*C_Ortho:_Ot_-lnsertH3A\$m=$(Getvar Userri ),;\_MirrtextO;_Mirror ;_Lost: @.\,_Eras e;V_Select_Last:_Pi । n е. J n s \_W$ m=$(*,0.15.$(Getv ar, Userri ));;_Ar._Dit \V_’AtteSt;;;A\V_Angle,O;_Val ue;;V_Angle;O:_Vcilu в,\_Ап g i e; С;_У al ue .\_Pickstyle; 1 ;_-Grou p;_Cre ate*:;_Last_Pc Рис. 9.4. Диалоговое окно Customize с кодом вывода символа Homerun унном масштаба чертежа и с применением атрибутов блока
14В */.ii и, II 1 '“Г* 1 ‘ ,и"' Другой вариант дан на рис. 9.4. Присвоим этому коду номер |ч I || 1декь па выходе команды Attedit (Атред) поставлены три обратные косые черты (backslashes) подряд, т. е. надо щелкнуть по каждому из трех атрибутов ЛК, после чего первый из них развернется на угол 0° и будет ждать редактирова ния. Щелчок ПК или <Enter> закончит редактирование и одновременно переведет следующий атрибут на угол 0°, и т. д. При необходимости перс двинуть, скопировать или развернуть HR, он выделяется всего одним щелч- ком ЛК. Если была применена команда Rotate (Повернуть), то поставить атрибут в угол 0° поможет ранее созданная команда Change Att Angle (Изме нить угол атрибута). Команда работает очень динамично. Для тех, кому вставка элементов, ана логичных символу Homerun, нужна в повседневной реальной работе, можно порекомендовать вместо текста использовать атрибуты блока.
Глава 10 Работа с языком Script в макрокомандах 10.1. Слайд-фильм I Script — один из языков программирования, встроенный в AutoCAD. Он при- I меняется чаще всего ддя создания слайд-фильмов. Язык Script позволяет за- I писать последовательность операций, например, последовательность показа I частей чертежа (общий вид, вид одной детали, другой и т. д ). Таким образом I можно демонстрировать и различные, выполненные в 3D, изделия или их ви- I лы. Имеется возможность задать время, в течение которого показывается каж- | пай фрагмент чертежа, затем сменяемый другим. Большинство авторов, опи- I < ывающих язык Script, приводят в пример именно показ слайд-фильмов. Не । нулем отходить от традиции и мы, тем более что написанный для показа I • 'ыйдов Script-файл дает достаточное представление о его структуре. «Нкройте любой, лучше большой, чертеж. Установите на экране общий вид I чертежа. Введите команду Mslide (Дслайд) в командной строке и нажмите I irter>. В появившемся диалоговом окне Create Slide File (Создание файла । панда), где по умолчанию выводится директория текущего чертежа, дайте I имя файлу, например, Plan (План). Файл получает расширение *.sld. Дайте I на экране крупный вид какой-нибудь детали. Введите команду Mslide J | ('(слайд) и дайте имя этому файлу, условно l.sld. Сделайте еще несколько I ф.шлов: 2.sld, 3.sld и т. д. Это будут кадры будущего фильма. Просмотреть I ни кадры вручную можно при помощи команды Vslide (Слайд). В появив- шемся диалоговом окне Select Slide File (Выбор файла слайда) можно вы- прагь один из файлов и открыть его. При помощи языка Script можно запи- 1I ь последовательность кадров для показа, время экспозиции каждого kiinpa и запустить фильм. <>iкройте Notepad (Блокнот) и запишите такую последовательность, нажи- мая .Enter> в конце каждой строки: I .ltde Л ho. J
150 Часть II P.iC4,’чл Mi/'v <*« пил и Delery 2000 J Vslide J 1 J Delay 2000 J Vslide J 2 J Delay 2000 J 3J и т. д., пока не будут записаны все приготовленные кадры. Здесь после каждой команды Vslide (Слайд) следует имя файла и время его экспозиции в миллисекундах, которое задается командой Delay (Задержка). Время может варьироваться от 0 до 32767 миллисекунд (приблизительно 33 с). Если имя файла содержит пробел, то оно должно заключаться в ка- вычки. Приготовленный слайд-файл сохраните в той же директории, где чертеж и его слайды. Дайте файлу имя Slides и расширение scr. Теперь надо ввести команду Script (Пакет). Это можно сделать с помощью клавиатуры или через падающее меню Tools => Run Script (Сервис => Пакет...) и в появившемся диалоговом окне запустить файл Slides.scr. Фраг- менты чертежа будут выводиться на экране через заданные промежутки времени. Можно запустить слайды в кольцо. Для этого в конце файла Slides.scr надо ввести команду повтора Rscript (Впакет) и нажать <Enter> (R от английского слова Repeat, повторить). Здесь же могут быть записаны комментарии. Вспомните главу 5. В файле *.mns перед комментариями следовало поставить двойную наклонную черту, а здесь комментарий предваряет точка с запятой " ;". Но создание слайдов несколько выходит за рамки нашей темы. Мы ознако- мились с ними только для того, чтобы понять смысл и порядок оформления файла * scr 10.2. Script и строка состояния Теперь вспомним, как мы вводили в строку состояния данные по текущему текстовому стилю и высоте текста через системную переменную Modemacro выражение [9-1]. Имя текстового стиля и высота текста сохранялись в стро ке состояния только на время текущей сессии AutoCAD. При новом запуске AutoCAD строка состояния становилась пустой. При помощи Sciipt-файла и специального ключа /ъ можно получить автоматическое вхождение в строку состояния любых значений системных переменных при ыиусш 'AD
111,111 I fl) Г.ькчл < Но ‘М S If <1 и Н м ищпх 151 Н.111И1Щ11С П1К0Л Si Dpi iji.lll I Murt macroJ (Getvar, Textstyle) (Getvar, Textsize) J [10-la] Сохраните файл под именем Start.scr в папке C:\Macro. Теперь закройте AutoCAD, минимизируйте другие программы, если они открыты, и найдите па рабочем столе компьютера пиктограмму AutoCAD (рис. 10.1). AutoCAD 2002 Рис. 10.1. Пиктограмма AutoCAD 2002 на рабочем столе (Desktop) Щелкните по ней ПК и в появившемся меню выберите Properties (Свойст- ва). В открывшемся окне AutoCAD 2002 Properties (Свойства AutoCAD 2002) пл вкладке Shortcut (Ярлык) в поле Target (Объект) должна быть такая ипиись, показанная также на рис. 10.2: :\Program Files\AutoCAD 2002\acad.exe11 Рис. 10.2. Диалоговое окно AutoCAD 2002 Properties
152 Часть II, l'a> ч« tu Icwmn Эту запись надо продолжить. Оставьте пробел, а затем добавьте: /Ь-С:\Macro\Start.scr Iio-lb] Нажмите ОК и запустите AutoCAD. При открытии любого файла в строке состояния должна появиться запись: имя текущего текстового стиля и высо та текста. Смените имя текстового стиля, высоту текста и убедитесь, что здесь произошли изменения. Что еще полезного можно туда ввести? Например, текущее значение сис темной переменной Userrl. Мы ее используем в качестве коэффициент а масштабирования, и неплохо бы контролировать ее текущее значение. Это удобно, если вы работаете с несколькими видовыми экранами (Viewpoits) каждый из которых выводится на плоттер в другом масштабе. В пространст ве модели приходится переключаться с одного размера текста (и других внемасштабных элементов) на другие Поэтому контроль за текущими пара метрами очень удобен. Посмотрите на панель инструментов Dimension (Размеры). Если она распо- ложена горизонтально, в ее составе есть окошко Dim. Style Control (Кон троль размерных стилей), в выпадающем списке которого можно контроля ровать (и изменять) текущий размерный стиль. Но если панель установлена вертикально, окошко исчезает. Но для мониторов 15 и даже 17 дюймов удобнее ставить ее сбоку, т. е. вертикально. Можно сохранить окошко путем расчленения панели: скопировать все кнопки в отдельную панель и распо- ложить ее вертикально по боковой стороне экрана. Затем удалить все кноп- ки со стандартной панели, оставив только окошко контроля размерных сти- лей, и найти ему место в одной из верхних горизонтальных панелей, на стороне, прилегающей к той, где размещена вертикальная часть панели Dimension (Размеры). Но этот путь грубый. Надо ломать стандартную па нель, это может не понравиться другому пользователю вашего общего ком пьютера. Мы уже знакомы со структурой файла *.mns. Если в нем отыскать строки, отвечающие за появление окошка контроля размерных стилей и скопиро вать эти строки в собственное меню (V-Menu), можно получить окошко, отдельное от стандартной панели. Найдите в файле *.mns абзац, где записа ны данные по панели Dimension (Размеры). Это легко сделать, если восполь- зоваться системой поиска Find (Найти) из падающего меню Edit (Правка) <Ctrl> + <F>, затем **TB_DIMENSION Вот эти строки: [_Contol (_DimStyle) ] Скопируйте их в файл V-Macro.mns, но прежде создайте новую пустую, бе i кнопок, панель инструментов. Дайте ей имя, например, IV- DimControl Закройте AutoCAD и отройте файл V-macro.mns, добавьте сконнродннные in файла Acad.mns строки в соответствующий абзац, распоиодпп их лнллогич
1ЬЗ l/IIHh III PnOi.rl* и<мhi<«< U||| H kt>iK|Hin<iMnlUI<l< no leiicpi. i.iii\i ши Al) и усыновите появившееся окошко в удобном моете. \ можно, не kiip.iiиная стандартную панель Dimensions (Размеры), вывести I ведения о текущем размерном стиле в строку состояния. Чтобы учесть все наши пожелания, Script-файл становится таким: MedemacroJ 1 im-$(Getvar,Dimstyle),~Text-$(Getvar,Textstyle),—TH-$(Getvar,Textsize)~ ale-$(Getvar,Userrl)Л [10-2] Viecb добавлены пояснения, которые также войдут в строку состояния: Dim — имя размерного стиля, Text — имя текстового стиля, тн — высота (Height) текста, scale— масштабный коэффициент. Все поясняющие слова можно вводить на русском языке. Примечание В AutoCAD 2004 есть новая (по сравнению с предыдущими версиями) панель инструментов Styles (Стили), в которой можно контролировать текстовые и размерные стили. Но размер этой панели достаточно велик, и предлагаемый способ контроля стилей представляется предпочтительным. ('охраните файл под тем же именем Start.scr. При работе с несколькими файлами удобно иметь сведения о полном пути к имени файла. Особенно это актуально, если несколько одноименных фай- цов находятся в разных папках. AutoCAD 2002 предоставляет две возможно- сги увидеть полный путь к имени файла: диалоговое окно Options (Настрой- ка), вкладка Open and Save (Открытие/Сохранение) в поле File Open (Открытие файла) есть окошко Display full path in title (Показать полный путь к названию файла). Поставьте здесь флажок, и на синей полоске ввер- ху экрана, которая называется Title Ваг (Строка заголовка), будет показан полный путь к имени файла. То же может сделать команда Fullpath из меню Fxpress (Экспресс) или, если использовать падающее меню, то Express => Tools => Full Path Diplay. Здесь продублирована возможность получения полного пути к имени файла. Но в старых версиях AutoCAD этой возмож- ности нет. В этом случае опять поможет Script, куда надо заложить вывод в сцюку состояния системных переменных Dwgprefix и Dwgname. Работать гщновится удобней. (’ледует иметь в виду, что чем длиннее запись, появляющаяся в строке со- сюяния, тем больше она сдвигает вправо кнопки SNAP (Шаг), GRID (Сет- ка), ORTHO (Орто) и т. д., и, в конце концов, может вытеснить их с экрана. Полому количество вводимых в строке состояния данных должно быть ра- умно oi раничсно. I I ’(17
154 Часть II. Рл‘ «/>> > пил’ и В AutoCAD 2004 есть возможность регулировать количество кнопок в строк состояния, убирая неиспользуемые или добавляя нужные при необходимости Для этого надо нажать на маленький черный треугольник, расположенный в правом конце строки состояния. Появится меню с выбором вариантов. Есть еще несколько ключей, позволяющих настроить пусковые задания AutoCAD. Мы здесь рассмотрим еще один, имеющий отношение к нашей теме. С остальными читатель может ознакомиться самостоятельно в системе помощи (Help). Здесь во вкладке Search (Искать) надо найти "Customize Startup". Выйдет статья с этим названием. Ключ /р позволяет запускать AutoCAD с заданным профилем (Profile) В главе 2 мы создали новый профиль под именем "Книга", и все созданные панели инструментов должны относиться именно к этому профилю. Обно вите файл Profile.kniga.arg (Options => Profile => Export (Настройка => Про- филь => Экспорт)), смените профиль и закройте AutoCAD. Теперь вернитесь к пиктограмме AutoCAD 2002 на рабочем столе компьютера и ПК, а затем ЛК войдите в Properties (Свойства). В том же поле Target (Объект) после имени файла Start.scr через пробел продолжите запись: /р«С:\Macro\Profile_Kniga.arg |10-3] Запустите AutoCAD и убедитесь, что профиль "Книга" является текущим. Из сказанного выше следует важный вывод: Если на рабочем столе компьютера (Desktop) сделать копию пиктограммы AutoCAD и в окне AutoCAD 2002 Properties (Свойства AutoCAD 2002) этой второй пиктограммы вписать другие стартовые задания, то с помощью двух пиктограмм можно запускать AutoCAD с разными установками. Это может быть весьма удобно, если компьютер используется несколькими пользователями. При запуске AutoCAD другим способом — из файла или стартового меню, он открывается с обычными стандартными установками. 10.3. Script и рутина Script-файлу можно поручить выполнение длинной рутинной операции по созданию размерного стиля. Запишем Script-файл, который будет использо ваться в будущем. В части III мы создадим программу для вывода независи мых от масштаба размеров. Настройте новый размерный стиль так, чтобы он стал пригодным для выво- да линейных размеров на чертеже масштаба 1:1. Дайте имя размерному сти лю "Dim-". Это будет базовый размерный стиль. К его имени после дефиса впоследствии добавится значение текущего масштаба Вес установки для этого размерного стиля показаны на рис. >0.3, 10.4 и К) 5 ( aumylhr. им
I и I»I 1(1 I мЛпгз < а»ЫМ'М 4 ipf I Ai ifjiohoAl HUMV lao ' lM'5diN0iht»,..i»n»i»l«i Dim- [ Lines an < *r« I erf | ГЦ | Ptimaiy Unite | Alternate Unit# ( Tolerances | Dimension Unas Color |O ByLayer zl Lineweight |— By Lay er zJ Extend beyond ticks |1 ЛООС il Baseline spacing: |l 0000 Suppress f- Dim Line 1 {” Dim Line 2 Extension Lines Color |L1 ByLayer £1 Line weight |— ByLayer 3J Extend beyond dim lines p 2000 il Offset from origin- jo.7000 , * 1 Suppress Г £xt Line 1 Г~ Ext Line 2 Arrowheads__________________________________ IsJ. [P Oblique | 2nd j(Z Oblique ▼] Leader S* Closed filled Arrow sjze |20000"^ —J Center Merks for Circles Type- [Mark ▼J Sue: |o 0^00 —1 OK j Cancel ' fjelp j Рис. 10.3. Настройка стрелок и линий размерного стиля Рис. 10.4. Настройка параметров текста размерного стиля
156 Часгь II /'.к чын 1.ч i । < rwwi Рис. 10.5. Настройка размещения текста размерного стиля * Автор не ставил задачу непременно следовать существующим стандартам, определяющим величины стрелок, зазоров или текста. Читатель может вне- сти коррективы. На рис. 10.4 применен текстовый стиль Ust, который затем будет употреблен в главе 12. Предварительно введите этот стиль в файл чертежа, например. Homerun {8-6]. Для нашего учебного размерного стиля альтернативные единицы измерений и допуски не будут использоваться, поэтому соответствующие вкладки диа- логового окна Modify Dimension Style: (Изменить стиль измерения:) не за- полняются. На вкладке Primary Units (Основные единицы) выставьте пара метр Precision (Точность) по своему усмотрению. У нас установлено 0.00. Сделайте этот размерный стиль текущим, опробуйте его, а затем введите команду -Dimstyle (-Рзмстиль). Появится окно AutoCAD Text Window (Тек стовое окно AutoCAD), а в командной строке запрос: [Save/Restore/Status/Variables/Apply/?]<Restore> Выберите опцию Status (Статус). AutoCAD выведет на экран имена всех системных переменных и их значения для текущего paiMepiioio стиля а также пояснения, занимающие правую колонку (рис 10 (»)
I <1 i»i > t> piftiiiiii t я M 15/ 4ulf< *h <Hl W1M»w uriwln*! <Jw» fZ IBlX L'»i •'veeuJl '• I'oiwian-lJ •liumtyl» Current, dimension style: Dun- Eiitor a dimension style option [Sovo<zPjBstore^STatus*-‘Variables/Apply^?J ^Restore/: st DIH.AS0 Off Сгиъъь dimension objects DIMSTYLE Dim- Current dimension style (read-only) DIMADEC 0 Angular decimal places В1MALT Off Alternate units selected DIMALTD 2 Alternate unit decimal places DIMALTF 25.4000 Alternate unit scale factor DIMALTRND 0.0000 Altei'tiate units rounding value DIMALTTD 2 Alternate tolerance decimal places UIMALTO 0 Alternate tolerance zero suppression DINALTU 2 Alternate units IHMATTZ 0 Alternate unit zero suppression DIMAPOST Prefix end suffix for alternate text DIMASZ 2.0000 Arrow size DIMATEIT 3 Arrow and text fit DIMAUNIT 0 Anguiai unit format DIMAZW 0 Angular zero supreseion DIMBLK ClobedFilled Arrow block name DIMBLK1 Oblique First arrow block name DIMBLKZ Obiique Second arrow block name DIMCEN 0.0900 Center mark size DINCLRD BYLAYER Dimension line and leader color DIMCLRE BYLAYER Extension line color DIMCLRT 2 (yellow) Dimension text color DIMDEC 2 Decimal places DIMDLE 1.0000 Dimension line extension DIMDL1 1.0000 Dimension line spacing DIMDSEP Decimal eeparator Command: | A rJJ ► Рис. 10.6. Справочное окно AutoCAD Text Window Комментарий по каждой строке списка системных переменных размерного । шля можно увидеть в приложении 4. В меню Express (Экспресс) есть ко- манда Sysvdlg, которая выведет на экран окно System Variable Editor (Редак- iop системных переменных) и где можно найти подробное описание по ка- ждой системной переменной. I ели этот список каким-то образом ввести в программу и запустить ее, то и'кущим станет именно этот размерный стиль. Сейчас наша задача состоит и гом, чтобы превратить список выведенных на экран системных перемен- ных в Script-файл. Прижатой ЛК выделите весь текст, начиная от первой строки DIMASO Off п оканчивая последней D1MZIN (на рис. 10.6 последняя йасть списка не показана), и нажмите ПК. В появившемся меню выберите Сору (Копиро- вать). Откройте новый текстовый документ в программе Блокнот (Notepad) и вставьте туда этот список. Сохраните файл под именем Dim.scr в папке 1 ' \Масго. Теперь надо изменить текст так, чтобы получился настоящий ра- чотающий Script-файл. В принципе это можно сделать механически, без анализа каждой строки. Анализ мог бы сократить список и ускорить тем самым прохождение Script- фяЛла. Для медленных компьютеров это важно. Пример анализа дан ниже.
158 Часть II / '.n‘№iw * i < 1Ип<ч1 Первые две строки следует удалить. Системная переменная Dlinnto является устаревшей и заменена другой — Dimassoc, о которой можно узпль больше в разделе 15.2. Она стоит как бы над размерным стилем и в его создании не участвует. Что касается переменной Dimstyle, мы пока вынесем ее за скобки Имя размерного стиля будет создаваться отдельно от этого списка. Итак, первая строка начинается с dimadec. Она должна стать самой верхней строкой. Уберите все лишние пробелы между dimadec и о, оставив только один. Этот пробел равноценен вводу <Enter>, точно так, же как и переход на другую строку. Уберите все пробелы между о и текстом "Angular decimal places" и нажмите <Enter>, чтобы последний текст перешел на следующую строку. Введите знак " ". Он отделит комментарий от рабочей первой строки. Убедитесь, что в первой строке после 0 не осталось невиди мых глазу пробелов. Комментарий можно переписать по-русски или удалить совсем. Работайте последовательно, строка за строкой. В списке системных переменных встречаются и такие, которым не назначено значение, напри мер, Dimapost. Значением для нее является Prefix и suffix, добавки в на чале и/или в конце при включенном Dimalt. Но эта системная переменная, в нашем списке вторая, находится в положении Off, потому что мы решили не использовать альтернативные единицы измерений применительно к это- му размерному стилю. Следовательно, Dimapost можно было бы безболез- ненно убрать из списка. Но наш список учебный и здесь мы оставим все. чтобы он стал универсальной базой для использования в образовании кон- кретных размерных стилей. После слова Dimapost через пробел следует по- ставить точку (.). Она означает отсутствие добавок. * Следующая системная переменная, по установке значения которой возни- кают вопросы, это Dimblk. Здесь устанавливается тип головки обеих стрелок Если переменная Dimsah имеет значение Off (Откл), то обе стрелки имеют одинаковый тип головки (переменная Dimsah находится ниже в списке и на рис. 10.6 не попала). Если переменная Dimsah находится в положении On (Вкл), то можно назначить стрелкам разный тип головки. Таким образом, если переменную Dimsah установить в положение Off (Откл), можно было бы исключить из списка следующие системные переменные: Dimblkl и DimblkZ. Для Dimblk здесь дано значение oblique (наклонная тонкая засеч ка). Если бы были выбраны обычные стандартные стрелки, то в списке, вы- веденном на экран опцией Status (Статус), было бы значение closed Filled (закрытая заполненная). Но эти слбва AutoCAD не поймет. Они должны быть заменены двумя двойными кавычками В приложении 5 дана табл 5.1, где показаны типы головок стрелок и соответствующие им значения четырех системных переменных, в которых хранятся типы головок для раз мерных линий. Еще несколько строк в списке требуют комментария. Например, системные переменные Dimclrd, Dimclre и Dimclrt. В них заложены цвета, соответствен но, размерной линии (последняя буква D от слова Dimension line), выносных линий (буква Е, Extension line), и текста — буква Т. По первым nuvM переменным
I /ММП l(‘ I' > H|, tiilM ilpl H M. трОЛИМ.1ЦЦ.1 1^9 сдо1к> llylaycr (I In inin), находящееся во второй колонке на рис 10.6, AutoCAD не ш>йм< I hi следует заменить цифрой 256. Если бы цвет был вы- орпн ВуЫоск (ПоЛ к»ку), следовало бы поставить цифру 0. Для переменной Dimclrt следует удалить пояснение Yellow (Желтый). Цифра 2 и так обозначает желтый цвет. В строке с переменной Dimdsep не сотрите случайно следующую за этим словом точку (.)• Для Dimldrblk вместо closed Filled (закрытая заполнен- ная) поставьте две двойные кавычки < ">. Здесь назначается тип головки лидера. Мы условились использовать для лидера обычную стрелку. В системных переменных Dimlwd и Dimlwe хранятся веса линий, размерной и выносных соответственно. Тип указанных системных переменных — это Integer, целое число. Но вес линии (Lineweight) выражается обычно в сотых долях миллиметра. Поэтому в качестве значения для системных пе- I ременных надо брать количество сотых долей миллиметра. Чтобы получить значение Byblock (Поблоку), системным переменным сле- I дует назначить Integer — 2. '(ля значения Bylayer (Послою) — 3. В нашем случае следует поставить — 3. I Переменная Dimpost хранит добавку к тексту размера. Здесь также должна через пробел последовать точка. Для переменной Dimtxt, в которой хранится высота текста, установите значение 2.5. Именно такая высота текста исполь- |устся обычно в чертежах на бумаге. Остальные строки не требуют пояснений. Сведения о том, какая системная переменная отвечает за конкретный пара- метр размера, можно получить также в диалоговом окне Properties (Свойст- ва). В его нижней части есть поле Description (Описание). При выделении параметра в этом поле появляется соответствующее описание и имя систем- ной переменной (рис. 10.7). Ноле Description (Описание) открыто не всегда. Если его нет, щелкните ПК I в любом месте диалогового окна и в появившемся меню выберите Description (Описание). Другие опции этого меню будут рассмотрены в раз- деле 12.8. Ii.i рис. 10.8, 10.9, 10.10 и 10.11 полностью показан файл Dim.scr. После того как весь список будет обработан, сохраните его и опробуйте. Предварительно откройте диалоговое окно Dimension Style Manager (Дис- петчер размерных стилей), и здесь или в окошке Dim Style Control (Об этом окошке — Контроль размерных стилей — говорилось в разделе 10.2) посмот- ршс, какой размерный стиль является текущим. Затем командой Script (Пакет) запустите файл Dim.scr и вернитесь в диалоговое окно Dimension Style Manager (Диспетчер размерных стилей). Образовался переопределен- ный стиль (Style Overrides), все установки которого должны соответствовать < писку в файле Dim scr. Этот файл получает порядковый номер [10-4].
160 Часть II I’.h ч*>ы Miry < м > И Рис. 10.7. Диалоговое окно Properties. Внизу показано имя системной переменной, отвечающей за величину стрелки размера Е dim. кг - NoUp*d . П к Fie Edit Fermat View нф DIMADEC О ;Angular decimal places DIMALT Off ;Al ternate units selected DIMALTD 2 ;A1 ternate unit decimal places DIMALTF 25.4000 ; Al ternate unit scale factor DIMALTRND 0.0000 ; Al ternate units rounding value DIMALTTD 2 ;Alternate tolerance decimal places DIMALTTZ 0 :Al ternate tolerance zero suppression DIMALTD 2 ;Al ternate units DIMALTZ 0 ;A1 ternate unit zero suppression DIMAPOST . ; Prefix and suffix for; alternate text DIMASZ 2.0000 ;Arrow size DIMATFIT 3 ;Arrow and text fit DIMAUNIT 0 ;Angular unit format DIMAZIN 0 .Angular zero supression DIMBLK oblique ;Arrow block name DIMBLK1 Oblique ;First arrow block name DIMBLK2 Oblique Рис. 10.8. Начальная часть файла Dim вег
//мм.1 10 I'.iftoiii < «»</.<*< <if I к м ih/nihiiM.iii/iJK 161 f ditnur • Not«p«d _ 0X I* (•>>! hjnutl ykw Ue|» ('IMtLfJ oblique end arrow block name DIMCEN 0.0900 ;Center mark size DIMCLRD.256 ;Dimension line and leader color DIMCLRE 256 ;Extension line color DIMCLRT 2 ;Dimension text color DIMDEC 2 ;Decimal places DIMDLE 1.0000 .Dimension line extension DIMDLI 1.0000 ;Dimension line spacing# DIMDSEP . .Decimal separator DIMEXE 1.2 ;Extension above dimension line DIMEXO .7 ;Extension line origin offset DINFRAC 0 ;Fraction format DIMGAP .7 ;Gap from dimension line to text DIM JOST 0 ; Jusri fi cation of text on dimension line DIMLDRBLK ;Leader block name DIMLFAC 1.0000 ;Linear unit scale factor DIMLIM Off Рис. 10.9. Часть файла Dim.scr. Продолжение Г dtm.ccr Notepad ,0вС £rte Edit Format View help DIMLIM Off ;Generate dimension limits DIMLUNIT 2 .Linear unit format DIMLWD -3 ;Dimension line and leader lineweight DIMLWE - 3 ;Extension line lineweight DIMPOST . ;Prefix and suffix for dimension text DIMRND 0.0000 ;Rounding value DIMSAH On ;Separate arrow blocks DIMSCALE 1.0000 ;0verall scale factor DIMSD1 Off ;Suppress the first dimension line DIMSD2 Off ;Suppress the second dimension line DIMSE1 off ;Suppress the first extension line DIMSE2 Off ;Suppress the second extension line DIMSOXD Off .Suppress cutside dimension lines DIMTAD 1 ;Pl ace text above the dimension line DIMTDEC 2 ;Tolerance decimal places DIMTFAC 1.0000 ;Tolerance text height scaling factor DIMTIH Off Рис 1O.1O. Часть файла Dim.scr. Продолжение
162 Часть II. Г.11 ч*...... , ih.i сги<и<< Рис. 10.11. Часть файла Dim.scr. Окончание В начале работы над файлом Dim.scr мы вручную заложили текстовый стиль Ust, поэтому запуск и прохождение файла прошли без сбоев. Чтобы не быть зависимым от наличия или отсутствия текстового стиля, можно его создание заложить в этот же файл. Это будет задание 10.1. Определите, где надо размес- тить команды создания текстового стиля — в начале, в определенном месте или в конце текста и добавьте их в файл. Порядковый номер файла [10-5]. Если команду Script (Пакет) поставить на кнопку и указать путь к файлу Dim.scr, то при нажатии на нее образуется текстовый стиль Ust и размерныи стиль с заданными параметрами. Это будет Style Overrides (Переопределен- ный стиль), имеющий имя текущего стиля. Работа по созданию размерных стилей будет продолжена в части III. Следует заметить, что если в последовательность команд, закладываемых в Script-файл, входит имя какого-нибудь файла, состоящего из слов с про- белами между ними, или имя директории имеет пробел, — файл не будет исполняться правильно. Полное имя доступа к файлу должно быть в этом случае заключено в кавычки.
Часть III РАБОТА С ПРОЕКТОМ ПОД УПРАВЛЕНИЕМ "БЫСТРЫХ КНОПОК" < □ Оптимизация библиотечных блоков □ Создание команд общего назначения □ Создание сложных полилиний □ Альтернативные ячейки памяти □ Создание базового размерного стиля □ Создание именных размерных стилей □ Создание команд простановки размеров
Глава 11 Оптимизация библиотеки блоков В главе 5 была создана временная панель инструментов IVT-Insert, где нахо- дились три кнопки для вставки дверей и три кнопки для вставки внемас- шгабных символов. Если вы работаете архитектором и имеете в библиотеке два десятка различных типов дверей, то панель инструментов становится достаточно большой и ее приходится разделять по каким-то показателям. В разделе 6.3 был показан способ, позволяющий вдвое сократить количество кнопок для вывода элементов символов Homerun: левый и правый HR вы- водились с помощью одной кнопки. Но это был частный случай. В данной главе рассматривается еще один способ, как сократить число кно- пок в панели инструментов, и даже количество файлов в библиотеке. 11.1. Экономим кнопки $лссь мы переквалифицируемся в электронщиков и приготовим инструмен- 1ы для вставки блоков в электронные схемы. Приготовим несколько файлов с чертежами наиболее употребительных элементов электронных схем: тран- шстора, диода, резистора, конденсатора, катушки индуктивности и символа ыземления. Откройте новый файл, где надо вычертить транзистор. Какого он должен быть размера? Это зависит от масштаба будущего чертежа. Хотя электрон- ные схемы вычерчиваются, как правило, не в масштабе, последний всегда присутствует незримо. Надо задать высоту сопроводительного текста в про- пранстве модели так, чтобы текст затем выводился на бумаге высотой 2.5 мм. Надо определять атрибуты, где также фигурирует высота текста. На- до настроить размерный стиль, ведь в схемах обычно присутствуют выноски H eaders). Размеры всех элементов схемы должны правильно соотноситься с высотой текста и размерами выносок. Полому проще всего задать размеры элементов будущих блоков так, как пулю они будут выводиться в масштабе 1:1, и включить в код вывода блока !•.<> ><|>финиеп1 масштабирования.
166 Часть III. Работа с проектом под управлением 'п»и •,>ых кноп> к Мы не будем здесь обсуждать преимущества и недостатки черчения в про странстве модели и в пространстве листа. Примем как факт, что чертежи выполняются в пространстве модели, а распечатываются с пространства листа. Итак, приготовим файл транзистора (рис. 11.1). Рис. 11.1. Символ "Транзистор" Начертите транзистор с диаметром окружности 9 мм1 Base (базовую точку) назначьте на левом конце короткой горизонтальной линии, где на рисунке показана жирная точка. Эта точка здесь и на последующих рисунках до рис. 11.6 не должна присутствовать на реальном чертеже. Можно также пе- ренести транзистор в точку 0,0, которая является базой по умолчанию. Имя файла Tz.dwg. Файл сохраните в папке C:\Macro\Blocks. Следующий файл предназначен для чертежа диода. Размер стороны тре угольника 5 мм (рис. 11.2). Рис. 11.2. Символ "Диод" Базовую точку назначьте в середине левой стороны треугольника. Имя фай- ла Vai.dwg (от слова Valve, вентиль). Третий файл — для чертежа резистора. Вычертите прямоугольник 10x4 мм, (рис. 11.3). Рис. 11.3. Символ "Резистор" 1 Возможно, размеры элементов не совпадают с рекомендованными нормами". В на тем учебном случае это не имеет существенного значения Читатели 'icKfpoiiiiiiiMi могут взять реальные блоки, адаптированные к масштабу I I
I iUim 11 (>111 <Л|<1М1|Ки A|«Hliii<ir Ml Л 167 Ькионую п>чку НЧ11И1Ч11 н (средние короткой стороны прямоугольника сле- ва Имя файлл К / dwf 'lei вер!ый файл предназначен для чертежа конденсатора (рис. 11.4). Рис. 11.4. Символ "Конденсатор" Высота вертикальных линий 8 мм Базовая точка — в середине левой сторо- ны. Имя файла Con.dwg. Следующий файл — для чертежа катушки индуктивности (рис. 11.5). Рис. 11.5. Символ "Катушка индуктивности" Длина катушки 10 мм. Базовая точка в начале первой левой дуги. Имя фай- ла Ind.dwg. Последний файл для заземления (рис. 11.6). Рис. 11.6. Символ "Земля” Длина верхней линии 6 мм. Базовая точка в ее середине. Имя файла Gnd.dwg (от слова Grounding, заземление). Теперь добавьте 6 кнопок в па- нель инструментов IVT-Insert, по одной для каждого элемента электронной схемы. Код для каждой кнопки такой же, как для вставки одной из дверей этой же панели, за исключением имени блока. AC^C_-Insert;Tz;\ ; ; [11-1] AC~C_-Insert;Val;\; ; [11-2] ’СлС_-1пзегС;Ее2;\;[11-3] AC^C_-Insert;Соп;\;;[11-4] АСЛС_-Insert;Ind;\;; [11-5] C^C_-Insert;Gnd;\;;[1 1-6]
168 4acib III. / '.I ли.» с про, к i ом под yno.innoi .... • юк>п<». Коды пригодны для вставку блоков в чертежи, которые byayi выводи n>c>i в печать в масштабе ГЛ. Масштабный коэффициент будет введен нотисе Сделайте быстрые рисунки для кнопок, но здесь можно не вносить измене ния в файл V-Macro.mns в части имен файлов рисунков, потому что уже в этой главе мы заменим все эти 6 кнопок одной, после чего их можно бу дет удалить. Выведите в панель инструментов еще одну кнопку и скопируйте туда любои из вышеперечисленных кодов. Имя кнопки Electronic. Замените в коде имя вводимого блока на обратную косую черту и удалите ОДИН СИМВОЛ " ; ". ~C^C_-Insert;\\;; fll-7] Новая обратная косая черта покажет, что имя блока будет задаваться вруч ную, с клавиатуры. А символ " ", ранее подтверждавший имя блока, вво димого автоматически, будет заменен нажатием ПК или клавиши <Enter>. Проверьте работу новой кнопки. При нажатии на нее в командной строке появляется запрос: Enter block name or [?] <***> Имя блока или |?] Где *** это имя блока, введенного последний раз. Не забывайте использо- вать команду Purge (Очистить), о чем говорилось в разделе 4.1. Остается ввести имя файла: Tz, или Vai, или Rez и т. д. с клавиатуры, на- жать <Enter> и указать точку вставки. Сделайте рисунок на кнопке, напри- мер, символ транзистора дайте рисунку имя "Electronic" и замените в файле V-Macro.mns номерное имя на Electronic.bmp В диалоговом окне Customize (Адаптация), в поле Description: (Описание) укажите, какие именно блоки выводятся этой кнопкой. При приближении указателя мыши к кнопке име- на этих блоков появятся в строке состояния. Мы получили одну кнопку вместо шести, сократив количество информации в памяти компьютера, но эта же информация забивает теперь свою собственную память: надо привя- зать имена всех шести блоков, сидящих под кнопкой, к их имиджу. Если бы было 6 отдельных кнопок, то на каждой был бы рисунок, помогающий вы- брать нужную Можно распечатать лист бумаги с именами и рисунками блоков электронной библиотеки и прикрепить его рядом с дисплеем, но лучше поручить это компьютеру. 11.2. Экономим файлы Для панели инструментов Electronic было создано шесть файлов. Каждый был размером около 25 Кбайт. Итого, 150 Кбайт. А есть еще невидимые глазу килобайты, появляющиеся в памяти компьютера при образовании каждого
нового файла II pi ii'ii.iinil библиотеке таких файлов могут быть сотни. Су- ществую! p.i |||||<||||.н способы упорядочения библиотеки, сокращения коли- чеетва фанлон. Один из них — объединение блоков по тематике в одном файле. В AutoCAD 2000 и в последующих версиях, а также в AutoCAD LT есть DesignCenter (Центр управления), из поля которого можно "снимать" блоки из любого, в том числе библиотечного, файла и прижатой ЛК переносить их в чертеж. Это же можно сделать через меню ПК щелчком по пиктограмме блока. Здесь же есть поле, где можно увидеть укрупненный блок в деталях. Это весьма удобно в тех случаях, когда не требуется изменять масштаб и угол вставки блока. Для других значений масштаба и угла надо пользоваться опцией Insert Block... (Вставить блок...) из контекстного меню правой кноп- ки или отдельно командами Scale (Масштаб) и Rotate (Повернуть), но при гтом теряется оперативность. Кроме того, окно DesignCenter (Центр управ- ления) занимает много места на экране. Приходится пользоваться полосами прокрутки, чтобы найти нужный блок, так как они расположены здесь в алфавитном порядке. А в поле чертежа приходится увеличивать (зуммиро- вать) область чертежа, если выводимый блок мелкий. Все это не соответствует нашим требованиям оперативного ввода блока I» нужном масштабе и под различными, определяемыми по месту, углами. В этой главе попробуем создать такую технологию, при которой все содер- жимое объединенного библиотечного файла будет временно выводиться на жран, но при этом в чертеж будет вставляться только один блок, имя кото- рого вводится с клавиатуры Если это удастся, бумагу с распечаткой рисун- ков блоков и их имен можно будет выбросить в корзину для мусора. Откройте новый файл. Сюда перенесите все шесть рисунков, созданных ра- нее для электронной библиотеки. Все элементы должны быть сгруппирова- ны по возможности кучно, как показано на рис. 11.7. По здесь каждый элемент, в отличие от файла, из которого он был взят, должен быть блоком. Или определения этих блоков должны быть в базе данных этого файла. (Для этого при определении блоков следует в диалого- вом окне Block Definition (Описание блока) поставить опцию Retain (Оста- вить). Под каждым блоком поставьте надпись с его именем и жирную точку вставки. Теперь она должна присутствовать в файле. Надпись и точка не должны быть элементом блока. Само собой разумеется, блоки были созданы в слое 0 и с параметрами Bylayer (Послою). Впрочем, здесь могут быть ва- рианты, подробнее о которых сказано в разделе 4.2. Текст лучше выделить цветом, отличным от большинства цветов, применяемых в чертеже, куда вставляются блоки, но ярким. В файле не должно быть ничего лишнего, что могло бы засорить файл рабочего чертежа, куда будут вставляться блоки. Визовую точку назначьте в центре между рисунками. В этой точке удобно начертить окружность и пересекающие ее оси (рис. 11.7).
170 Часть IH. Работа с п оекюм под ,iy>.iinn ни- м < > 'if л Рис. 11.7. Файл электронной библиотеки с шестью символами Сохраните файл под именем Electronic.dwg и поместите в папку C:\Macro\Blocks. Добавьте еще одну кнопку к панели инструментов IV-Insert. Ее имя — ElecronicU, от слова Universal, универсальная. Идея, заложенная в эту кноп- ку, такова: в чертеж вставляется файл Electronic.dwg Его содержимое входит в чертеж в виде блока с именем "Electronic" и с базой данных, в которую вошли определения всех шести блоков, имеющих имена Tz, Vai, Rez, Con, Ind, Gnd. Вставку блока следует осуществлять в той точке, куда предполага- ется разместить один из элементов. На экран будут выведены шесть рисун- ков созданной нами электронной библиотеки с их названиями (рис. 11.7) Теперь следует набрать на клавиатуре нужное имя, прочитав его на экране, и блок встанет на свое место. Остается удалить ненужное. Это можно сде- лать автоматически, командой Erase (Стереть) с опцией Previous (Предыду- щий). Код для описанной выше операции: AC^C_Ortho;_On;_-Insert .-Electronic; \ ;; ;_Select;_Last; ;—-Insert; \@;;; \ _Erase;_Рг;; [11-8] Здесь назначен режим ортогональности On (Вкл), так как элементы на схе мах размещаются, в основном, горизонтально или вертикально. Удалить на- до предпоследний по времени элемент, т. е. блок с именем "Electronic". По следним стал нужный блок, имя которого введено вручную, поэтому появилась команда Select (Выбрать), делающая блок "Electronic" предыду щим (Previous) выбранным объектом. Теперь надо учесть масштабный коэффициент и вернуть режим ортогональ ности в исходное положение. Впрочем, здесь можно не нагружать компью тер излишней работой — для вычерчивания электронных схем и i.ik выбп
I (1ЙМ II ‘ >тиМНЫЦ11<1 fltin <1,4- Mt Л hihou 1'1 p.u-ия режим ohIki (Qpro) с опцией Он (Вкл). Поэтому 0rtho;0n в коде можно oiivciiiiii, it «ио Kiic.ieicH учета масштабного коэффициента, предос- i.tbhm это сделать читателям, это будет задание 11.1, а код получает номер 111-9|. При работе с этой командой в базу данных чертежа входят сразу несколько определений блоков, в том числе и тех, которые, возможно, не будут ис- пользоваться. Но это маловероятно, потому что в набор блоков обычно вхо- дят "родственные" элементы, которые также будут применены в этом черте- же позже. А в конце работы над чертежом правилом хорошего тона является удаление из него всех неиспользованных данных при помощи команды Purge (Очистить). Если вставляемые блоки имеют атрибуты, при их определении удобнее ус- ыновить режим Preset (Установленный), а код усилить командой, редакти- рующей атрибуты, как это делалось для элемента символа Homerun НЗА в коде [9-10] или [9-11]. Итак, вместо шести учебных кнопок (а в реальной практике их могло быть больше) осталась одна универсальная, и вместо шести файлов в библиотеке общим объемом 150 только видимых килобайт остался один файл объемом около 35 Кбайт. Налицо некоторая экономия места как на экране AutoCAD, гак и на жестком диске компьютера. Конечно, при рессурсах современных компьютеров, когда обьем дисковой памяти измеряется гигабайтами, экономия дискового пространства вряд ли является существенной, но значительное, в несколько раз, уменьшение ко- личества файлов в библиотеке даст определенные удобства при работе с ней. 11.3. Реальный проект Па рис. 11.8 показан фрагмент из реальной тепловой схемы котельной. Рис. 11.8. Фрагмент тепловой схемы котельной
172 Часть III. Работа с проектом под упраыкии м • < ч ых кнопок На каждой из четырех магистралей установлено следующее оборудование, обозначенное цифрами: 1 — Насос (Pump) 2 — Задвижка (Latch) 3 — Обратный клапан фланевый (Inverse valve flanged) 4 — Переход (Transition) На концах магистралей расположены заглушки (Сар) — цифра 5. В завер шение на схеме следует поставить символ направления движения жидкости (Direction of flow), обозначенного цифрой 6. Все символы — это, естествен но, блоки, хранящиеся в библиотеке C:\Macro\Blocks. Попробуем все one рации по вставке блоков осуществить с помощью одной кнопки, как это было в предыдущем разделе, но добавим к коду возможность прорезать ли нию трубопровода в месте вставки блока. Таким образом, можно избежать ручной работы командами Trim (Обрезать) или Break (Разорвать; Приготовьте новый чертеж, где расположите символы всего нужного для этой схемы оборудования (рис. 119). imi iMi Рис. 11.9. Файл арматуры, устанавливаемой на трубах Размеры символов должны быть расчитаны на вставку их в чертеже масшта ба 1:1. Далее здесь при необходимости несложно учесть коэффициент мас- штаба. Габаритные размеры рисунка с именем LAt и IVf (задвижка и обрат ный клапан) составляют 7x4 мм. Диаметр символа РМр (насоса) — 8 мм Треугольник внутри окружности имеет высоту 4 мм. Размеры треугольникоп TRs (перехода) и Dlr (стрелки) одинаковые и равны размерам треугольника IVf. Длина САр (заглушки) равна 3 мм. Имена будущих блоков, а также ма ленькая окружность с пересекающими ее линиями, выполнены ярким цвс том, отличным от большинства цветов будущего чертежа. Имена блоков на писаны так, что первые две буквы заглавные. Это сделано специально и будет объяснено ниже. Приготовьте в этом файле шесть блоков с соответш вующими именами и точкой вставки в тех местах, где пок ианы жирные точки. Само собой разумеется, ни точки, ни текст с именами блоков в их состав не входят. Элементы, из которых будут соснинь Ihihmi, л uiai'ie pa*
Гчава 11. Опгимиллцнн Оиплишвки (шоков 173 положим в слое с именем, например, Plumbing, так как варианты с разными именами слоев для одного и того же оборудования в других чертежах вряд in возможны. Однотипные элементы схем на всех чертежах, как правило, располагаются в одних и тех же слоях. Слово Plumbing переводится как "во- юпроводная система". Теперь надо решить задачу, как автоматически, пользуясь кромками блока, прорезать под собой линию в месте его вставки. AutoCAD 2002 предоставля- ет такую возможность в обновленной, по сравнению с предыдущими вер- сиями, команде Trim (Обрезать). Но для этого надо каким-то образом ука- зать системе, какие именно кромки должны стать режущими. В общем случае совсем не обязательно, что таковыми должны быть непременно габа- ритные кромки, как на нашем рисунке. При ручном вводе команды Trim (Обрезать) кромку надо указывать мышью. Но как сделать это автоматиче- ски? А что, если вместе с блоком принести из библиотечного файла и ре- жущие кромки? Пусть они не входят в состав собственно блока, а будут до- бавлены к нему поверх его линий. Если их там, в библиотечном файле, выделить командой Select (Выбрать), то эти добавочные вспомогательные линии получат статус Previous (Предыдущий) и принесут его с собой в чер- теж, куда вставляются блоки! А вызвать затем режущие кромки, воспользо- вавшись опцией Previous (Предыдущий) команды Trim (Обрезать), не соста- вит труда. На чертеже, который получает имя Plumbing.dwg (рис. 11.9), начертите поверх каждого блока будущие режущие кромки: на LAt и IVf поверх боковых щечек, па РМр — окружность того же диаметра, на блоке TRs — такой же треуголь- ник. Деталь САр, состоящая из одной линии, не требует дополнительных по- строений, но чтобы была идентичность, сделайте вспомогательную линию и на этом элементе. Деталь Dlr непрозрачная и не требует разрыва линии под собой при вставке, но, чтобы наша команда работала без сбоев, необходимо формальную режущую кромку иметь и здесь. Нарисуйте линию посередине блока, как на элементе Сар Приготовьте теперь вспомогательные блоки, в состав каждого должен войти исходный блок и его дополнительные линии. Имя каждого нового блока состоит из двух первых букв основного. Например, если основной блок называется LAt, то вспомогательному дадим имя LA. Именно поэтому на рис. 11.9 две первые буквы выделены заглавными. Вызов блока для вставки будет осушествлятся набором двух первых букв, а в итоге на чертеже останется блок с полным и логическим именем. Как и в первый раз, и состав нового блока не входит ни его имя, ни жирная точка. Точки вставки основного и дополнительного блоков совпадают. 1 еперь назначьте для чертежа точку его будущей вставки в центре, где нари- сована маленькая окружность с осями, применив команду Base (База). Сис- |емпая nepcMi пиля Insbase при этом приняла значение этих же координат. II hi iii-pcM.-i пне пег детали так, чтобы базовая точка оказалась в начале ко- црлпн.н П (I
174 Часть ///. Работа с проектом под управлением "быстрых кнопок" Сохраните и закройте файл, вернитесь в учебный чертеж для отработки вставки блоков. Первая часть кода аналогична [11-7]: ^C^C—Ortho;_On;_-Insert;Plumbing;\;;;_Select;_Last;;_-Insert;\@;;;\_ Erase;_Рг;; [11-10] Убедитесь в работоспособности первой части этого кода, вызывая по очере- ди блоки LA, LV, TR и др. Если картинка с рисунками блоков, возникаю- щая на экране, покажется великоватой, можно командой Scale (Масштаб) уменьшить ее на чертеже Plumbing.dwg. Главное, чтобы перед определением блоков они были правильных размеров. В базу данных чертежа при первой же вставке внешнего файла Plumbing.dwg вошли все 13 блоков: общий блок "Plumbing” и все его составляющие, шесть блоков с трехбуквенными имена- ми и шесть блоков с двухбуквенными. Теперь надо вытащить режущие кромки, для чего блок следует расчленить. Какой блок? Последний, имя которого было набрано на клавиатуре, и содержит две буквы. То есть сле- дующей в цепочке будет команда Explode (Расчленить) с опцией Last (По- следний). Блок, например, TR, распадется на два элемента: треугольник, который должен стать режущей кромкой, и основной блок с именем TRs. Когда в библиотечном чертеже Plumbing создавался блок TR и AutoCAD запрашивал выделение объектов (Select Objects),, эти элементы приобрели статус Previous (предыдущий), который они принесут в рабочий чертеж. Поэтому совсем не обязательно было пр1Гменять команду Select (Выбрать) при изготовлении двухбуквенных блоков. Следующим шагом бу- дет включение в цепочку команды Trim (Обрезать). Режущие кромки выде ляются опцией Previous (Предыдущий), и AutoCAD найдет два (примени- тельно к блоку TR) объекта Previous, один из которых треугольник — режущая кромка, а другой — это блок TRs. Последний вызовет недовольство AutoCAD и он выдаст сообщение: "1 was not a valid edge or.. "Один не является подходящей кромкой..." Но второй объект, треугольник, таковым является и сыграет отведенную ему роль. Объект, подлежащий обрезанию, можно указать символом " @ ". Коор динаты этой точки соответствуют точке вставки блока, которая лежит на линии трубопровода. Именно на этом месте его необходимо прорезать. За тем можно удалить отработанный инструмент — режущую кромку, для чего применим команду Erase (Стереть) с опцией Previous (Предыдущий). С та ким титулом осталась теперь только режущая кромка, выделенная предше ствуюшей командой Trim (Обрезать), поэтому только она и будет удалена Код команды вставки блока с прорезанием линии под собой: AC^C_Ortho;_On;_-Insert;Plumbing;\;;;_Select;_Last;;_-Insert;\@;;;\ Erase;_Pr;; _Explode;_Last ;_Trim,-_Pr; ; @;_Erase; Pr; ; |I1 ll|
Г llittbt 11 IJltlHMHf II (I in fol uni, nil . inh->li 175 По при uiipoiioikiiiuii MiM nuihi, которая, согласно нашей логике, должна ра- бошть безотказно, пиши обнаруживаются сбои. В командной строке могут появиться слова: “Cannot TRIM this object". "He могу обрезать этот объект". Почему не может? А какой объект? Если объект — это линия, то она должна 1ать себя обрезать. Вот если это блок... Эврика! Это и есть блок! AutoCAD почему-то подумал, что надо обрезать блок, а не линию. Ведь сверху на ли- нии лежит блок, и точка " @ ” указывает на него, а не на линию. Это может произойти, если вставляемый блок в области точки вставки имеет линии или другие объекты, например, блоки LA или РМ. При вставке пустотелых блоков, таких как TR, команда работает. Здесь требуется всего два щелчка для вставки и разворота блока, а линия прорежется автоматически. (На са- мом деле два щелчка потребовались бы при вставке с помощью одной кнопки единичного блока. В этом примере в одну кнопку включена серия блоков, поэтому приходится делать дополнительные щелчки.) В общем слу- чае надо доработать команду. Поскольку режущая кромка выделяется авто- матически, надо добавить щелчок, чтобы показать объект для обрезки. Для этого последний знак " @ " в коде [11-11] следует заменить на обратную косую черту. Итак, теперь команда потребует трех щелчков, последний должен указать шнию под блоком. Для этого придется увеличивать (зуммировать) чертеж, приближая и укрупняя это место. Нельзя ли избежать лишних движений? Раз уж AutoCAD не дает возможности сделать вставку блока за два щелчка, пусть он сам услужливо подставит укрупненную картинку, да еще выставит ее в центре экрана! Для этого надо вспомнить, как работают опции команды Zoom (Показать). Среди них есть Center (Центр). Если указать точку на эк- ране, она станет центром вида, но для этого надо задать увеличение (Magnification). Его можно задать так: пХ. Здесь "п” коэффициент увеличе- ния (уменьшения), а знак X эквивалентен умножению. Таким образом, если необходимо увеличить вид в четыре раза, следует добавить к коду перед ко- мандой Trim (Обрезать): Zoom;—Center;@;4х А в конце команды можно вернуть предыдущий вид обратно. Если исполь- ювать опцию Previous (Предыдущий), которая также есть в команде Zoom (Показать), экран придет в то же состояние, которое было до команды Trim (Обрезать), но если мы хотим оставить блок в центре экрана, надо добавить голько: _Zoom; 0.25х Полный кол команды получается таким: . ЛС_5 • ' Insert;Plumbing;\;;;_Select;_Last;;_-Insert;\@;;;\_ itraeej.Hi । •
176 Часть III. Работа с проектом под упрашн ни м imm кнопок Explode;_Last;_Zoom;_Center;@;4x;_Trim;_Pr;;\;_Erase; 1'1 Zoom;0.25x [11-12] Блоки "Plumbing", все двухбуквенные, а также неиспользуемые из этой се рии блоки становятся ненужными и их можно удалить, применив команду Purge (Очистить) с опцией Block (Блок). Это можно сделать списком, перс числив все блоки через запятую. Следует иметь в виду, что первым в списм1 удаляемых блоков должен быть общий, содержащий все остальные, т. с "Plumbing" Добавка к коду [11-12], очищающая файл от лишних блоков: _Purge;_Block;Plumbing,«перечислить блоки>;Ыо [11-13] Возникает вопрос, включать ли эту добавку в код [11-12] или в конце черчс ния запустить команду Purge (Очистить) вручную? Вопрос скорее философ ский. Если мы включим добавку в код, не будет болеть голова об этих лиш них блоках. Но при этом мы заставим AutoCAD "напрягать мозги", раз за разом очищая файл от одних и тех же блоков. А где-то на далекой электро станции кочегар бросит в топку котла лишнюю лопату угля, обеспечивая напряженную работу вашего комьютера. Так что, уважаемый читатель, решайте эту проблему самостоятельно.
Глава 12 Создание команд общего назначения 12.1. И снова Copy-Edit В главе 3 была сделана первая настоящая самодельная кнопка Copy-Edit (Копировать и редактировать), позволяющая создавать текст путем копиро- вания текста-прототипа и одновременного его редактирования, [3-2|. Теперь мы вернемся к этой команде для ее улучшения и развития. В код не было заложено изменение состояния ортогональности ORTHO (ОРТО). В большинстве случаев использования этой команды режим орто- гональности должен быть отключен. Если до применения команды он был включен, приходилось вручную переключать режим в состояние О1Т. Учесть это теперь для искушенного читателя, изучившего главу 8, посвященную языку LISP, является несложной задачей, которую он сможет решить само- стоятельно, как ответ на задание 12.1. Найдите также способ, позволяю- щий при помощи этой обновленной команды скопировать и отредактиро- вать не только текст, но и блоки с атрибутами. Или, если точнее, скопиро- вать блок и одновременно отредактировать его атрибуты. Код получит номер [12-1]. При работе с командой Copy-Edit (Копировать и редактировать) надо пом- нить, что у текстовой строки есть такой параметр, как Justification (Вырав- нивание). Если в чертеже используются несколько вариантов выравнива- ния, пользоваться командой надо с осторожностью: можно получить текст с неподходящим для данного случая выравниванием. Кстати, для исправле- ния этого параметра, если текст уже создан, служит команда Justify Text (Tjust) из меню Express. Команда меняет параметр "выравнивание" и остав- ляет при этом текст на месте. 12.2. Move-Rotate В меню Express (Экспресс) есть универсальная команда Move Copy Rotate (MoCoRo). С ее помощью можно, выбирая опции и вводя их с клавиатуры, передвигать, копировать или поворачивать объекты, а также объединять эти
178 Часть III. Работа с проектом под уп/ ашк»и.-м ft* • ц их кнопок" действия, не выходя из команды. Кроме того, в команду включено гакж» масштабирование объектов (Scale). На практике редко приходится объедп нять действия Move (Перенести) и Сору (Копировать) в одно, поэтому команда представляется излишне нагруженной вариантами. Здесь предлага ется создать две отдельные кнопки: Move-Rotate (Перенести и повернуть) и Copy-Rotate (Скопировать и повернуть). Команда Move-Rotate не кажется сложной, хотя простая комбинация ко манд не дает нужного результата. Сначала надо выбрать объекты командой Select (Выбрать), чтобы набор получил статус Previous (Предыдущий). Затем с этим набором уже можно производить действия. Режим ортогональности в наиболее общем случае лучше отключить, соответственно, надо прежд всего запомнить его состояние до применения команды, а потом, в конце восстановить прежнее. Базовые точки команд Move (Перенести) и Rotate (Повернуть) можно со вместить. Именно так работает команда MoCoRo из меню Express (Экс пресс) по умолчанию, если не применять еще одну входящую в нее опцию Base (База). Итак, код команды Move-Rotate (Перенести и повернуть): ^C''C(Setq<->Om<->(Getvar<->"Orthomode") ) ;_Ortho;_Of;_Select; \_Move; Pr;;\\_Rotate; _Pr; ; @\ (Setvar<->"Orthomode"<->Om) 112-2] ra-------------------------------------------------- * Имя файла рисунка на кнопке Move-Rotate.bmp «ф А вот что касается рас положения этой и последующих кнопок на экране и имени панели инстру ментов, предоставим теперь читателю решить эти вопросы самостоятельно. 12.3. Copy-Rotate Объединенная команда Copy-Rotate (Скопировать и повернуть) очень удоб на в повседневной практической работе, но она не так проста, как это ка жется. Дело в том, что AutoCAD за предыдущий выбранный набор (Previous Selection Set) принимает оригиналы объектов, а не их копии. Если велел за командой Сору (Копировать) в цепочку макрокоманды включить Rotate;Previous (повернуть предыдущий набор эленентов), будут поворачп ваться оригиналы объектов, которые остались на старом месте. Как же вын ти из этого положения? ЕсЛи бы можно было сделать так, чтобы на меси' оставался не оригинал, а копия, а оригинал перенести на новое место ко мандой Move (Перенести) и уже там поворачивать, как это было сделано в команде Move-Rotate (Перенести и повернуть), задача была бы решен.) Но программисты компании Autodesk заложили в бездушную машину вари ант, полностью отвечающий названию команды Сору (Копировать), т с копия объекта переносится, а сам объект остается на месте. Опять геле
In.iH-tl. । iii i.itnr hn«i >iu| uffiii -hi h,i Wfi'H’liHit 179 i|)j<|)iii>ni ciojHi hi i(>|K>ii-, через югорый не перешагнуть. Придется его <>()ОЙ ги А что, если нам сделать копии объектов на самих себя? После этого ориги- нал, как предыдущий (Previous) выбранный набор, перенести на новое ме- с го командой Move (Перенести) и уже там поворачивать! Итак, сначала применим команду Select (Выбрать) и, пометив объекты, соз- дадим тем самым Previous Selection Set (предыдущий выбранный набор). Затем командой Сору (Копировать) скопируем выбранный набор "на себя", г. е. возьмем за базовую и вторую одну ц ту же точку. При этом копии объ- ектов лягут на свои оригиналы. Затем командой Move ^Перенести) перене- сем оригиналы, получившие статус Previous (предыдущий) на новое место. Базовая точка при этом выбирается по своему усмотрению. После этого включим в цепочку команду Rotate (Повернуть), приняв за объекты все тот же предыдущий выбранный набор, а базовой точкой вращения оставим точ- ку, куда был перенесен набор объектов. В коде она будет показана как сим- *• •• иол @ . Стратегия намечена, осталось решить последнюю задачу: что принять за ба- зовую точку копирования "на себя"? В принципе, можно взять любою точку, задав координаты дважды, например, 10,18 и 10,18. Проще, чтобы не вызы- вать вопросов, выбрать точку 0,0 и 0,0. (Для трехмерного черчения надо включить сюда третью ксюрдинату, по оси Z.) Может возникнуть ситуация, что точка 0,0 окажется за пределами лимитов (Limits), а системная переменная Limcheck, контролирующая образование объектов за пределами лимитированной зоны, равна 1. (Что равноценно со- стоянию Limits, On (Лимиты, Вкл).) Можно ли в этом случае использовать точку 0,0 в качестве базовой для ко- пирования на саму себя? Предоставим читателю самостоятельно проверить •ту гипотезу. И покажем еще два варианта выбора базовой точки. Центр видового экрана хранится в системной переменной Viewctr. Извлечь координаты центра МОЖНО при ПОМОЩИ функции LISP (Getvar~"Viewctr") или для LT-версии функции языка DIESEL $м=$(Getvar,viewctr). Слиш- ком маловероятно, что центр экрана окажется вне зоны, ограниченной ли- митами (Limits). Но самое простое решение — это использовать в качестве базовой точки последнюю точку (Last Point). Извлекать ее при помощи функций языков LISP или DIESEL не требуется, достаточно ввести символ " @ ". Этот символ прочитывается и в версии AutoCAD IT. И гак, стратегия намечена, можно приступать к созданию кода. Команда не простая и достаточно интересная. Ее разработка обогатит ваши знания. Со- ставьте таблицу шагов и запишите код, который затем можно будет сверить с ainopci им, если заглянуть в ответы на задание 12.2. Код этой команды напучат iiumi р 112 Ц
180 Часть III. Работа с iifiot’KtuM no/i yt цы a avium i <w q>«m 12.4. Copy-Edit_2 Командой Сору-Edit (Копировать и редактировать) можно работать только с текстом. Если ее применить к другому, не текстовому объекту, макро команда исполнит только свою первую часть, т. е. Сору (Копировать). Кро ме того, команда Copy-Edit (Копировать и редактировать), которая была разработана ранее, в главе 3, работает только с одним текстовым объектом Поскольку такой вариант случается наиболее часто, мы в этой команде эко номили щелчки мыши, совместив базовую точку копирования с той, кою рой был выбран объект. Но, бывает, надо скопировать объект с текстом н последний отредактировать. Можно сделать универсальную команду, которая могла бы копировать обь екты с текстом или несколько текстовых объектов, а затем редактирован, текст на новом месте. Если речь идет о нескольких объектах, в том числе не обязательно текстовых, сначала надо применить команду Select (Выбрать) А затем, как это было сделано в команде Copy-Rotate (Скопировать и по вернуть), надо передвинуть объекты на новое место, но здесь вместо коман ды поворота Rotate (Повернуть) ввести команду редактирования текста Таким образом, взяв за основу команду Copy-Rotate (Скопировать и повер нуть) [12-2], получаем код новой команды Copy-Edit_2 (Копировать и редак тировать_2): ЛСЛС(Setq«OM«(Getvar«"Orthomode"));_Ortho;_Ofj_Select;\_Cp;_Pr;;@; _Move;_Pr;\\_Tedit;_Pr; ; —(Setvar^."Orthomode "-.Git) [12-4] Здесь наглядно видно, как из уже наработанных кирпичиков можно склады вать новые домики-команды, заимствуя целые блоки из ранее созданного материала. 12.5. Текст в специализированном слое Пользователям AutoCAD LT также следует проработать этот раздел, несмот ря на применение здесь функций языка LISP. В конце будет дана рекомеп дация по работе с текстом для них. Уже говорилось ранее, что если весь текст создавать в специализированном слое, которому назначить определённый цвет, а затем этому цвету в стиле печати назначить меньший, чем другим цветам, вес линии (Lineweight), hi текст выводился бы на плоттер более тонкой линией и чертеж бы выглядеи красивее. Но делать это вручную большая морока: каждый раз перед созда нием текста надо переключать слой, а затем возвращать его назад. Надо еле дить еще и за тем, чтобы в окошках Color Control (Цвета), Linetype Control (Типы линий) и Lineweight Control (Веса линий) стояли установки Bylayei (Послою). Затем, после написания текста, для продолжения работы опян. надо возвращаться к предшествующим установкам. И повторять операции
I ИЛИЯ 1.' ( 'о yf.tinin hi>Ai,t‘v| .ifliif Ju ii.> hi r'p'f'i»* 1H1 перед каждым новым t«ki him. Или переодически щелкать кнопкой Match Properties (Kouiipon.iiiiie свойств), переводя созданные в случайных (для юкста) слоях юксювые объекты в специализированный слой. Такая работа не для программирующего чертежника. Для читателя книги, добравшегося до этой главы, решить все проблемы с переключениями впол- не посильная задача Прежде всего, надо поискать готовые кирпичики. Вспомните команду, вы- водящую символ Homerun (Раздел 8.10). Здесь написанию текста предшест- вовало создание специализированного слоя с именем "TEXT', которому придавались свойства: цвет — желтый, тип линии — обычная сплошная (Continious), вес линии — по умолчанию (Default) Этот слой автоматически становился текущим. Здесь же создавался текстовый стиль Ust с высотой текста равной 0, что позволяло использовать этот стиль для чертежей лю- бого масштаба Одновременно учитывался масштабный коэффициент. По- сле написания текста автоматически возвращались предшествующие взятию команды установки: слой, режим ортогональности и текстовый стиль. Казалось бы: берем код команды Н3_8-6, |8-61, убираем все лишнее, и зада- ча будет решена. На самом деле код можно несколько усилить: добавить контроль над текущим цветом, типом и весом линий, чтобы никогда не за- думываться, а что там выставлено в окошках контроля цветов, типов и весов линий. « Итак, надо наити системные переменные, отвечающие за это. Вся серия системных переменных, регулирующих вышеназванные параметры, начина- ется с букв Се: П Cecolor — контролирует цвет для новых объектов. Цвет задается номером или словами, например, Bylayer (Послою). Поэтому тип вводимого пара- метра цвета называется String, текстовая строка. Даже номерной цвет здесь является строкой; П Celtype — контролирует тип линии для новых объектов. Задается словом, например, Continious (Обычная сплошная). То есть тип вводимого пара- метра также текстовая строка (String); П Celweight — контролирует вес линии для новых объектов. Задается целой цифрой, в сотых долях миллиметра. Например, для задания веса линии 0.15 мм надо ввести 15. Перечень весов линий можно увидеть, раскрыв список окошка весов линий на панели инструментов Object Properties (Свойства объектов). Для задания веса линии Bylayer (Послою) использу- ется цифра -1 (с минусом), для значения ВуЫоск (Поблоку) использует- ся -2, а для значения Default (По умолчанию) используется -3. Поэтому тип вводимого параметра integer, целое число. С этим термином чита- тель уже знаком по главам 6 и 8. l.HiTi» елсдус! немного отвлечься. Откройте диалоговое окно Options (На- i ip<4iK.i) ini in- I.ни е User Preferences (Пользовательские). Здесь нажмите
182 Часть III. Работа с проектом под управл ншлм "г. ч«-х кпо/к» кнопку Lineweight Setting (Параметры весов линий). Появшся окно (рис. 12.1). Рис. 12.1. Диалоговое окно Lineweight Settings По умолчанию (Default) вес линии равен 0.25 мм и контролируется системной переменной Lwdefault. Такая толщина линии выведется на плоттер, если: П В окне Layer Properties Manager (Диспетчер свойств слоев) в столбце Lineweight (Вес линии) установлено значение Default (Обычный). П В окошке Lineweight Control (Веса линий) из панели инструментов Object Properties (Свойства объектов) установлен вес линии Bylayer (Послою) или Default (Обычный). П Используется цветозависимый стиль печати (с расширением ctb) и в диа логовом окне Plot Style Table Editor (Редактор таблиц стилей печати), вкладка Form View (Карточка), установлено для веса линии: Use object lineweight (вес линии "по объекту”). Это диалоговое окно выводится таким образом: сначала командой Plot (Пе чать) вызывается одноименное окно. Здесь, на вкладке Plot Device (Устрой ство печати), есть кнопка Edit (Изменить), выводящая окно Plot Style Table Editor (Редактор таблиц стилей печати). Исходя из этого, вес линии для текстовых объектов можно назначить мень ший, чем 0.25 мм. Например, 0.18 мм. Этого можно добиться двумя спосо бами: 1. Назначить тексту специализированный цвет, например, желтый. Назна чить стандартный (для организации) стиль печати, и в нем прописан, желтому цвету вес линии 0.18 мм. Если используется несколько тексто вых стилей, во всех для желтого цвета назначается вес линии 0.18 мм Текст разместить в специализированном именном слое У пас здесь вы брано имя "Text", и ему назначен желтый цвет В окошке Color Control
/itaH.lL I ... I|( и Ч1Ч.Ч1НЧ fill (llucia) cjic/ivi i т.н । ниш. unci Bylayrr (Послою). Жеигым цветом по во 1мож1 юс।и иг ।кмi. юн..।вся для других целей или применять его для гех ооъектоп которые должны выглядеть на чертеже тоньше других. 2. Не назнача1ь текстовым объектам специальный слой. Размещать текст в текущем на момент написания слое. В код команды ввести назначение веса линии 0.18 мм и тип линии Continuous (обычная сплошная). Или в код команды ввести назначение желтого цвета и тип линии Continuous. Рассмотрим здесь первый вариант — размещение текста в специализиро- ванном слое. Второй вариант читатель может проработать самостоятельно. Итак, в основе часть кода [8-6], отвечающая за текст: ЛСЛС (Setq—Cl— (Getvar—"Clayer") — Ts— (Getvar—"Textstyle") ) ; _-Style;Ust; Romans.shx;0;0.65;0;;;;_-La;_Make;_Text;_Color;2 ;;;_Dtext;\ (*—2.5—(Getvar—"Userrl"); 0;(Setvar—"Textstyle"—Ts);(Setvar—"Clayer”—Cl) [12-5] Проверьте работу кнопки. He забудьте до этого назначить масштабный ко- эффициент нажатием на одну из кнопок панели инструментов IV-Scale (Масштабный фактор). Добавим сюда выражения для запоминания текущих цвета, типа и веса линий. (Setq—Сс—(Getvar—"Cecolor")) (Setq—Clt—(Getvar—"Geltype")) (Setq—Cw—(Getvar—"Celweight")) Где cc — Color Control (цвет), cit — Linetype Control (тип линии), Cw — Lineweight Control (вес линии). В коде мы объединили все разрозненные функции setq в одно выражение. Далее введем назначение нужных пара- метров: Cecolor;Bylayer;_Celtype;Bylayer;_Celweight;-1; А в конце кода восстановим прежние значения, использовав выражения функции LISP Setvar: ЛСЛС(Setq—_С1—(Getvar—"Clayer")—Ts—iGetvar—"Textstyle"1—Cc— (Getvar—"Cecolor")—Clt—(Getvar—"Celtype")—Cw—(Getvar—"Celweight’)); Cecolor; Bylayer; _Cel type; By layer; _Celweight-1; Style; Us t; _ Romans.shx;0; C.6 5;0;;;;_-La;_Make;_Text;_Color;2;;;_ Dtext;\(*—2.5—(Getvar—"Userrl"));0; (Setvar—"Textstyle"—Ts);(Setvar—"Clayer"—Cl); (Setvar— ’^Cecolor"-Cc); (Setvar—"Celtype"—Clt);(Setvar—"Celweight"—Cw) [12-6] Общий вид части окна Customize (Адаптация) с кодом этой команды пред- iдавлен на рис. 12.2. Здесь же дан пример описания работы команды.
184 Часть III. Работа с проектом под упрал/Тыням ммт* Customize Commands | Toolbars Button Properties | Keyboard Name: |feKt Description: [однострочный текст e Layer "Text" цветом i№ 2 и текст, стилем Ust Возвращает Layer. iColor, Linetype и Lineweigtit предшествующие !взятию команды Размер текста автомат (следует масштабу чертежа [12-6] I Macro associated with this button. ''C'CXSetq О (Getvar "Clayer") Ts (Getvar"Textstyle") Cc (Getvar "Ce color") Clt (Getvar "Celtype") Cw (getvar "Celweightu)),_Cecolor Bylayer._Celtype.f3ylayer._Celweight-l;_-Style :UstRomans.shx(LC.65,0:;L’_'La:_Make;T ext_Coloi.2;;_DtexT.\f‘ 2 5 (Getvar "Userrl ")).0.(Setvar "Textstyle" Ts) (Setvar "Clayer" Cl);(Setvar 'Decolor" Cc);(Setvar "Celtype" Clt);(Setvar "Celweight" O) Рис. 12.2. Диалоговое окно Customize с кодом вывода однострочного текста (Замечание ) Следует иметь в виду, что из-за перескакивания текста в поле Macro associated with this button: (Макрос для данной кнопки:) на следующую строку (об этом говорилось в разделе 8.10), на рис. 12.2 не очень наглядно видны пробелы в выражениях LISP. Это касается строк 1, 2, 4 и 5. Если код записан в тексте, то здесь мы условились для показа пробела применять символ <~ В окне Customize (Адаптация) надо ставить реальные пробелы. Поэтому при слепом, бездумном копировании кода с книжного рисунка на свой компьютер программа скорей всего работать не будет. Все действия по записи кода долж ны производиться осмысленно. Это замечание касается всех последующих рисунков, где код показан в окне Customize (Адаптация). Рисунок можно выполнить на базе одной из существующих дчя панели ип струментов Layers (Слои) из меню Express (Экспресс) с добавлением буквы Здесь не учитывался такой фактор, как выравнивание (Justification). Пл умолчанию он имеет значение Left (Левый), т. е. выравнивание текста про исходит по линии, начинающейся из левого нижнего угла первого знак.1 Полезно иметь команду, позволяющую создавать текст с выравниванием но центру (Center). Текст с выравниванием по центру удобно размещать в таб лицах, центрируя его относительно временно проведенной средней линии столбца или с использованием созданной в этой главе команды Copy-Edil (Копировать и редактировать). При этом удобно имен, пару команд с вы равниванием Left (Левый) и Center (Центр) или Middle I HI п Middle Cenlri
• ••i I > ii t® ««Aii,.. 1.1 tu vi-1 и it____________________________________________________________ h‘‘ (. pcmiii.i rui'itn и 11••' iiiiiii и in nipt*). Последние располагают ickcc no < | »<*Л I II' li /1III III II « oijiaib ком in/iy iaI ( enter (Текст с выравниванием по центру) предостав- шсгся чит пелю в качестве задания 12.3. Код ее получит порядковый номер 112-7|. 12.6. Текст и слой без LISP Выше для написания текста внутри крманды создавался с помощью опции Маке (Создать) и временно становился текущим специализированный слой с именем "Text", а затем возвращался прежний рабочий слой. Для этого ис- пользовались функции LISP Setq и Setvar Для версии AutoCAD LT такая 1ехнология не подходит, потому что не удавалось запомнить системную пе- ременную Clayer, восстановив которую можно было бы вернуться в преж- ний слой. Поэтому мы пойдем другим путем. Нельзя ли автоматически изменить свойства проставленного в текущем слое 1екста9 Поменять ему слой9 В разделе 9.2 объекты переводились в текущий слой командой Change (Из- менить). Здесь надо проделать обратную операцию, перевести объекты из |екущего слоя в специализированный, имя которого заранее известно. Та- ким образом, последовательность команд должна быть такой: 1 Создание специализированного слоя с именем "Text". 2. Написание собственно текста. 3. Перевод текста в слой "Text". При этом слой "Text" не должен становиться текущим. А это означает, что применяемая нами до сих пор опция Маке (Создать) команды -Layer (-Слой) не подходит. Надо поискать другую опцию. Поэтому здесь следует вернуться к разделу 8.9. и рассмотреть команду -Layer ( Слой) вновь: ' ommand: -Layer J Current layer: "xxxx" Enter an option [ ?/Make/Set/New/On 'Of f/Color/LType...] : Введите опцию |?/Создать/Установить/Новый/Вкл/Откл/Цвет/Тип линии ..] Опция New (Новый) образует новый слой, но не сделает его текущим. New J Enter name list for new Layer(s): Введите список имен для новых слоев: Text J Enter an option [?/Make/Set/New/On/Off/Color/LType...] : 7 7 5ак 1207
186 Часть III. Работа с проектом под упраилкнк^м nuuj>нх кноп>" Введите опцию...: Color J Enter color name or number (1+255): Введите имя цвета или номер...: 2 J Enter name list of Layer(s) for color 2<xxxx> Введите список имен слоев для цвета 2 <текущий на данный момент слой> Тех tJ Enter an option [?/Make/Set/New/On/Off/Color/LType...] : Введите опцию...: J Command: В результате появился новый слой с именем "Text", но он не стал текущгм. При повторном вводе команды с этой же опцией New (Новый) и с тем Ж1 именем вновь создаваемого слоя "Text" промелькнет сообщение: Layer ''Text” already exists. Слой "Text" уже существует. Но команда не прервется. Это позволит многократно назначать одно и icil же имя для слоя. Часть кода, которая создает новый слой: ~C^C_-Layer;_New;TextColor;2;Text;; [12-8] Отработаем теперь написание текста. Пусть это будет многострочный текс! с выравниванием ML (середина слева). В разделе 7.2 предлагалось прорабо тать команды Dtext (Дтекст), Text (Текст), -Text (-Текст), Mtext (Мтекст), Т (Т), -Mtext (-Мтекст), -Т (-Т). Если это было сделано и найдена разнии.| I между командами, то становится ясно, чем отличаются команды Mtext и -Mtext (Т и -Т). Первая вызывает привычное окно редактора многостроч ного текста Multiline Text Editor (Редактор мультитекста). Заканчивается ко манда щелчком ЛК по кнопке ОК. Вторая команда приглашает ввести текст в командной строке и заканчивае! ся двойным щелчком правой кнопки мыши. Частичный код написания текста для команды Mtext (Мтекст): _Mtext;\_Just;_М1;\ [12-9] То же для команды -Mtext (-Мтекст): _-Mtext;\_Just;_М1;\\; [12-10]
/'MUM I,' < .....''Щ* lU'M'M""»' Ы7 Дли дальне инь iu |>‘i iDiiiii» kUMiiiuibi сведут объединить коды 112-8] и [12-9] ими 112-10], что кому пршппся больше, и добавить к этому объединенному коду команду < Iihiiko (И емепшь): Аслс_- Layer;_New;Text;_Color;2;Text;;_Mtext;\_Just;_M1;\_Change;_Last;; Properties;_Layer;Text;; [12-H] 5десь не учитывается высота текста и она выведется со значением по умол- чанию. Чтобы высота текста стала соответствовать масштабу, надо ввести опцию Height (Высота) и применить масштабный коэффициент, используя функции языка LISP, как это было сделано в [12-6] или, для AutoCAD LT, функции языка DIESEL. Читатель сможет сделать это самостоятельно. При попытке сделать аналогичную команду для перевода однострочных тек- стов в другой слой появляются неожиданные осложнения. Опция Last (По- следний) выберет только последнюю строку текста. А как быть, если коли- чество строк больше, чем одна? Можно ли сделать так, чтобы каждая строка стала самостоятельным одиночным объектом, после чего последовала бы команда Change (Изменить), но при этом должна быть возможность для продолжения вывода текста? Команда -Text (-Текст) здесь сулит перспек- 1ивы. Она выдает одну строку текста, которая при нажатии ПК мыши за- канчивается, тогда как в команде Dtext (Дтекст) для этого необходимо двойное нажатие <Enter>. Именно <Enter>, а не ПК. Некоторое неудобство вызывает отсутствие набираемого на клавиатуре текста в поле чертежа. Он появляется только в командной строке. Но к этому нетрудно привыкнуть. *лСлС_-Ъауег;_Мею;Имя слояColor;Цвет;Имя слоя;;_-Text;\;;\_Change; Last; .-„Properties;_Ьауег;Имя слоя; ; [12-12] Первая часть кода — это кирпичик [12-8]. Здесь создается новый слой имя ;лоя заданного цвета. Далее пишется текст Его начало определяется щелч- ком ЛК в поле чертежа, а окончание — щелчком ПК. Текст тут ж перево- дится в новый слой имя слоя. Звездочка перед началом кода делает процесс непрерывным, пока не будет нажата клавиша <Esc>. К коду можно добавить создание текстового стиля, выравнивание и высоту текста, пропорциональную масштабу. Для последнего следует применить функции умножения и Getvar из языка DIESEL, как это было сделано в главе 9. 12.7. Перпендикуляр В панели инструментов Object Snap (Объектная привязка) есть привязка, позволяющая проводить перпендикуляр из точки к объекту. Можно также восстановить нормаль от объекта. Эта операция известна немногим. Прове- 1пте линию под произвольным углом. Повторите команду Line (Отрезок)
188 Часть III. Работа с проектом под управление м “оы ipux кнопок и возьмите привязку Per (Нор). При приближении перекрестья к исходно)! линии в его центре появляется значок перпендикуляра с многоточием. Вы берите место на линии, начальную точку нормали и щелкните ЛК. Следую гций щелчок должен последовать с той стороны от линии, куда пойдет нор малы На экране появится новая линия, перпендикулярная к исходной. I с длина и местоположение определятся вторым щелчком. Таким способом можно восстановить перпендикуляр и от дуговых объектов. Недостато. этого метода очевиден: отсутствует возможность восстановить перпендику ляр из определенной точки на исходной линии. Приходится перемещал, перпендикуляр в нужную точку отдельной командой. Существуют и другие способы построения нормали, такие как полярные ко ординаты, изменение UCS — пользовательской системы координат, измене ние системной переменной Snapang и другие, но все они требуют ручной ра боты по настройке диалоговых окон или многократных щелчков мыши. Здесь мы создадим команду построения перпендикуляра от линейного объ екта, лишенную указанных выше недостатков и на основе изменения ко манды UCS (ПСК). Почему команда UCS (ПСК), а не системная перемен ная Snapang? Потому что для возврата прежнего UCS (ПСК) в команде есп. соответствующая опция Previous (Предыдущий), а для возврата значения переменной Snapang нужно было бы применить функцию setq языка LISI’ и команда не смогла бы работать в AutoCAD LT » Первый шаг — это создание новой координатной системы — UCS (ПСК) и выравнивание ее по объекту, от которого требуется восстановить нормаль Составьте самостоятельно таблицу шагов, в результате чего должен полу читься такой код: лСлС_Цсэ; _Nevj; _Nea; \ ; _Obj ect; @ [12-13] Здесь знак перед _object означает вторичное взятие команды UCS (ПСК). Это обстоятельство будет иметь определенные последствия. При нажатии на кнопку [12-13] значок LCS (ПСК), обычно расположенный в левом нижнем углу экрана, может переместиться в точку на объекте, и i которой восстанавливается нормаль и куда теперь переместилась точка 0,0 Это зависит от того, какая опция команды Ucsicon (Знакпск) была устанон лена заранее: Origin (Начало) или Noorigin (Безначала). Это можно увиден из падающего меню View => Display => UCSicon => (Вид => Отображение Знак ПСК =>) — стоит ли птичка на слове Origin (Начало). В любом случае значок поменяет свой угол. Чтобы не было мелькания на экране, лучше экн значок вообще убрать на время работы команды, а затем восстанови и. вновь. Теперь можно добавить в последовательность |12 Н| команду Line (Отр< зок), а перед ней включить режим opToioii.uii.iioc in 1 i irt надо ncpiivn
III. Ill I I I 41 >1 >• |«Л|; '.I 411/14. IIIHl HpCiMIIOKI i III 11 I । и Iplll IJ HI I II |(1*1КУ II.ri.lJKI КООрДШЫГ, пременно поки- нувшую сине мп iii ii iipui ip.Hicmc. Получаем кол команды: Ucsicon; Ifi Hepi_New;_Nea;\;_Object;@;_Ortho;_On;_Line;\ lies ;_Pr ,• ; Pr;_Uc s i con;_On П2-14] Цля восстановления прежней системы координат понадобилось дважды применить опцию ее команды Previous (Предыдущий). Мы ведь дважды меняли UCS (ПСК): сначала опцией New (Новый) перенесли точку 0,0 на повое место, выбрав его с помощью объектной привязки Nea (Ближайшая) па исходной линии, а затем развернули эту новую безымянную UCS (ПСК), выровняв ее по объекту. Команда восстанавливает перпендикуляр всего за два щелчка и работает очень эффектно. Но при этом имеет ограничения. Если необходимо восста- новить нормаль в том месте, где исходный объект пересекается с другим объектом, то UCS (ПСК) будет выравниваться по тому объекту, который окажется выше. А если оба объекта развернуты под близкими углами, то при высокой скорости черчения можно этого не заметить и построить неверный перпендикуляр. Чтобы этого не произошло, код ] 12-14] следует усилить. Для лого надо потратить один лишнии щелчок на выделение объекта. Кроме того, обладатели полной версии могут дополнительно добавить сюда воз- вращение режима ортогональности в прежнее состояние. В [12-14| посде выхода из команды режим ортогональности становился включенным. Сде- лать этот код под номером 112-15] попросим наших читателей. Это будет задание 12.4. 12.8. Favorite Osnap Профессиональные чертежники (CAD-operatois) обычно устанавливают типо- вой для себя, часто употребляемый набор объектных привязок OSNAP. Выбор производится в диалоговом окне Drafting Settings (Режимы рисования) на вкладке Object Snap (Объектная привязка), как показано на рис. 12.3. 4то удобнее и быстрее, чем каждый раз индивидуально назначать привязку на одну операцию. Перебор символов привязок, появляющихся в нагружен- ной линиями части чертежа на курсоре мыши, не представляет трудностей. По иногда можно заметить, что по необъяснимым причинам установки те- ряются, и во всех окошках рис. 12.3 исчезают флажки. Кроме того, иногда бывает необходимо временно изменить привычный набор, а затем к нему вернуться. В любом случае могла бы быть полезной кнопка, нажав на которую можно было бы восстановить привычный набор.
190 Часть III. Работа с проектом под управлением “быстрых кнопок' Drafting Settings ?.х Snap and Grid | Polar Tracking Object Snap Object Snap Qn (F3) Object Snap modes □ Endpoint Ц5 Л p Midpoint Q К Center 0 0 p Node X О P Quadrant X H Intersection // — Г Extension Г jObjedSnapTrac£ingdn(Fl I " Insertion Select All p Perpendicular Dear All Г~ Tangent p Nearesl Г Apparent intersection Г Parallel To track from an Osnap point, pause over the point while in a command. A tracking vector appears when you move the cursor To stop tracking pause over the point again Options-. | C°ncet | tfelp [ Рис. 12.3. Диалоговое окно Drafting Settings Режим объектных привязок — OSNAP устроен так, что каждому отдельному его значению соответствует свое число — bitcode. Например: ENDpoint (Конточка) 1 CENter (Центр) 4 INTersection (Пересечение) 32 PERpendicular (НОРмаль) 128 и т. д. Полный перечень этих кодов (bitcodes) для всех объектных привязок можно просмотреть в диалоговом окне System Variables (Системные переменные), которое вызывается командой Sysvdlg или Меню Express => Tools => System Variables Editor. Чтобы создать набор объектных привязок (OSNAP), надо поставить рн i флажков в окне, показанном на рис. 12.3. AutoCAD при этом суммирует п< < коды (bitcodes) и вводит полученную сумму в системную переменную Osmode. Если эту сумму ввести в кнопку, при нажатии на нее ранее yip.i ченный или измененный набор восстановится. Но нет необходимости подсчитывать сумму кодов bitcodes своего приныч ного набора. Достаточно взглянуть в командную строку Убедим чти
Нщм I ' I ЧИНЪ' ( '1»Г п jiii.iiokiikim ukin |)1и111иц Sellings (Режимы рисования) стоял нужные флажки Пиперин 1ы kh.hiiI ।type Osmode J. Появится итоговая цифра. Для («стояния на рис. U 1 но 703. Генерь создат е кнопку. Ее логично разместить на панели инструментов >biect Snap (Объектная привязка), если она содержится на экране. В поле Macro associated with this button: (Макрос для данной кнопки) окна Custom- ize (Адаптация) следует внести: ’_Osmode;703 [12-16] Апостроф перед именем системной переменной и отсутствие лслс дадут возможность AutoCAD поставить нужные установки в прозрачном режиме, г. е. в процессе работы другой команды. Сделайте для кнопки рисунок, например, тот же символ с магнитом, соот- ветствующий стандартной кнопке Object Snap Settings (Настройка постоян- ных режимов привязки) и добавленной букве "F", от слова Favorite, люби- мый jT Панель инструментов Object Snap (Объектная привязка) удобно держать на жране вертикально. Но если экран мал, вторая дополнительная кнопка к нему может не поместиться (первая кнопка "Середина между двумя точ- ками" была создана в главе 6, ее код [6-21). В этом случае несколько редко употребляемых кнопок этой панели можно свести в панель, органично вхо- дящую в основную « 12.9. Закрытие диалогового окна Properties Диалоговое окно Properties (Свойства) в AutoCAD 2002 можно открыть несколькими способами: I. Вводом команды Properties (Окносв) с помощью кнопки, находящейся в Standard Toolbar (Стандартная панель). 2. Из падающего меню Tools => Properties (Сервис => Свойства). <Ctrl> + 1. 3. Если объекты выделены ручками (Grips), то через контекстное меню ПК. Системная переменная Pickfirst должна при этом иметь значение 1. Это можно сделать в диалоговом окне Options (Настройка) на вкладке Selection (Выбор), установив флажок в окошко Noun/Verb selection (Предварительный выбор). Переключение этой системной переменной производится также сочетанием "горячих клавиш" <Ctrl> + <Н>. 4. Двойной щелчок ЛК по элементу вызовет диалоговое окно Properties (Свойства) или, если для редактирования данного элемента существуют специализированные окна — то их. Например, двойной щелчок по тексту вызовет соответствующее окно редактирования текста. Но можно сделать
192 Часть III. Работа с проектом под управлени м "i 11< шил кнопок и так, чтобы после закрытия специализированного окна автоматически появлялось стандартное окно Properties (Свойства). Для этого надо заиш в меню Express (Экспресс) и далее Tools => Double-click Properties. Здесь надо в командной строке установить режим Deprops в положение On. Примечание Сокращение Deprops произошло от слов Double Click Properties, или, в русской интерпретации — Двойной щелчок для вызова диалогового окна "Свойства" В AutoCAD 2004 режим Deprops отсутствует. 5. Набором на клавиатуре сокращения Props (сокращенное Рг выводит диа лотовое окно Options (Настройка)). 6. Набором на клавиатуре сокращения ch. 7. Набором на клавиатуре сокращения Мо. Для закрытия окна AutoCAD предоставляет меньше возможностей: I. Нажать ЛК на маленькую кнопочку X в правом верхнем углу окна. <Ctrl> + 1 2. ПК по полю окна и в появившемся контекстном меню выбрать Hide (Скрыть). Но окно Properties (Свойства) обычно открывают для того, чтобы выясни и или изменить свойства элементов. Значит, эти элементы выделены ручками (Grips). Закрыв окно, надо теперь снять выделение с объектов. Это делается обычно либо двойным нажатием на клавишу <Esc>, либо командой Deselect All (Отменить выбор) из контекстного меню правой кнопки, либо команден Pan (Пан). Таким образом, надо произвести две последовательные операции закрыть окно Properties (Свойства) и снять выделение с объектов. Их можно свести в одну. Закройте окно Properties (<Ctrl> + 1) и посмотрите в команд ную строку. Оказывается, сработала команда Propertiesclose (Окносвзакр). 1 < и надо ввести в кнопку. Но как избавиться от ручек (Grips)? Наберите коман ду ... нет, не любую. Во всяком случае Erase (Стереть) не подходит. Возьмем нейтральную команду Line (Отрезок). Выделение исчезло, AutoCAD запрашн вает первую точку начала отрезка. Но здесь можно нажать клавишу <Esc' и прекратить команду. Вот и пришло решение проблемы: _Line^C_Propertiesclose [12-17| Если окно Properties (Свойства) настроено так, что оно всегда появляец-н в одном месте, например, прилегая к левому краю экрана, то кнопку удобно разместить на верхней панели, рядом с верхним правым углом окна Properties (Свойства). Вывод окна всегда в одном, определенном месте осуществляется оинпгп Allow Docking (Разрешить закрепление), находящуюся в меню ПК. там ж< где мы пробовали рассмотренную выше опцию Hide (Скрыть)
11|>ИМ<‘Ч<1НИО U версии AidoCAI) W4 окно Properties (Свойства) может сворачиваться в уз- кую полоску 41 о позволяет всегда держать его на экране. Оно разворачивается при приближении курсора мыши Поэтому код [12-17] для этой версии теряет актуальность Есть еше два способа снять выделение с объектов. Пометьте объект при по- мощи ручек (Grips). Поставьте указатель мыши на выделенный объект, но не на ручку. Нажмите и удерживайте левую кнопку мыши. Через несколько мгновений в месте перекрестья появится значок, прямоугольник со стрел- кой. Это означает готовность объектов к перемещению. Если отпустить те- перь кнопку, не сдвигая мыши с места, то выделение исчезнет. Можно и переместить объект таким способом. Теперь проделайте эту же процедуру с правой кнопкой мыши. Если указатель мыши не сдвигать, то выделение исчезает. А если переместить его, то вместе с ним сдвинется и объект (объ- екты), оставив свою копию на старом месте. При отпускании кнопки появ- ляется контекстное меню, предлагающее следующий выбор: Move Неге Сору Неге Paste as Block Cancel Можно действовать пс предложенному выбору. Следует заметить, что при этих действиях не работает режим объектной привязки. Передвинуть сюда Скопировать сюда Вставить как блок Отмена
Глава 13 Создание сложных полилиний 13.1. Разрыв трубы Если вы имеете дело с чертежами, на которых изображены трубы, часю приходится показывать разрыв трубы. Обозначение разрыва трубы представ лено на рис. 13.1. Рис. 13.1. Разрыв трубы Это сложная кривая, и в системе AutoCAD нет команды для ее вывода Приходится вырисовывать кривую вручную, используя команду Pline (Пли | ния) или Spline (Сплайн). Здесь мы автоматизируем отрисовку кривом Сформулируем требования к этой кривой: I. Она должна быть целиковой, состоящей из трех дуг, объединенных в единое целое. Лучше всего, если это будет полилиния. 2. Пропорции дуговых сегментов полилинии должны сохраняться незави симо от диаметра трубы. 3. Полилиния должна отрисовываться минимальным количеством щелчков мыши, по возможности, двумя. 4. Ширина (Width) полилинии должна быть равна 0. Это означает, что ее текущая ширина должна сохраниться после выхода из команды. Кривая имеет шесть характерных точек (рис. 13.2). Мы задались целью сделать полилинию за два щелчка, в точках Pl и I’1 значит, остальные точки AutoCAD должен рассчитать автоматически Про вести кривую через эти точки затем не составит труда. Для расчет точек применим геометрический калькулятор системы AulopCAD Гочкн Pl u I’'
f Л.111,1 f.l ( i> М|лпн«' i fn>*iu4k in ши и» iiiJ fgn ’ — _-;~з^==аивЕ ияки вммамавапжчимва^мвммаммммжмамам определят щелчки III*, и книькуii>ii<»р ыномшп их с этими именами Точку РЗ вычислиib нсепижно PJ-(Р1+Р2)/2 Рис. 13.2. Характерные точки символа разрыва трубы Для расчета остальных точек, лежащих на серединах дуг-фрагментов кри- вой, надо вернуться к команде Pline (Плиния) и вспомнить, какими спосо- бами можно выполнить дугу полилинии, затратив наименьшее количество щелчков. Такую дугу мы уже строили. Это был хвост символа Homerun. В разделе 4.3 была показана возможность выполнить дугу полилинии всего двумя щелчками, если заранее задать угол, под которым выходит касатель- ная из начальной точки дуги. Чем больше этот угол, тем круче получается дуга. Таким образом, методом подбора можно найти, что тот же угол в 70°, который был применен для настройки крутизны дуги хвоста HR, удачно подходит для дуговых сегментов кривой "Разрыв трубы", т. е., если исполь- ювать опцию Аге (Дуга) команды Pline (Плиния) и затем опцию Angle (Угол), можно отказаться от вычисления точек Р4, Р5 и Р6. Отсюда и гото- вый кирпичик построения дуги, взятый из [4-8]: . . ,_Pline; '_Cal;P1;_W;0; ;_Arc;_Angle;70;... [13-1] Здесь вместо многоточия в начале надо назначить точки Р1 и Р2. Это можно сделать, используя функцию калькулятора cur: '_cal;Pl=Cur;\;P2=Cur;\ [13-2] Если добавить соответствующую объектную привязку, например, Nea (Бли- жайшая) для первой точки и Per (Перпендикуляр) для второй, то точки Р1 и Р2 будут выставлены точно на линиях стенок трубы: '_Cal;Pl=Cur;_Nea;\;P2=Cur;_Per;\ [13-3] Вместо последнего многоточия в [13-1] надо проставить конечную точку первого сегмента РЗ, и ее должен предварительно вычислить калькулятор: '_Са1;Р1»(Pl+Р2)/2 [13-4]
196 Часть III. Работа с проектом под упрашн нчпм /и/х кнопоь Затем должно последовать продолжение полилинии к точке Р2 I i чи не м< нять опцию и угол, то второй сегмент повторит первый в зеркальном ош I бражении, но со сдвигом, и получится маленькая синусоида. От точки I'.' | обратно к точке РЗ дуга должна иметь вершину, направленную в flpyiyiu сторону. Это достигается изменением угла с 70° до -70°. Объединив [13-3| [13-1] и [13-4] и добавив продолжение, получаем такой скелетный код, ни одновременно введем ранее принятые сокращения: ЛСЛС’_Са1;Pl=Cur;_Nea;\P2=Cur;_Per;\_Pline;'_Cal;Pl;_W;0;;_Ar;_Angi 70;'_Cal;P3=(P1+P2)/2;'_Cal;P2;_Ang;-70;'_Cal;P3;; [13-5] На скелет надо нарастить мясо. Попробуйте построить линию разрыва Tpv бы в нагруженной другими элементами области черчения, и вы заметиic что временами линия искажается. Объяснение этому уже было дано в разве ле 6.3. Режим объектной привязки, если он был включен до взятия комаи ды, следует отключить, а в конце надо вернуть его первоначальное значение Кроме того, было бы удобней при назначении курсором точек Р1 и Р2 еде лать так, чтобы от первой точки Р1 ко второй Р2 тянулась так называемая "резиновая" линия, наподобие той, которая наблюдается при копировании объектов. В языке LISP есть такая возможность, мы познакомились с ней в разделе 8.4, а здесь мы сымитируем ее прорисовкой обычного временно! <>| отрезка от Р1 к Р2, который затем удалим, назначив ему предварительно статус Previous (предыдущий). Для реализации идеи "резиновой" линии надо несколько изменить выражение [13-3|. Сделать окончательный код линии разрыва трубы с учетом вышей i ложенных рассуждений является заданием 13.1. Результат получит порядки вый номер [ 13-6]. 13.2. Ломаная линия Меню Express AutoCAD 2002—2004 дает команду, позволяющую вывеет в чертеж полилинию под названием Breakline Symbol (Обозначение разры ва), или Breakline (рис. 13.3). Рис. 13.3. Ломаная линия Размеры символа и его местоположение на линии разрыва можно настроин в опциях Команда не доведена до ума: символ вырисовывав) си ночилнппсп
icK\ni'h in при t ii.i A i n iiiiidio (it.i iipinijn. in ширину 0 Кроме ioio, на i ipoilKu p i imi pu tiiMiiuhi ipcuyci jioiio.iiiiiiiejii.iii.ix щелчков. В разных облас- inx чертежа, мнорые ттидикп в ра пюмасшгабные видовые экраны, прихо- лшея нсреиас ip.iiin.iii* размер символа. Хорошо бы сделать так, чтобы < нмнол можно было "выращивать" движением мыши до приемлемого (на глаз) размера и поворачивать в нужном направлении, а затем боковые чпнии-усики растягивать до требуемой длины. Возьмем это положение за основу и попытаемся создать такой код. Символ ломаной линии разрыва можно вставить в чертеж как внешний блок. Ранее при вставках блока мы всегда применяли коэффициенты мас- штабирования по осям X и Y, равные I. В данной команде, казалось бы, зтого делать не надо. Коэффициент масштабирования можно задавать ди- намически, движением мыши. Но дело в том, что команда -Insert (-Вставить) требует раздельного масштабирования по обеим осям, и про- порции символа могут исказиться. Поэтому сделаем так: вставим блок с ко- )ффициентами масштабирования по обеим осям, равными 1, а затем коман- дой Scale (Масштаб), а она пропорционально меняет размер по всем направлениям, вручную (динамически) будем "выращивать" символ до тре- буемых размеров. Выделение объекта для команды Scale (Масштаб) осуще- ствляется автоматически опцией Last (Последний), а базовая точка масшта- бирования совпадает с точкой вставки блока, что в коде будет записано символом Следующий шаг — эт® поворот символа на нужный угол. Его осуществит команда Rotate (Повернуть) с той же опцией Last (Последний) и той же ба- зовой точкой @. После этого блок можно разрушить командой Explode (Рас- членить) и опять для выделения объекта можно использовать опцию Last (Последний). Блок распадается на элементы, и усики превратятся в линии, которые поддаются вытягиванию командой Lengthen (Увеличить) с опцией Dynamic (Динамика). Последний шаг — это объединение получившихся после разрушения блока отдельных элементов в полилинию. Очень важно, как будет выполнен чертеж символа. Откройте новый файл. Дайте ему имя Breakline.dwg и поместите в папку Menuwork, которую следу- ет создать в каталоге C:\Macro. В эту папку мы впоследствии будем склады- вать все материалы, обеспечивающие работу собственного меню. Поэтому логичное для нее имя Menuwork, где "work" — это работа. Выполните чертеж символа из трех элементов (рис. 13.4). Элемент 1 — полилиния, состоящая из трех сегментов. Элементы 2 и 3 — ко- роткие отрезки, выполненные командой Line (Отрезок). Общий размер не имеет существенного значения. При динамическом "выращивании" его можно будет как увеличивать, так и уменьшать. Пусть он будет вычерчен как бы для чертежей усредненного применяемого вами масштаба, например, для 1:20.
198 Часть III. Работа и проектом под упранп нн-^м тых кт п» За базовую точку, которая станет точкой вставки блока, оставим по умолчи нию точку 0,0. Передвиньте нарисованный символ так, чтобы его середина попала в точку 0,0. Все элементы вычерчиваются в слое 0, чтобы после встав ки в чертеж символ принял цвет текущего слоя. Цвет назначается Bylayci (Послою). А тип и вес линии? Это интересный вопрос. Если эти показатеш будут Bylayer (Послою) или Byblock (Поблоку), то символ при вставке в чер теж примет либо установки текущего слоя, либо текущие установки, выстан ленные в окошках Linetype Control (Типы линий) и LineWeight Control (Вес.> линий). Поэтому на чертеже Breakline.dwg следует всем элементам назначит г тип линии Continuous (Сплошная обычная), а вес линии несколько меньше нормального. Например, если нормальный вес линии (Default) настроен ни 0.25 мм, то для символа примем 0.20 мм. (О настройках веса линии (LineWeight) — см. раздел 12.5). Линия разрыва при этом получится более тон кой, чем основные линии чертежа. Настроить эти параметры можно, либо применив команду Properties (Свойства), либо в соответствующих окошках контроля на панели инструментов Object Properties (Свойства объектов). Рис. 13.4. Центральный элемент ломаной линии Длину "усиков" 2 и 3 сделайте приблизительно такой, как средняя наклон ная линия. Почему не длиннее? Это станет понятно далее. И еще надо при- вести одну хитрую операцию: командой Select (Выбрать) пометьте элементы 2 и 3. Зачем? Пока мы будем двигаться дальше, можно обдумать этот во- прос. И другой вопрос: почему символ состоит из трех элементов, а не вы полнен единой полилинией? Сохраните чертеж, после чего можно приступить к составлению кода. Эти следует сделать в другом открытом учебном файле. ЛСЛС_-Insert;Breakline;\;;;_Select;_Last;;@;\_Rotate;_Last;;@;\_ Explode;_Last [13-7] Проверьте работу кода. Конечным результатом является вывод на чертел символа ломаной линии цвета Bylayer (Послою), размеры и угол вставки которого определены вручную движениями мыши. После команды Explndi (Расчленить) он попадает в слой 0. Теперь вручную проверьте работу комап ды Lengthen (Удлинить). Опция Dynamic (Динамика) позволяет удлини и. боковые усики-линии, для чего надо выделить линию для удлинения и по
I /мал 1 . Д/дльи» 1н«н> л iiii/ui iihiim I nieucjinib МЫНН.И) Причем пометить линию надо ближе к тому се концу, коюрыи ubHMiuiiiii-H л Пот почему "усики" не должны быть слишком длин- ными. При их длине, значительно превышающей квадратик-прицел, в кото- рый превратился курсор мыши, легче ошибиться и указать не на ту полови- ну линии для ее удлинения. Нарисуйте полилинию и попробуйте ее удлинить. AutoCAD ответит: Cannot LENGTHEN this object by dynamic point He могу удлинить этот объект динамически. Интересно, что другие опции этой крманды с полилинией работают. По- этому мы и сделали исходный чертеж Breakline.dwg так, что символ состоит из трех частей: в середине — полилиния, по краям — отрезки линий. Продолжим код команды: ЛСЛС_-Insert;Breakline;\;;;_Select;_Last;;@;\_Rotate;_Last; Expl ode; _Las t ; „Lengthen;_Dy;\\\\ [13-8] Рис. 13.5. Диалоговое окно Customize с кодом линии разрыва трубы для полной версии AutoCAD Теперь остается соединить отдельные части в полилинию и перевести ее в те- кущий слой. Первая задача решается командой Pedit (Полред) с опцией Join (Добавить). Причем специально выделять объекты не надо: автоматически бо- ковые "усики" имеют статус Previous (Предыдущий), а ломаная полилиния в центре — last (Последний). Почему? Потому, что мы действовали дальновид- но и i.ip.inre, создавая исходный чертеж Breakline.dwg, применили команду
200 Часть III. Работа с проектом под упр-изл ни м /•>,. нщх юн пол Select (Выбрать) к боковым отрезкам символа. Она и сделала их имеющими сы тус Previous (Предыдущий) Как перевести объект в текущий слои? Дин AutoCAD, имеющего меню Express (Экспресс), это команда Laycur. Для вылс ления объекта, каковым является наш символ, используется опция Last (По следний). Код команды представлен на рис. 13.5 и его порядковый номер ] 13 9| Здесь режим ортогональности в процессе действия команды не меняется и переключается вручную по мере необходимости. Для AutoCAD LT вместо команды Laycur, которая там отсутствует, следуй подставить выражение [9-5], переводящее объект в текущий слой без при менения языка LISP, На рис. 13.6 показан код ломаной линии для версии LT, его номер [13-10]. Рис. 13.6. Диалоговое окно Customize с кодом линии разрыва трубы для AutoCAD LT 13.3. Фигурная скобка В конце главы 8 наиболее нетерпеливым читателям предлагалось сделанв команду, выводящую фугурную скобку. Эта сама по себе интересная про грамма хорошо показывает принципы полуавтоматического вычерчивании фигур различной конфигурации, ключевые точки которой поддаются маг- матическому расчету. Требования к фигурной скобке: 1. Ее длина определяется щелчками мыши. 2. Длина хвостиков, центральной выступающей части, а также радиусы avi должны корректно соотноситься с применяемым масштабом
I И.UM 1'1 I ооьИНк 'MHHMItll 4)1 OiKponie yieiiiiiiii >ii|ii<jfL Il.uiiiiiiiiie uieci» ipii c ipoKii текста высотой ‘ мм, । ik будто <i(pii'A выпускается в масштабе 1 1. Вычертите фигурную скобку, оОьед|||1Я1оп1\то сиоку зги три строки так, чтобы пропорции ее час- icii и радиусы скрутлспия углов были удовлетворительными. Замерьте длину фигурной скобки и ее выступающих частей. Пусть они будут соответственно 12 и 1.2 мм, а радиус дуги 1 мм. Нас еще будет интересовать расстояние между центром и "плечом" фигурной скобки. Пусть оно будет 0.3 мм. 11а рис. 13.7 показана фигурная скобка и характерные точки на ней, кото- рые будут использованы для ее пострбения. Рис. 13.7. Фигурная скобка Здесь Pl —Р2=12м^1 Р1—РЗ = 1.2 мм Р2-Р4= 1.2 мм Р5—Р6 = 1.2 мм Р5-Р7 = 0.3 мм Р5-Р8 = 0.3 мм R = 1 мм Точки Р1 и Р2 будут назначены щелчками мыши, остальные точки опреде- ляются расчетом. Расстояние 12 мм дано условно. Длина скобки может быть различной, но в пределах разумного, остальные расстояния должны быть сохранены. Для других масштабов впоследствии будет введен масштабный коэффициент, который сделает команду пригодной для вывода фигурной скобки в чертежи любого масштаба. Для определения точек Р1 и Р2 можно использовать функции LISP Getpoint И Setq. (Setq<->P2 <-> (Getpoint) ) Или функции калькулятора pi=cur в комплекте с временной "резиновой" шпией от точки Р1 до точки Р2, как это было сделано ранее в коде по- строения пинии разрыва трубы [13-6] Здесь применим функцию LISP. Как
202 Часть III. Работа с проектом под упъ itnenm м 1i ч<и» юмк'к было показано в разделе 8.4, при помощи этих же функций (>j.-tpoint и setq) можно получить "резиновую" линию автоматически. Итак, начертите фигурную скобку по размерам рис. 13.7. Выполните ее ш ярким цветом и заблокируйте слой, в котором она находится. Сделайте ie кущим другой слой с более ярким цветом. Свою фигурную скобку мы будем вычерчивать поверх этой. Введите с клавиатуры: (Setq<->Pl<->(Getpoint) J Поставьте точку Pl в нужное место на вашем чертеже (Setq«P2«(Getpoint^Pl) Д Поставьте точку Р2. Точку РЗ рассчитаем, используя функции нормали калькулятора. Введи и команду Cal (Калк): Command: _Са1 Д >>Expression: РЗ=Р1+1.2*Nor(Pl,Р2) Д Здесь Nor(Pi,P2) - это единичный вектор, нормальный к линии Pl—Р2 и направленный влево от линии Pl—Р2 (см. раздел 6.6). Точку Р4 получаем аналогично, но за базовую вместо Р1 следует взять Р2 Точка Р5 определяется как среднее арифметическое точек РЗ и Р4’ Command: _Са1 Д Р5= (РЗ+Р4)/2 Д Точки Р7 и Р8 находим при помощи функции pid калькулятора: Command: __Cal Д Р7= Pid(Р5,РЗ,0.3) Д Command: _Cal Д Р8= Pid(Р5,Р4,0.3) Д Точка Р6 лежит на нормали к линии РЗ—Р4, а базовой является точка Р5: Command: _Са1 Д Р6=Р5+1.2*Nor(РЗ,Р4) Д Все точки рассчитаны, через них можно теперь провести полилинию: _Pline Д '_Са1 Д >>Expression: Pl Д (показывает координаты точки) Specify next point or...:
I Млн I I ( > . n •'!> t In'HH liiHltlf C«1 J «Expression 1*1 .1 (показывает координаты точки) specify next point or...: •_Cal J ««Expression: P7 J и т. д. к точкам P6, P8, P4, и P2. Здесь следует закончить полилинию вводом <Enter> и скруглить ее углы командой Fillet (Сопряжение) с радиусом 1 мм и опцией Polyline (Полили- ния). Диалоговое окно Customize (Адаптация) с кодом команды для масшта- ба 1:1 показано на рис. 13.8. Его порядковый номер [13-11, 1 Customize Commends Toolbers Button Properties j Keyboard | |Curl 1:1 Description: Фигурная скобка дпя масштабе ’ 1(13-11] Место associated with this button *C*C(Setq p1 (Getpoint)):\(Setq p2 (getpoint pl))VCaLp3"p1+1 2“*Nor(p1 p2)’.p4-p2*1 2“*Nor(pl p2);p5-(p3*p4)/2:. p6-o5+1 ,2*Nor(p3 p4): p7-Pld(p5.p3.0 3);:p6-Pld(p5 p4.0 3);_Pline/_C 6.tp1;,_Calip3;l_Cakp7;,_Cal;p6;,_Ca1 p8:l_Cakp4-,_Calp2::_Fillet_Rad ius:1^Polyline;_Last:; Рис. 13.8. Диалоговое окно Customize с кодом вывода фигурной скобки для чертежей масштаба 1:1 Остается отключить на время действия команды режим объектной привяз- ки, как это уже делалось раньше применительно к линии разрыва трубы, добавить взятые оттуда же кирпичики, сохраняющие рабочую ширину поли- линии после выхода из команды и учесть масштабный коэффициент. Из перечисленных факторов образования кода самым сложным является учет масштабного коэффициента. Он должен быть применен в выражениях для расчета расстояний Р1—РЗ, Р2—Р4, Р5—Р6, Р5—Р7, Р5—Р8, а также ра- диуса скругления углов, т. е. во все элементы кода, определяющие точки РЗ, Р4, Р6, Р7 Р8 и радиус, должны быть включены сомножители, равные зна- чению сп к-мноп переменной Userrl. Здесь следует вернуться к разделу 8.5,
204 Часть III. Работа с приемом под упр.ituimai м и txiwoiwh где показано, что для использования в расчетах калькулятора системных ш ременных AutoCAD, надо предварительно перевести их в переменные языки AutoLISP. Выражение для этого: (Setq«A-> (Getvar<->"Userrl") ) Здесь под символом a LISP запомнил значение переменной Userri. И если затем подставить этот символ, заключенный в ОДИНАРНЫЕ кавычки, в качестве сомножителя в выражение калькулятора, последний проведет вы числение. Например, для определения точки РЗ в [13-11] надо записать: ..._Cal;P3=Pl+1.2*Nor(Pl,Р2)*'А' Аналогичные выражения используются для расчета точек Р4 и Р6. Что Kai а ется точки Р7, то здесь запись такая: P7=Pld(P5,РЗ,('А'*0.3)) Точка Р8 вычисляется аналогично. Радиус скругления полилинии определи ется здесь без калькулятора. Он у нас принят равным 1 мм, поэтому можно просто записать: —Radius;(Getvar_"Userr1") А если бы он не был равен 1, то пришлось бы ввести калькулятор На рис. 13.9 показан полный код этой команды, его номер [13-12]. ’^Customize Commends j Toolbars Button Properties j Keyboard | blame. [Curly description: Curly, Фигурная скобка [13-12] Macro associated with this button: "CTC(setq A (getvar "Userri") Os (Getvar "Osmode") Plw (Getvar ,lPlinewid"))J(Setq p1 (Getpoint))A(Setq p2 (getpoint P1)),LCal;p3-p1*1.2*Nor(p1.p2r,A,’p^p2*1 2*Мог(р1.р2)й1А,„р5-(рЗ +p4)/2;.p6-p5*1 2*Nor(p3 p4)“‘A,„p7-Pld(p5.p3 (,A,*0.3))..p6-Pld(p5.p4 ('A'*0 3));_Osmode.O;Plinewid!d _Pline.'_Cal,p1 ,_Cal;p3,'_Cal.p?.,_Cal .p6,LCal;pB.,_Cal,p4,'-Cal.p2, _Fillet_Radius (Getvai "Userri ,’)„_Potyline;_Last„(Setvar ‘Osmode" Os).(Setvar "Plinewid" Plw) Рис. 13.9. Диалоговое окно Customize с кодом вывода фигурной скобки для чертежей любого масштаба
Глава 14 Альтернативные ячейки памяти 14.1. Стратегия В разделе 1.2 была создана первая панель инструментов под именем IV-Clipboard, кнопки которой дублировали экранное меню правой кнопки мыши в части межфайлового обмена деталями чертежей: Copy with Base Point (Копировать с базовой точкой), Paste as Block (Вставить как блок) и Paste to Original Coordinates (Вставить в те же координаты). По сути, коман- дой Copy with Base Point (Копировать с базовой точкой) под неизвестным нам именем определяется и размещается затем в буфере обмена (Clipboard) Wblock (Пблок). (WblQck — это блок, записанный в файл. Буква "W" от сло- ва Write, записать. То же значение и у буквы "П" в русском варианте.) Содержимое буфера обмена можно вставлять в другой чертеж и при этом возможны варианты: WBlock (Пблок) вставляется как блок или в виде со- ставляющих его разрозненных объектов. Если сказать другими словами, благодаря командам, связанным с буфером обмена, мы получили одну ячей- ку памяти, и в ней сохраняется информация на срок до конца текущей сес- сии работы с компьютером. Было бы удобно иметь вторую ячейку. Страте- гия этой команды или, точнее, набора команд точно такая же: записать Wblock (Пблок) и сохранить его, но не в буфере обмена, потому что эта ячейка уже занята, а в специальной папке, в качестве которой может быть использована уже созданная ранее папка C:\Macro\Mepuwork. Затем уже с помощью другой кнопки можно вставлять блок в нужный чертеж. Дадим будущему блоку смысловое имя, например TWB, от слов Temporary WBlock, временный блок. Это будет проделано ниже. Полный путь к имени файла блока: C:\Macro\Menuwoik\TWB.dwg Создайте теперь панель инструментов с именем 1V-TWB, имеющую три кнопки. Первой кнопке поручим создавать WBlock (Пблок). Третьей пору- чим его вставлять. А средняя кнопка будет выдавать координаты такой ха- рактерное ючки, как начало координат 0,0,0. Очень удобно иметь некую ючку. OIHOI iiic.iii.no которой содержимое родственных чертежей данного
206 Часть Hi. Работа с проектом под управлоши ли |/н.;*ы«7кн проекта располагается одинаково. Почему бы не взять за такую ючку 0,0,0, или для двухмерного чертежа 0,0. Пример: проект многоэтажного здания Если каждый этаж расположен в пространстве модели одинаково othochtcjhi но точки 0,0, очень удобно копировать общие для этажей детали с одного чер тежа на другой. Гораздо легче нажать на эту кнопку (или ввести 0,0 с клавиа туры), чем зуммировать чертеж в поисках подходящей базовой точки. 14.2. Создание WBlock Команда WBlock (Пблок) выдает диалоговое окно Write Block (Запись блока на диск), которое нельзя подавить поставленным перед ней знаком " - “ Потому что при вводе -WBlock (-Пблок) выводится диалоговое окно Crealt Drawing File (Создание файла чертежа). Те, кто работал в AutoCAD Ri-I, помнят это окно (рис. 14.1). Г-3 Create Drawing File ? Рис. 14.1. Диалоговое окно Create Drawing File Оно служило для задания имени и расположения файла, куда записи вался WBlock (Пблок). Все дальнейшие действия по выбору базовой точки и объектов производились в командной строке после нажатия кнопки Save (Сохранить). Разработчики AutoCAD оставили старую команду (-WBlock) наравне с новой (WBlock), и она позволит нам создать задуманную команду с дополнительной ячейкой памяти, потому что для этой команды есть сред ство, подавляющее вывод диалогового окна.
•ЫН i I I AlUb'pHIIIIHI H'HHlIUf fMMHlW ?ог (iJH.ikOMUMi ti ( iitiii iKiiioii-ciapon крмапдои Набором на клавиатуре команды -Wbloik выкппне диалоговое окно Create Drawing File (Создание файла чертежа). НпНдите нанку Menuwork и в поле File name (Имя файла) введите имя: TV\B Нажмите кнопку Save (Сохранить). Окно закроется, а в командной строке появляется следующее: WBlock Enter name of existing block or [= (block = output file)/* (whole drawing)] <define new drawing»: Имя имеющегося блока или [= (блок = файл вывода/* (весь рисунок)] <задать новый рисунок»: Здесь возможен выбор из 4-х вариантов: 1. Если WBIock (Пблок) создается из существующего в чертеже обычного блока, то следует ввести его имя и нажать <Enter>. 2. Если выше, в окне Create Drawing File (Создание файла чертежа), было лано имя файла, совпадающее с именем того блока, который предполага- ется записать как WBIock (Пблок), следует ввести знак "=" и нажать <Enter>. Если AutoCAD не обнаружит блок с именем, данным вами фай- лу, запись в командной строке повторится. 3. Если предполагается весь чертеж записать как WBIock (Пблок), то следу- ет ввести знак " * "«и нажать <Enter>. 4. Если WBIock (Пблок) создается из отдельных элементов (частей чертежа), то следует нажать <Enter>, ничего не вводя в командной строке. После этого последует запрос на базовую точку и выделение объектов для WBIock (Пблок). Именно этот четвертый вариант подходит для нашей цели. Остается одна проблема: как подавить вывод диалогового окна? Ведь знак " -" уже при- сутствует в имени команды. Здесь надо вернуться в раздел 3.4, чтобы вспом- нить, как подавить вывод диалогового окна в команде -WBIock (-Полок). Надо выставить системную переменную Filedia в 0. Проделайте это, а затем составьте таблицу (табл. 14.1) для записи операций с командой -WBIock (-Пблок). При Filedia = 0 первый запрос AutoCAD несколько отличается от рассмотренного выше с выводом диалогового окна. Таблица 14.1. Подготовка кода создания Wblock Шаг Действие Запрос AutoCAD 1 -WBIock 2 ПК или J Enter name of output file: Введите имя выходящего файла:
Часть Hi. Работа с проектом под управлением "бьк ipux кнопш 208 Таблица 14.1 (окончаниг Шаг Действие Запрос AutoCAD 3 C:\Macro\Menuwork\TWB.dwg 4 ПК или J Enter name of existing block or Введите имя существующего блока или...: 5 ПК или J (четвертый вариант) Specify insertion base point: Базовая точка: 6 ЛК показать базовую точку Select objects: Выберите объекты: 7 Показать объекты 8 ПК или J подтвердить, что выбор закончен Объекты исчезли с экрана. Можно про- контролировать, все ли было помечен > правильно или что-нибудь забыто 9 и (Undo полным словом предложит опции, что потребует дополни- тельных щелчков мыши, поэтому введите сокращенное U или Oops (Ой) Исчезнувшие объекты вновь появились на экране Примечание Команда Oops (Ой) работает несколько по-другому, чем команда Undo (Отм нить). Например, вы хотите скопировать ряд объектов, введя команду Сору (Копировать) с помощью кнопки, а она расположена рядом с кнопкой Егви» (Стереть). По ошибке нажали не на ту кнопку, и все объекты оказались стерт ми. Можно вернуться назад командой Undo (Отменить) и начать копирование сначала, повторив выбор объектов. А можно ввести команду Oops (Ой). коп> рая также вернет удаленные объекты назад. При повторном копировании вм> сто выбора объектов достаточно ввести опцию Previous (Предыдущий), кок> рая выделит весь ранее выбранный набор
I uni14 Ani.it'iifhtHivih Wmlhii типы .4 >9 Откройте <|>.ni'i < \M и ii»\Mi-iniwt>ik\ IWB dwg чюбы убедиться, что он со- держит все lii'iiti .HHII.I" и WBlock тПблок) ооъекты. Вернитесь в верный чертеж и повторите команду -WBlock (-Пблок). 11а шаге 4 AutoCAD выдал запрос, которого не было в первый раз: С:\Macro\Menuwork\TWB.dwg already exists, do you want to replace it? [Yes/No] <No>: Файл с этим именем уже существует, хотите ли вы заменить его? [Да/Нет | <Нет>. Да, мы хотим заменить его, т. е. обновить содержимое ячейки памяти. Точ- но так же как каждая вновь введенная команда Copybase (Бткопировать) за- менит в буфере обмена его содержимое. Поэтому в табл. 14.1 следует добавить еще два шага: 4а — Yes и 4в — ПК или J. Даже, если в папку Menuwork наш WBlock (Пблок) с именем TWB вставля- ется первый раз, когда до этого еще не существовало файла TWB, следует цвести в код шаги 4а и 4в. Теперь можно составить вторичную таблицу с привязкой шагов к символам кода (табл. 14.2). Таблица 14.2. Создание кода команды TWB Шаг 1 2 3 4 4a 4b 5 6 7 8 ~с1с -WBlock С:/Macro/ . Menuwork/TWB.dwg Yes t В табл. 14.2 видны два расхождения с табл. 14.1: I. В шаге 3 табл. 14.2 полное имя файла записано с применением прямой косой черты, а не обратной, как в табл. 14.1. В разделе 4.1 этот вопрос уже рассматривался 2. Шагом 8 не закончилась команда -WBlock (-Пблок). Клавиша <Enter> подтвердила только законченность выбора объектов. Далее команда -WBlock (Пблок) продолжает работать, убирая выбранные детали с экра- на и предоставляя пользователю время для анализа. Поэтому команду U не следует вводить в код. Надо ввести ее вручную, например, воспользо- вавшись контекстным меню на правой кнопке мыши. ('делайте первую кнопку на панели инструментов 1V-TWB. Имя кнопки If'n.pWI”' Ге код: СЛС W1.I 1 । Чл. o/MenuworkTWB.dwg;_Yes;;\\; |14-1|
210 Часть Hi. Работа с проектом под управлением "Ом цшх кнопок В поле Description (Описание) запишите комментарий: "Используется ш обратная, а прямая косая черта". Создайте рисунок на кнопке, например. Сразу же обустройте и вторую кнопку, имя которой 0,0,0. В ее коде по понятным причинам (а кто не помнит — загляните в раздел 6.3) отсутствую! знаки ЛсЛс: о,о,о [14-2] Рисунок для кнопки: ||Д(||. Экспериментируя с кнопкой TempWB, не забывайте после каждой пробной вставки блока удалять его и затем применять команду Purge (Очистить). По этому в макрос кнопки Purge block, задание на создание которой (зада ние 4.1) было дано в разделе 4.1, поставьте имя TWB. При создании еле дующей кнопки Insert TWB этот процесс будет учтен автоматически. Теперь можно вернуть системную переменную Filedia в значение 1. Перевит ее в 0 был нужен только на время создания команды TempWB. На pa6oiv макрокоманды с помощью кнопки состояние Filedia влияния не оказывай | Поэтому в поле Description (Описание) не лишним будет добавить и вторш! комментарий: Переменная Filedia на время отработки команды с клавиатуры переводитсп в 0. WBIock (Пблок) был записан в специальную папку Menuwork, находящуюсп] в директории Macro. Отсюда он будет извлечен следующей кнопкой, к со» данию которой мы приступим ниже. 14.3. Вставка WBIock Вставка WBIock (Пблок) принципиально ничем не отличается от уже отра I ботанной процедуры вставки внешних файлов. Если указать AutoCAD nyni I нахождения папки C:\Macro\Menuwork, где хранится файл TWB.dwg, в коло можно будет не показывать полный путь к имени файла. Достаточно дан! его имя TWB Вставку следует осуществлять с коэффициентом масштабиро I вания, равным I, и углом поворота, равным 0. Само собой разумеется, LCM (ПСК) в чертеже, откуда был записан WBIock и куда он затем вставляете!!, должна быть одинакова. Далее вставленный блок следует расчлениiи (команда Explode) и удалить из базы данных чертежа его имя TWB (команла Purge Block (Удали блок)), иначе при следующей вставке AutoCAD предто | жит уже существующее в базе данных чертежа определение блока с этим • именем, вместо ожидаемого нового. Таким образом, в этой команде нет вы бора — оставлять ли WBIock (Пблок) блоком или разрушить его на состав ные части. Этим наша команда будет отличаться от джентльменского наб<>|| а AutoCAD: Paste as Block (Вставить как блок) и Paste (Bcrauiiiь) it pi>6oiaii
I iHittA 14 Л in. . *1» .i*u /I imhih 10'11. KO K.lk I'Hbt* (И* I Hill lb) i ullipocdM ТОЧКИ IICUHikll Для второй, дополпи- icnbiioii ячейки iiiiMmii, и >10 неплохо. II (чнем c opi 41111.1111111 пути поддержки к папке C:\Macro\Meiniwork. Зайди- ie в диалоговое окно Options (Настройка), вкладку Files (Файлы) и добавьте папку Menuwork в путь доступа к файлам поддержки (Suppon File Search Path). Через диалоговое окно Customize (Адаптация) запишите код команды Insert TWB. Согласно предшествующим рассуждениям, а также с учетом опыта, полученного при выполнении задания 4.1 (Purge Block, [4-3|), код получится таким: лСлС_-1ПБегС;ТИВ;\;;;_Explode;_Last;_-Purge;_Block;TWB;_N [14-3] Команда Explode (Расчленить) с опцией Last (последний), набираемая на клавиатуре, требует двойного нажатия <Enter>. Эта же команда, записанная в цепочке макрокоманды, удовлетворяется одним символом " ; " после оп- ции Last (Последний). Дайте кнопке рисунок [.jgl и сохраните его в папке Icons. 14.4. "Изюминки" В обе команды TempWB и InsTW можно привнести "изюминки", украшаю- щие их. При создании кнопки TWB мы воспользовались командой -WBlock (-Пблок), доставшейся по наследству от AutoCAD R14. Выделенные для записи в WBlock (Пблок) элементы исчезали с экрана. По замыслу создателей это позволяло проконтролировать, все ли было выделено для WBlock. Но в последующих версиях от этого отказались, и элементы с экрана не ис- чезают, хотя появляется некоторое мелькание на экране. Можно сделать так и для нашей команды. Элементы исчезнут на мгновение, лав понять, что они записались в WBlock (Пблок), и вернутся на место. Без ручного ввода команды. Для этого надо сначала выделить объекты командой Select (Выбрать), придав им статус Previous (Предыдущий), а затем уже вве- сти команду -WBlock (-Пблок). При запросе этой команды показать элемен- ты, следует ввести Previous (Предыдущий). В этом случае в конец кода мож- но ввести U. и все будет работать. ''Cz'C_Select; \_-WBlock;C: /Macro/Menuwork/TWB. dwg;_Yes ; ;\_Pr; ;_U 114-4] И вот здесь просматривается еще одно дополнение. Можно сделать регулируемую задержку исчезновения элементов с экрана, если воспользоваться командой Delay (Задержка). Эта команда применялась при просмотре слайд-фильмов в главе 10. лСлС_Зе1есС;\_-WBlock;C: /Macro/Menuwork/TWB. dwg ,-_Yes ; ;\_Pr,- ;_Delay; 1000;_U | 14 5[
212 Часть Hi. Работа с проектом под упрм чик'М лм, <ры< ккоп,»- Макрокоманда теоретически должна работать, но объекты почему ю не шн । вращаются. Надо нажать <Enter>. А что если заменить и на Oops? ЛСЛС_Зе1есС;\_-WBlock;C:/Macro/Menuwork/TWB.dwg;_Yes;;\_Pr;;_Delay;1000 _Oops [14-6] Заработала команда! Цифра 1000 (миллисекунд) может быть заменена любом I (в пределах 32 7б7мс, около 33 с). В варианте [14-1] сначала надо указать базовую точку, а затем выбрать о(и екты. В вариантах [14-3] и [14-6] сначала выбираются объекты. Что лучин I В стандартной команде WBIock (Пблок) с выводом диалогового окна, можно I действовать по своему усмотрению. Здесь же надо выбрать что-нибудь один I Можно принять соломоново решение: в коде [14-3] или [14-6] записан, I другое имя блока. Например, twbi. И получится еще одна ячейка памяш I Затем, попрактиковавшись, можно оставить тот вариант, который нравини I больше. При стандартной вставке блока с использованием команды Insert (Вставин.) I и с выводом диалогового окна есть возможность расчленить блок уже при I вставке. Для этого достаточно поставить флажок в окошко Explode (Расчлс I нить) в левом нижнем углу диалогового окна Insert (Вставка блоков). При I вставке блока командой -Insert (-Вставить) из командной строки такой boi I । можности среди представленных здесь предложений не видно. В коде [14 | I применена отдельная команда Explode (Расчленить). Но если покопаться I системе помощи Help, можно обнаружить интересную возможность встав I I лять уже расчлененный блок, не прибегая к команде Explode (Расчленить) I I Для этого всего лишь надо поставить символ " * " перед именем блока. При I этом не требуется добавлять команду Purge (Очистить), потому что опредс I ление блока не входит в базу данных чертежа. I ^C^C_-Insert;*TWB;\;; [14-7] I Команда работает несколько по-другому. Она не требует теперь раздельны | коэффициентов масштабирования по осям, а предлагает один, одинаковы i для X, Y и Z Поэтому в [14-7] на один знак " ; " меньше, чем в [14-3]. Ft! ' и второе различие. В [14-3] мы видим динамическое отображение вставля< I мого блока на курсоре мыши. Вместе с курсором его можно перемещать u > I экрану в поисках точки вставки. В [14-7] видно только перекрестье курсора I Вставляемые элементы появятся на экране при нажатии ЛК в точке вставки I Какой способ выбрать для себя? Решить этот вопрос предоставим читателю 14.5. Запоминание вида При работе с большим чертежом бывает необходимо часто возврата i ы н I к одному и тому же месту чертежа, а затем опять переходить и рабочую <>п ласть. Для этого используется обычно команда Pan (Пан), рс Vcrial View 1
213 Iii.iii.i 14. XHbituwiniriii ‘ . linn II imhih (IHviewer (I.'i-hB < iieiui.iHidio согнанная для сохранения видов команда View (Вид) не являем я онер.ппипой, потому что она выводит диалоговое окно. Может быть весьма удобным комплект, состоящий из двух кнопок. При на- жатии на одну из них AutoCAD запоминает вид экрана, то его место, к ко- торому часто приходиться возвращаться. Далее, работая в другой области чт ртежа, при необходимости вернуться к первой, можно нажать вторую кнопку — и на экране мгновенно появится нужный вид. Коды на кнопках составляются на базе команды -View (-Вид). С дефисом впереди эта коман- да выводится без диалогового окна. Команда -View имеет ряд опций, из ко- торых нас будут интересовать три: Save (Сохранить), Restore (Восстановить) и UCS (ПСК) — пользовательская система координат. Последняя опция предоставляет выбор — сохранить или нет координатную систему, которая могла использоваться при работе в этом виде. Если опцию UCS (ПСК) не вводить, то сохранение координатной системы будет зависеть от предшест- вующих настроек. По умолчанию пользовательская система сохраняется вместе с видом. Дайте постоянное имя для запоминаемого вида, например, Myview, мой вид. Несложный код для сохранения вида: ,’C^C_-View;_Save;Myview;_Yes [14-8 | Последнее _Yes переопределит новый вид под тем же именем Myview. Код для восстановления вида: C^C_-View;_Restore;Myview |!4-9] Можно сделать пару таких ячеек, например, Myview-1 и Myview-2. Это по- шолит быстро переключаться с одного вида в другой и не перемещать чер- 1сж по экрану командой Pan (Пан).
Глава 15 Создание базового размерного стиля В главах 16 и 17 будут созданы три кнопки, при помощи которых можно] будет построить размеры: линейный, выноска со стрелкой и выноска с ki I ловкой типа Dot Blank (круглая пустотелая). Последняя применяется лмш выносок от объектов, выполненных линией, тонкой полилинией или сплайв новой линией, например, в электросхемах или разводках труб. Кроме toio.I в эту панель инструментов будет введена и выноска с прямоугольной удлн! ненной головой, не являющаяся размерным объектом по сути, но удобнаиЛ если надо сделать выноску от двух и более линейных паралельных объектом I Все размеры, выноски и их текст должны создаваться в специализирован! ных слоях, быть независимыми от масштаба и не менять режимы, имевшие место до взятия соответствующих команд. Этим наши кнопки будут оиш I чаться от стандартных. 15.1. Четыре способа простановки размеров AutoCAD предоставляет несколько способов простановки размеров. Pat! смотрим каждый из них. I. В пространстве модели. В диалоговом окне Dimension Style Manager (Диспетчер размерных сш ] лей), на вкладке Fit (Размещение) в поле Scale for Dimension Feature! (Масштаб размерных элементов) (рис. П4.3) установлен переключате и! Use overall scale of: (Глобальный масштаб:). Этот способ имеет варианты, приведенные ниже. • Объекты вычерчиваются в пространстве модели и в натуральную во <1 личину. При оформлении чертежа организуются разномасштабны* видовые экраны, в которых области чертежа выводятся в соотвен i вуюших масштабах. Здесь также возможны подварианты’ О заранее приготавливается серия различных размерных стилей, ка« дый из которых настроен на определенный маснп'аП Переход ini
Iллаа 15. Создание Оии ич। < .ж./>нию стиля 215 другой i iii'iii осуществляется щелчком ЛК по окошку Dim Style Control (f.i (мерные стили) из панели инструментов Dimension (Раз- меры) I’ окошке раскрывается список существующих размерных стилей, где надо выбрать нужный (В AutoCAD 2004 появилась спе- циальная инструментальная панель Styles (Стили), где этот раскры- вающийся список продублирован.); 0 заранее приготавливается всего один размерный стиль, например, для масштаба 1:1. Для работы с другими масштабами создается Style Overrides (Переопределенный стиль), для чего надо вызвать диалоговое окно Dimension Style Manager (Диспетчер размерных стилей), нажать кнопку Override (Переопределить) и на вкладке Fit (Размещение) изменить Dimscale (рис. П.4.3). Переопределенный стиль становится текущим. Эту операцию надо проделывать каж- дый раз при переходе на другой масштаб. В обоих приведенных выше подвариантах размерные стили отличают- ся друг от друга только системной переменной Dimscale, которая отве- чает за величину (высоту) размерного текста, головок стрелок, отсту- пов и выступов, но не за содержание размерного текста. • Объекты вычерчиваются в пространстве модели не в натуральную ве- личину, а в заданном масштабе, по аналогии с черчением на ватмане. Значение переменной Dimscale применяемых размерных стилей всегда одно и то же. Но, так как различные детали могут быть вычерчены в разных масштабах, размерные стили должны отличаться коэффици- ентом масштабирования. Если деталь вычерчена в масштабе 1:10 и ее реальная длина 100 мм, то длина детали на чертеже будет 10 мм. Auto- CAD измерит 10 мм, но выдаст размерный текст 100 мм. Эта же де- таль, вычерченная в масштабе 1:5, должна быть измерена в другом размерном стиле, но размерный текст получится таким же — 100 мм. Здесь также может быть создана либо серия размерных стилей, либо один базовый стиль и переопределенный стиль (Style Overrides). В по- следнем случае надо нажать кнопку Overtide (Переопределить), зайти на вкладку Primary Units (Основные единицы), где следует изменить Scale Factor (Масштаб) (рис. П4.4). В обоих случаях размерные стили отличаются друг от друга только системной переменной Dimlfac, которая отвечает за масштаб измере- ний, т. е. за содержание размерного текста. Но не за величину (высо- ту) текста, стрелок, отступов и выступов. Все варианты этого способа (объекты вычерчиваются в пространстве модели и в натуральную величину) при ручной работе, без какой-либо aiiioM.ini ыппи, |ребуют многих манипуляций мышью. Видимо поэто- му дам он ii'i'ieiiiHi работы чертежника фирма Autodesk предлагает и друнк iiiH<obi,i iipoeiaiiiniKit размеров.
216 Часть III. Работа с проектом под уиракльчиы! "i., >/ib/x>ut>ni>h 2. В пространстве модели через открытое окно видового экрана (.ikiiibiii.iii I Viewport). В диалоговом окне Dimension Style Manager (Диспетчер размерных сш I лей), на вкладке Fit (Размещение) в поле Scale for Dimension Feahiin I (Масштаб размерных элементов) (рис. П4.3) установлен переключат си. I Scale dimension to layout (paperspace) (Масштаб относительно листа). Если открыть окно экрана, находясь в пространстве бумаги (paperspacr) I AutoCAD сам рассчитает и установит системную переменную Dimscuh I в соответствии с масштабом этого видового экрана. Но работать в актин I ном видовом экране неудобно и небезопасно. Можно легко сбить мл I штаб или границы вида неосторожным движением мыши. Экран надо in I блокировать, т. е. связать его с рамкой чертежа. Это можно сделать чер >1 диалоговое окно Properties (Свойства). Рамку видового экрана надо вы т I лить, а в окне Properties (Свойства) Display locked (Показать блокироп.1 I ние) перевести в Yes. Это же можно сделать через контекстное мен 1 правой кнопки. 3. В пространстве листа при закрытых видовых экранах (viewports). Усы I новка переключателя в поле Scale for Dimension Features (Масштаб p.i i I мерных элементов) безразлична. При этом способе, если не используются ассоциативные размеры, образм I ривание происходит так же, как в варианте простановки размеров в про I странстве модели, но не в натуральную величину, а в*заданном масштабе. 4. Использование ассоциативных размеров. 15.2. Ассоциативные размеры Ассоциативные размеры можно применять как в пространстве модели, так i в пространстве листа, поэтому сведения об этом способе простановки pa i I меров выделены в отдельный раздел. В AutoCAD 2002 появилась новинка стало возможным создавать размеры! ассоциирующиеся с объектом, измерение которого производятся. При и 11 менении, например, удлинении объекта, изменяется и его размер Комашнн работает аналогично ассоциирующейся с границами штриховке. При изм( I нении конфигурации заштрихованного объекта, например, командой Strehli (Растянуть) или при помощи ручек (Grips), штриховка следует за измепни I шимися границами. За режимом штриховки следит системная переменнаи| Pickstyle. Мы уже встречались с этой системной переменной в разделе 4 I когда создавалась группа из разрозненных объектов. Рассмотрим ее бол 'I подробно. Переменная может иметь одно из 4-х значений: □ 0 — при этом отсутствует связь как между элементами в группе, так .. между штриховкой и ее границами;
I I'll I f.’< ( <•» I tIM III fl,) <M14<H<X<I I HIHII 1 I II<<HHUH< I< И l НН H. lu ll.kll МСлДУ IJICMCIIIilMH ii ipyiinc; il 2 — поянлясп и ciurn. только между штриховкой и ее границами; П 3 — появляется связь как между элементами в группе, так и между штри- ховкой и ее границами. В командах, выводящих символ Homerun, для системной переменной Pickstyle было заложено значение 1. Если вы предпочитаете штриховку, ассоциирую- щуюся с ее границами, и в то же время используете команду, включающую । руппирование объектов, поставьте в ее код значение 3. Поставить для пере- менной Pickstyle значение 3 можно также установкой флажка в окошке Associative Hatch (Ассоциативная штриховка), которое находится в диалоговом окне Options (Настройка) на вкладке Selection (Выбор). Чтобы снять ассоциативность штриховки ее границам, надо применить ко- манду Hatchedit (Редштрих) либо команду Properties (Свойства). А вот вер- нуть ее невозможно. А для размера это возможно. Чтобы вновь устанавливаемые размеры стали ассоциативными с измеряемыми объектами, надо поставить флажок в окошке Make new dimensions associative (Сделать новые размеры ассоциативными). Окошко находится в диалоговом окне Options (Настройка) на вкладке User Preferences (Пользовательские), пли, что то же, установить системную переменную Dimassoc в значение 2. )та системная переменная появилась в AutoCAD 2002, чтобы дать возможность создать ассоциативные с объектом размеры и имеет три варианта значений. Первые два, 0 и I, совпадают с существовавшей в предыдущих версиях систем- ной переменной Dimaso. При назначении 0 все составляющие вновь устанавли- ваемого размера — стрелки, линии, текст — выходят разблокированными. При назначении для Dimassoc значения 1 вновь устанавливаемые размеры выходят нормальными, ассоциативными для всех элементов размера. При установке пе- ременной Dimassoc в значение 2 появляется ассоциативность между размером и объектом, но тоже только для вновь проставляемых размеров. В AutoCAD 2002 есть команда, позволяющая обычный размер превратить в ассоциативный с объектом. Команда вызывается нажатием на пункт меню Reassociate Dimensions (Прикрепить) и находится в падающем меню Dimension (Размеры) в конце списка, пли с командной строки вводом Dimreassociate. Команда интересная. Предоставим читателю разобраться с пей самостоятельно. 11о работать с ассоциативными размерами не так просто, как кажется. Они крепко "прицепились" к объекту. Если понадобилось передвинуть объект, размер двигается следом. Даже если он создан в отдельном слое и этот слой •вморожен. При разморозке его вы увидите размер на новом месте. Если понадобилось развернуть объект на произвольный угол и при выборе объек- та для КОМ.Н1ПЫ Rotate (Повернуть) размер не выделялся, последний, вы- полненный н шрпмер, командой Dimlinear (Рзмлинейный), исказится и по- к.. |’<<<
218 Часть III. Работа с проектом под ynpaitiimiu. щ tpiiK кнои теряет смысл. Его надо удалять. "Оторвать" такой размер от объекта мо*н смещением его в сторону с последующим возвращением обратно. Наверти появилась уже мысль, как сделать такую команду, но не следует торопи нц Оказывается, компания Autodesk сделала эту команду, но спрятала ее ы| глубоко, что без дополнительных исследований системы помощи (Н<'|< команду не найти. Имя этой команды Dimdisassociate (Рзмоткрепить). I1 кнопку для нее разработчики не создали. Таким образом, нам досталось и* править эту оплошность и добавить в панель инструментов Dimension (1’<п меры) кнопку с кодом: ~C~C_Dimdisassociate [15—1] Особенно удобно пользоваться ассоциативными размерами в пространен! листа. Ассоциативность сохраняется, даже если измеряемые объекты расин ложены в пространстве модели. К этому надо привыкнуть. Если в простр.111 стве модели или в открытом видовом экране объект сдвинуть или растяну и то в пространстве листа размер автоматически передвинется следом, hi г зуммирование (Zoom) в открытом видовом экране изменить или простр.ш ство модели сдвинуть командой Pan (Пан), размер также потянется следов При этом может понадобиться команда Dimregen (Рзмреген), почему-то и имеющая своей кнопки. Эта оплошность также легко исправляется: ~C^C_Dimregen |15-2| Выноска здесь работает по-другому. При изменении положения объем < к которому "привязана" выноска, при зуммировании “или сдвижке простр.ш ства модели командой Pan (Пан), следом за объектом передвинется толь» головка выноски с ее последним сегментом. Это предопределяет, как пран! ло, перерисовку выноски. При выполнении размеров в пространстве листа нет необходимости в си дании семейства размерных стилей для разных масштабов. Всего один слч может быть создан для размеров. На тех видах (Viewports), где размеры I нужны, они и не показываются. При простановке размеров в простра.чт модели для этого надо замораживать соответствующие слои Следует изучить все способы простановки размеров как в пространстве м<( дели, так и в пространстве листа. Каждый имеет свои преимущества недостатки. Конкретная практика позволит выбрать преимущественны способ для своей работы. 15.3. Базовый стиль В этой и последующих двух главах мы научимся создавать размерные сны для каждого применяемого масштаба персонально. Это наиболее трудоемки для программирования случай и на его базе читатели, применяющие друин способы простановки размеров, смогут автоматизировать свою p.i6oiy.
l/мм IS C“,ijbitni /«> iM/wpui . ih 219 AiiioMdiii'iCi ми 111111111111 сшля можно выполнить различными способами. Наиболее ч.и ki {чм»мспдуемые — загрузка стиля из чертежа шаблона или прототипа Можно использовать для этого и центр управления (Design (Renter) и другие способы. Здесь мы рассмотрим один из них, в котором заданный размерный стиль создается в тот момент, когда чертежник нажимает кнопку вызова размера. Точно так же, как впервые нажатая кнопка Text [12-6] создает (екстовой стиль Ust, хотя до этого такой стиль в диалоговом окне не создавал- ся и с образца не загружался. В главе 8 мы научились включать масштабный коэффициент в имя размерного стиля. При помощи функции LISP (Getvar~"Userri") или аналогичной функции DIESEL мы можем изменить системную переменную Dimscale базового размерного стиля, чтобы сделать его пригодным для простановки в чертежах определенного масштаба. Первая задача, которую предстоит решить, это создание или ввод из внешнего источника базового размерного стиля, рассчитанного на масштаб 1:1. Создание размерного стиля означает установку заданных значений всех его системных переменных, а их около 60. Путем анализа можно сократить этот список, об этом говорилось в разделе 10.3. Список можно разместить на кнопке, записав его непосредственно в файл *.mns (в поле Macro associated with this button: (Макрос для данной кнопки) окна Customize (Адаптация) для этого недостаточно места), или с кнопки же запустить приготовленный в разделе 10.3 и в задании 10.1 файл Dim.scr [10-5]. Наберите команду Script (Пакет) и нажмите <Enter>. Запустите указанный Script-файл и засеките секундомером время его прохождения. В зависимости от скорости компью- тера это займет 1—2 с. В рабочем файле чертежа при этом образовался раз- мерный стиль Style overrides (Переопределенный стиль), имеющий имя те- кущего стиля, но установки, заданные файлом Dim.scr. Теперь надо решить две очередные задачи: превратить Style overrides (Переоп- ределенный стиль) в стиль с именем "Dim-", который впоследствии станет оазовым для создания стилей для разных масштабов, и уменьшить время пе- резаписи всех системных переменных базового стиля. Первая задача, если открыто диалоговое окно Dimension Style Manager (Диспетчер размерных сти- лей), решается просто: щелчок ПК на строчке Style overrides (Переопределен- ный стиль) вызовет контекстное меню, в котором есть опция Rename (Пере- именовать). Переименование с командной строки требует комментария. Command: -Dimstyle J При нажатии <Enter> автоматически выводится окно AutoCAD Text Window (Текстовое окно AutoCAD). Оно показывает список всех тех системных пе- ременных дочернего стиля Style overrides (Переопределенный стиль), кото- рые отличаются от соответствующих переменных стиля, бывшего текущим до запуш а файла Dim.scr. Здесь же предлагаются опции: [Save/> iBt с । fl7Tatus/Variables/Apply/?]<Restore>: (( охрами11 .||о11111ь/Статус/Перемепные/Применить/?)<Восстановить>
220 Часть III. Работа с проектом под упратьишп-м '»>н. /рых khoiii I Опция Save (Сохранить) позволяет дать имя размерному стилю Enter name for new dimension style or [?]: Введите имя для нового размерного стиля... Введите с клавиатуры Dim- и нажмите <Enter>. Теперь закройте окно nJ экране клавишей <F2> и повторите все операции, начиная с -Dimstyle. !!<»«• I вилось предупреждение: That name is already in use, redefine it? <No> Это имя уже используется Переопределить его? <Нет>. С подобным текстом мы уже сталкивались раньше. Поставьте здесь Yes I I ли имя опцией Save (Сохранить) назначается впервые, то введенный лл>1 без запроса ответ Yes ничего не испортит. Появиться сообщение: "Unknown command "Yes". Press Fl for help." Неизвестная команда "Да". Нажмите <F1> для вызова системы помощи. AutoCAD пустит вас дальше. Зато для второго и последующего вызовов toil дания размерного стиля ответ Yes сработает правильно Он переопредели стиль с тем же именем. Можно было бы приступить к созданию кода команды для вывода размер I ного стиля, но прежде надо подавить вывод окна AutoCAD Text Windoa (Текстовое окно AutoCAD). За его появление на экране отвечает системна^ переменная Menuecho. Ее значение по умолчанию равно 0, но если выс J вить 2, окно не выведется на экран. Причем это произойдет только в случае, если команду создания размерного стиля -Dimstyle запустить iipcl граммно, в нашем случае — с кнопки. При вводе вручную с клавиатуры u I реустановка Menuecho не дает желаемого результата. Таким образом, в цепочку макрокоманды следует заложить выражение ЬЫч позволяющее запомнить текущее состояние Menuecho. (Setq—Mecho.->(Getvar—"Menuecho")) Здесь Mecho — придуманное автором имя. Затем надо ввести значение переменной Menuecho, равное 2, а в конце ко J восстановить прежнее значение: (Setvarea" Menuecho"eaMecho) Таков классический ход действий, если не исследовать, что это за системп>4 переменная такая — Menuecho. И здесь надо просить пользователей вс]к и LT не пропустить эту глазу, несмотря на невозможность применения я п.о I LISP для облегченной версии.
I H 1Л.1 I ( <> <q.1fob I- • ‘»l UtltH 15.4. Ai if < \ D Г ext W -ndow Существуем hc< коиько команд, в результате работы которых на экран выво- шггся это окно, например, команда List (Список). Другая команда, интере- сующая нас в данный момент, это -Dimstyle (-Рзмстиль). Окно на экране не позволяет автоматизировать процесс вывода размеров. Как было сказано выше, окно можно подавить, установив для системной переменной Menuecho значение 2. Эта переменная при обычном режиме черчения имеет шачение 0. Ее задача — подавить в некоторых случаях вывод протокола действий пользователя в окно AutoCAD Text Window (Текстовое окно Auto- CAD), или наоборот, показать необходимую информацию при отладке программ. Обычно, если программист использует эту переменную, он затем возвращает ее в 0. Для этого есть специальный символ ЛР, при помощи ко- юрого варьируется значение переменной между 0 и 1. Но есть еще значения 2, 4 и 8, нужные для определенных режимов отладки программ. Значение Menuecho = I подавляет вывод имен команд, Menuecho = 2 подавляет за- просы системы, а сумма этих значений подавляет и то и другое При обыч- ном режиме работы в AutoCAD Menuecho = 3 даст самый короткий прото- кол действий пользователя в окне AutoCAD Text Window (Текстовое окно AutoCAD), а если такое значение выставить в макрокоманде, то, как и при шачении 2, подавит вывод окна. Но раз нормальное состояние переменной 0, то можно не усложнять команду запоминанием текущего состояния пе- ременной Menuecho функцией LISP setq, а просто назначить в начале кода шачение 2 или 3, а в конце кода 0. Таким образом, пользователи версии LT также получают доступ к программированию простановки размеров. Второй способ подавления окна представляет определенный интерес, пото- му что одновременно упрощает код команд, связанных с выводом размеров и вводит нас в интересную и, возможно, доселе незнакомую область AutoCAD. Раздел AutoCAD, отвечающий за размеры, является как бы государством в государстве. И в этом внутреннем государстве есть свое состояние, отлич- ное от общеизвестного, где пустая командная строка начинается со слова Command: (Команда:). Называется это состояние Dimensioning mode (Со- стояние образмеривания). Введите в командной строке Dim (Размер) и на- жмите <Enter>. Теперь она начинается с этого слова. Далее введите Ног (Горизонтальный) или Ver (Вертикальный), и появится приглашение на по- строение горизонтального или вертикального размера. Так работал AutoCAD п ранних версиях. Откройте систему помощи Help в разделе "DIM and DIMI Command". Из таблиц, представленных здесь, видно, что многие команды короче стандартных. Не нужна больше приставка "Dim". Команда Diml (Размер!) отличается от Dim (Размер) тем, что первая является одноразовой командой Носте исполнения размера AutoCAD автоматически переводит । ОС1ОЯППС и обычное Вторая оставляет AutoCAD в этом режиме, пока поль-
222 Часть III. Работа с проектом под , npanii*mw пи 1рых ют зователь вручную не выйдет в обычный режим вводом с клавиатуры komuiii ды Exit (Выход) или нажатием клавиши <Esc>. В первую очередь нас интересует, как работает команда, аналогична -Dimstyle (-Рзмстиль). Оказывается, здесь эта команда и плюс к ней oiiiuid Save (Сохранить), создающая имя для размерного стиля, заменяется вс. id одним словом Save (Сохранить) без дефиса впереди. И при этом не вып. дится окно AutoCAD Text Window (Текстовое окно AutoCAD)! Откроит файл Dim.scr [10-5]. Сделайте на всякий случай резервную копию (она и к тематически получает имя Copy of Dim.scr). Добавьте в конце списка си j темных переменных вместо последней, невидимой, <Enter>, такие строки dimzin.,0 Существующие две последние строки (рис. 10.9) ;Zero suppression dimij Новые две строки [15-3] SAVE.-DIM-.-YES J Надо тщательно убедиться, что не осталось невидимых <Enter> или npood лов. Курсор должен находиться под последней строкой. В противном случ« при запуске файла произойдет сбой, последняя команда повторится. Окои] чание файла показано на рис. 15.1. Сохраните файл. Теперь его запуск обеспечивает образование размерпгч! стиля с именем "Dim-", который становится базовым для создания семени] ва размерных стилей различных масштабов. » Рис. 15.1. Фрагмент файла Dim.scr. Переход в режим Dimensioning mode Если бы в предпоследней строке на рис. 15.1 вместо DIM1 стояло DIM i< после прохождения файла пришлось бы вручную выходить из еестояпш образмеривания (Dimensioning mode) вводом команды Exit (Выход) или пи
/;Uiu lh Со.» 0|ни ичм < now 223 житием KJi.iiiiпи и I м Чк» вводи гь: 1ЯМ (Размер) или DIM1 (Размер!), ависит от loio, чн» последует дальше. Если этот Script-файл будет началь- ным в цепочке команд и следующее звено цепочки удобнее выполнить в Dimensioning mode (Состоянии образмеривания), то надо ввести DIM (Размер). В противном случае — DIM1 (Размер!). Если в файл загружены несколько размерных стилей, но для конкретной работы необходим определенный стиль, не являющийся текущим в данный момент, должна быть применена опция Restore (Восстановить) команды Dimstyle (-Рзмстиль). Или, если AutoCAD находиться в состоянии образме- ривания (Dimensioning mode), то просто Restore (Восстановить). К сожале- нию, во всех случаях здесь выводится окно AutoCAD Text Window (Текстовое окно AutoCAD). Видимо, никуда не уйти от системной переменной Menuecho... Самое лучшее пособие по AutoCAD — это система помощи HELP. Иногда здесь можно найти неожиданные сведения. Например, команда Graphscr (Графэкр). Эта команда специально существует для работы со Script- файлами. Недаром у нее окончание "scr", упущенное в русском аналоге команды. A "Graph" — от слов "графический экран". Команда работает толь- ко внутри Script-файла и подавляет вывод текстового окна. Может работать в прозрачном режиме, если перед именем команды поставить апостроф. Есть и обратная ей команда: Textscr (Текстэкр). Введение команды в после- довательность Script вызовет текстовое окно. Напишите простой Script-файл: iRAPHSCRJ IMJ RESTOREJ STANDARDJ 115-4] Сохраните его под именем RestoreStandard.scr. Зайдите в AutoCAD и уста- новите текущим любой размерный стиль, кроме "Standard”. Если такого сти- ля в чертеже нет, выберите любой существующий. Соответственно, внесите изменения в Script-файл и его имя. Запустите Script и убедитесь, что теку- щим стал стиль "Standard". Выводы: При помощи Script-файла [15-3] в базе данных чертежа появился размерный стиль "Dim-", который становится базовым для создания семей- шва стилей разных масштабов. При помощи Script-файла [15-4] можно подавить вывод окна AutoCAD Text Window (Текстовое окно AutoCAD) и один из размерных стилей можно сде- л.тть текущим. ло важный момент для пользователя AutoCAD LT.
224 Часть III. Работа с проектом под упраилени^м ц" х киши < 15.5. Ускорение Выше был показан вариант создания размерного стиля при нажатии кили» J выполнения размера, [15-3]. При этом запускался созданный заранее iiin-iiil ний Script-файл Dim.scr, и его прохождение занимало время 1—2 с, что и | нормально для компьютерного черчения. Поэтому следует поискать пуна ускорения. Или принять классический вариант предварительной загруш! базового размерного стиля в чертеж. Но мы поставили задачу создана» (и пересоздавать) именные стили с нажатием кнопки выполнения разм( i м ничего не закладывая в базу данных чертежа заранее. Для решения этон iJ дачи надо найти способы ускорения образования базового размерного сим ля, полученного из внешнего файла. Мы рассматриваем сейчас внешнД файл, написанный на языке Script. Если бы внешний файл был написан ill LISP, то там есть способ ускорения прохождения рутины. Для этого сиск’Д ную переменную Cmdecho обычно выставляют в значение 0. К сожаленш» Cmdecho не оказывает влияния на скорость прохождения Script-файла, ill ускоряет процесс и рассмотренная выше системная переменная MenuechnJ И здесь опять поможет вездесущая Help. При исследовании раздела "Scii|fl в длинном списке ссылок, полученных во вкладке Search, можно найти i J кую строку: NOMUTT [AutoCAD Command Reference: ACR]... Оказывается, Nomutt — это системная переменная, которая подавляет при! глашения и сообщения в командной строке, оставляя только имена вы и <4 ваемых команд и опций, и работает, в частности, в Script-файлах. Для зни переменную надо выставлять в положение 1. А имя переменной произоипи от слов NO и MUTTering. Если перевести дословно, то "нет бормотании! Как точно сказано! Когда исполняется Script-файл Dim.scr, то, что мелькав при этом в командной строке, очень похоже на бормотание. Итак, в начало файла Dim.scr [15-3] надо ввести Nomutt^i, а в конце 1 Nomutt—OJ Теперь Script Dim.scr выглядит так, как показано на рис. 15.2 и 15.3. Сохраните этот файл, порядковый номер которого будет [15-5]. Теперь этот файл исполняется быстрей, и его уже можно вводить в мац*! команду создания размера. И все же есть некоторая некорректность по отношению к своему компькив ру. Мы его заставляем трудиться, перелопачивая все системные перемени» размерного стиля с каждой очередной простановкой размера. Можно i » лать так, чтобы базовый размерный стиль вводился только с первым вызошв команды, а затем, поскольку он уже есть в базе данных чертежа, прост н<*[ реопределялся бы. Для AutoCAD это не работа. А если вставить в чертеж внешний файл, в котором есть нужный размерны! стиль? Мы же вставляли голову символа Homerun. Так же можно встаиллц размер. А потом его удалять. Размерный стиль из этою uiiciiiiicro <|>.ih ।1
/ Л ШЛ / ГМ «<1«1МИ Ml CIHHit 22b iioiiaei u v».i «у данных нишею чсрюжа Осыпется сделать его текущим, но мы уже умеем но делить при помощи опции Restore (Восстановить), а пол- нившееся при ном окно AutoCAD Text Window (Текстовое окно AutoCAD) можно подави и. одним из двух способов: либо перестановкой системной переменной Menuecho в значение 3, либо запуском Script-файла, в который входит команда Graphscr (Графэкр) [15-4]. Г dim.scr - Notepad С. 'FIX' Flit Edit Format View 'Help NOI-.UTT 1 ST/LE Ust Romans.shx 0 0.65 0 DIMADEC 0 ;Angular decimal places DIMALT Off ;Alternate units selected DIMALTD 2 ; Al ternate unit decimal places DIMALTF 25.4000 ;Al ternate unit scale factor DIMALTRND O.OOOu ;Alternate units rounding value DIMALTTD 2 Рис. 15.2. Начало файла Dim.scr. Введена системная переменная Nomutt = 1 Рис. 15.3. Окончание файла Dim.scr. Системная переменная Nomutt возвращена в 0 11 гак, надо создать чертеж, в котором будет всего один размер. Откройте новый файл. Убедитесь, что в диалоговом окне Drawing units (Чер- к-жпые единицы) выставлено Decimal (Десятичные). Впрочем, так выходит по умоливший 1.|цус1итс Script-Файл Dim.scr [15-5]. Он создает размерный ( гиль "1)пп " и н'к< юной стиль "Ust" Выполните любой линейный размер, лучик* о| н>ч< ц (I 0 Учащие hi чертежа липшее Собственно, таковым явля-
226 Часть III. Работа с проектом под yni> ы / hi uhwj. кп< и. ется только размерный стиль "Standard". Он удаляется комапдоп Purge (Очи 1 стить). Одноименный текстовой стиль из файла не удаляется Сохрани id чертеж под именем Dim.dwg в папке Menuwork, приготовленной в paid, ле 13.2. Зайдите в тот учебный чертеж, где отрабатываются команды, cbmi.hi ные с размерами. Вручную командой -Insert (-Вставить) вставьте фаПч Dim.dwg в свой чертеж, в точку 0,0. Надо четыре раза нажать на <Entei . чтобы рисунок размера вошел в точку 0,0 с масштабными факторами ш осям X и Y, равными 1, и с углом поворота 0°. Затем удалите размер ком.ш дой Erase (Стереть) с опцией Last (Последний). Для этого требуется еще им раза нажать <Enter> Посмотрите, образовался ли размерный стиль "Dini I в чертеже. Если все корректно сделано, он должен образоваться. Повтори id операцию. Размер опять встает в точку 0,0 и удаляется затем командой Епг • (Стереть) с опцией Last (Последний). Таким образом, мы осуществи in такую же операцию, как и с запуском Script-файла Dim.scr. Результат окп I зался почти аналогичным, но во втором случае AutoCAD,не пришлось ncpi'4 лопачивать все системные переменные для создания заново уже cymci I вующего в чертеже размерного стиля. Разница между вариантами состши| в том, что в случае запуска Script-файла, текущими стали новый размерный стиль "Dim-" и новый текстовой стиль "Ust", а в случае вставки черте*! Dim.dwg, стили "Dim-" и "Ust" просто добавились в список размерных i текстовых стилей данного файла. Запишем код команды по обоим вариантам. ЛС~С_Script;Dim.scr [15-6] AC~C_-Insert;Dim.dwg;0,0;;;;Erase;Last; ; [15-7] Сравните по времени. Явно второй вариант более быстрый. Нельзя ли cid ускорить еще? А что, если на исходном файле Dim.dwg вообще убрать pa i1 мер из поля чертежа9 Главное, чтобы в его базе данных остался размерпьнч стиль. И в точку 0,0 теперь будет вставляться ...ничего. А раз так, то и уди! лять ничего не надо! Можно также убрать и расширение файла *.dwpl AutoCAD сам пороется в папках, включенных в список Support File Seanh Path (Путь доступа к файлам поддержки), и отыщет это имя. ~С~С_-Insert;Dim;ЛС [15-8] Если просто прервать вхождение блока клавишей <Esc> или в коде добашпА ~с, то результат будет аналогичным. База данных нашего чертежа успеет до полниться новым размерным и текстовым стилями, но блок не войдет в мер теж. А раз так, вернем в исходный файл Dim.dwg какой-нибудь размер, чтобш пустой чертеж не смущал и не спровоцировал на его удаление. Кроме размер ра, по полю чертежа можно написать теперь любой комментарий, который напомнит вам о процедуре вставки И заодно он будет написан текстовым стилем "Ust", который также войдет в базы данных рабочего чертежа. В лань нейшем мы будем работать именно с этим вариантом и развивать дальше ни код [15-8]. Альтернативным вариантом остается запуск Script-файла. В дан. нейшем тексте будут комментарии, касающиеся и этого вариант