isicad.ru :: портал САПР, PLM и ERP :: версия для печати

Статьи

19 июня 2019

Скрипты в AutoCAD. Самое недооцененное оружие

Александр Савилов

Александр Савилов

Александр Савилов – инженер-проектировщик автомобильных дорог, автор YouTube-канала AutoCAD imho.


В своей первой статье я раз 15 упомянул термин «сценарии» и ни разу не объяснил, что это такое, как они пишутся (разумеется, не в плане орфографии, а в плане содержания файла) и, главное, – для чего, собственно, нужны. Пришло время пролить свет на этот темный, неизведанный уголок AutoCAD.

Глава 1. Почему мимо скриптов прошли пользователи AutoCAD?
Глава 2. Почему мимо скриптов прошли программисты?
Глава 3. «У нас не было шансов…»
Глава 4. «Он дал скриптам вторую жизнь...»
Глава 5. Excel как среда программирования
Глава 6. Возможности и ограничения использования скриптов
Глава 7. Пять шагов от идеи до результата
Глава 8. «QuickStart», или минимизация действий для запуска скриптов
Глава 9. «Полный пакет скриптов»

Глава 1. Почему мимо скриптов прошли пользователи AutoCAD?

Соседство на ленте с такими кнопками, как «Загрузить приложение», «Редактор Visual Basic / Visual LISP» и «Запустить макрос VBA», определенно наталкивает рядового пользователя AutoCAD на мысль, что и «Выполнить сценарий» – это что-то из этой же области – программирования, макросов и прочего «волшебства». Думаю, я не сильно ошибусь, если предположу, что рядовой пользователь рассуждает примерно так:

«Программировать я не умею, изучать что-то новое мне некогда, на программистов вообще учатся годами, в общем, нам это чуждо, мы на это не пойдем»...

Скрипты в AutoCAD

Как и маленькую, но очень гордую кнопку «Извлечение данных», о которой я писал в прошлой статье, кнопку «Выполнить сценарий» разработчики AutoCAD оставили без иллюстрированной всплывающей подсказки, обучающего ролика в окне приветствия или интересных наглядных примеров в справке. В общем, сделали их совершенно неприметными для начинающих пользователей. Даже если вчитываться в справку, не особо-то и понятно, в чем смысл использования скриптов, не говоря уже о методах их создания. Все, что можно узнать из справки: «Сценарии – это текстовые ASCII–файлы, содержащие набор команд для выполнения AutoCAD». И нет даже намека на то, что написать эти наборы можно далеко не только набивая ручками команды в программе «Блокнот».

Даже если самый отважный пользователь и осмелится нажать кнопку «Выполнить сценарий» на ленте, не побоявшись, что у него «все исчезнет», «собьются настройки» и произойдут прочие необратимые процессы, то перед ним лишь откроется окно выбора файла с расширением *.scr.

«А где его взять? В какой папке они лежат? Наверное, нужно скачивать с бог весть каких забугорных сайтов? Быть может, это уже устаревшая команда? Скорее всего, какая-то очень специфическая функция, нужная только тем, кто ей пользуется, а если я ее не знаю, то мне она и не нужна...»

Именно так прошло мое первое знакомство со сценариями. Я почти уверен, что подобное происходило с 97% пользователей, нажавших эту подозрительную кнопку на панели «Приложения».

В следующий раз, пару лет спустя, я уже жал эту кнопку совершенно осознанно, понимая, для чего она нужна, обладая готовым .scr файлом. При этом я даже не представлял себе, какой широкий спектр возможностей для меня откроет эта кнопка, какой колоссальный объем работы в будущем мне удастся выполнить благодаря ей в считанные секунды.

Глава 2. Почему мимо скриптов прошли программисты?

Помимо непосредственных пользователей AutoCAD, есть еще сравнительно небольшая, но тем не менее значительная группа людей, чьей профессиональной деятельностью, а иногда и просто хобби, является написание разного рода приложений для AutoCAD.

К таким приложениям я отношу простенькие приложения на LISP, свободно распространяемые в сети, более сложные модули на .NET, также бесплатно скачиваемые приложения из магазина Autodesk. Кроме того, это и специализированные профессиональные пакеты, значительно расширяющие базовый функционал программы и приобретаемые уже за вполне осязаемые деньги. Из всего этого бесчисленного множества приложений, живущих в мировой паутине, вы не найдете ни одного скрипта! И на это есть ряд объективных причин.

Во-первых, не существует как такового языка программирования для написания сценария. Хоть я однажды и использовал выражение «на языке команд AutoCAD», но в классическом понимании «языка» так говорить некорректно. Это просто совокупность команд AutoCAD, имеющая мало общего с языками программирования, их синтаксисом и правилами написания кода.

Во-вторых, каждый из языков программирования, поддерживаемых AutoCAD, имеет гораздо больший спектр возможностей, нежели скрипты, дает возможность управлять выполнением кода, создавать диалоговые окна для ввода данных или управления выполнением программы, позволяет обходить возможные ошибки и т. д. Помимо этого, модули «упаковываются» в установочные файлы, а после установки запускаются с ленты, что очень и очень удобно.

Добавим сюда ряд ограничений возможностей скриптов (об этом ниже) и приходим к неутешительному, но вполне закономерному выводу – программистам скрипты просто не интересны, так как они не имеют никаких конкурентных преимуществ перед любым из языков программирования как с точки зрения функциональных возможностей, так и в плане удобства использования готового продукта.

Но то программисты, это отдельная категория! С простыми же пользователями ситуация иная…

Глава 3. «У нас не было шансов…»

Читал ли я Дэна Эбботта? Таким вопросом меня поставил в тупик комментарий под одним из моих выпусков. В ответ на мой вопрос «А, собственно, кто это, и почему я мог его читать?» мне охарактеризовали его как автора «Библии для автокадчиков».

Ну что ж, книги так книги...

Скрипты в AutoCAD

Первым текстовым материалом по автоматизации работы в AutoCAD для меня являлся замечательный труд нашего соотечественника:

Владимир Свет, «AutoCAD. Язык макрокоманд и создание кнопок».

Выпущенная в далеком 2004 году книга и по сей день является во многом актуальной и должна стать настольной для каждого начинающего пользователя AutoCAD.

Ах да, а как же справка AutoCAD? Ведь это первое, что читает пользователь AutoCAD в любой непонятной ситуации. На мой взгляд, оба эти материала стоит рассматривать как единое целое, а вот почему я так считаю – читайте в примечании.

В книге приведены весьма спорные примеры использования скриптов: слайд–фильм, вывод переменных в строку состояния и настройка размерного стиля – всё то, что мало чем может помочь в работе проектировщика или хоть как-то ее облегчить. С высоты прожитых со сценариями лет могу ответственно заявить – это совершенно не те задачи, которые можно выполнять скриптами, это, скорее, какие-то крайности, ответвления и нетрадиционные способы их использования (использовать планшет в качестве разделочной доски, конечно, можно, но… думаю, Вы поняли).

Скрипты в AutoCAD

Пробежавшись по заповедям «библии» – «AutoCAD. Секреты, которые должен знать каждый пользователь», я нашел близкую мне тему сценариев (script–ов) в AutoCAD. Тут материал уже куда более разнообразен, интересен и, вероятно, полезен, но, ознакомившись с ним, я поймал себя на той же мысли, что и после знакомства с ранее озвученным источником:

«Интересно, вероятно, полезно, но пока не все понятно, изучу позже, когда появится свободное время».

Постойте, господа! В. Света я читал, когда скрипты были мне совершенно чужды, и, естественно, я прошел мимо них. Но почему же сейчас, когда я съел не одну собаку в написании скриптов и работе с ними, я опять прохожу мимо, откладывая в долгий ящик Пандоры информацию из книги? Может, дело не во мне (подразумеваю при этом всех читателей)? Может, дело в книгах – подаче материала, примерах, методах и приемах, описанных в этих главах?

Таки да. Как человек, открывший для себя сценарии с нуля и вырастивший из этого инструмента целый арсенал мощных средств для борьбы с рутинной работой в AutoCAD, возьму на себя смелость раскритиковать две эти, бесспорно, замечательные книги в части повествования о скриптах.

Главная идея, раскрывающая огромный потенциал этого инструмента, отсутствует и у того и у другого автора. Оба они приводят примеры сценариев, решающих одну конкретную задачу с постоянным результатом. То есть, в их интерпретации, скрипты – это заготовленные scr-файлы, содержимое каждого из которых неизменно и который выполняет строго определенный набор команд для реализации конкретной задачи. В этом случае спектр решаемых задач чрезвычайно сжимается, при этом их можно легко выполнить и другими, более тривиальными способами, например настройкой шаблона или макросами команд.

Таким образом, ни справка, ни признанные пользователями AutoCAD труды авторов не оставили шансов скриптам стать популярными среди пользователей, раскрыть свой потенциал и занять заслуженное место среди штатных средств автоматизации работы в AutoCAD.

Глава 4. «Он дал скриптам вторую жизнь...»

Так все же что позволило скриптам не превратиться в рудимент и не стать пятым колесом автоматизации работы в AutoCAD?

Идея, многократно расширяющая возможности скриптов, проста, как все гениальное:

Скрипты в AutoCAD

Таким образом, каждый запускаемый сценарий, выполняющий определенную задачу, является индивидуальным для каждого чертежа. То есть текст сценария – это только результат обработки конкретных исходных данных, а *.scr-файл – лишь промежуточное звено, связывающее программу, в которой пишется сценарий, с AutoCAD.

Думаю, каждый из вас уже догадался, что в очередной раз просто незаменимым инструментом для обработки исходных данных является программа Excel.

Скрипты в AutoCAD

В тех нередких случаях, когда имеющийся у нас некоторый массив данных нужно преобразовать в графические объекты, будь то извлеченные данные из чертежа, точки съемки с тахеометра, координаты кадастрового участка, результаты вычислений и т. д., нам нужно просто обработать эти данные посредством формул Excel, получив сценарий работы команд AutoCAD в текстовом виде.

Таким образом, написав один раз в Excel формулы, формирующие текст сценария с использованием столбца(ов) исходных данных для конкретного чертежа, мы получаем шаблон, генерирующий готовый сценарий. В него необходимо только помещать новые данные и пользоваться им снова и снова. Как я и писал выше, при такой схеме работы scr-файл является всего лишь связующим звеном между Excel и AutoCAD.

При должном уровне знания Excel (а инженер просто обязан знать его на хорошем уровне) можно составить около десятка табличек, выполняющих типовые, универсальные задачи, впоследствии комбинируя их и усложняя под узкоспециализированные задачи.

Если у вас в голове еще не сложилась расписанная выше логическая цепочка, смею предположить, что в ней пока отсутствует одно не самое очевидное звено, соединяющее два объекта совершенно разных типов: ячейку электронной таблицы Excel и текст любого текстового документа ASCII (будь то txt-файлы, scr и любые другие подобного типа). Преобразуется одно в другое посредством до боли родного «копипаста».

Правила преобразования значений ячеек в текст весьма просты:

  1. При вставке в текстовый документ значения ячеек смежных столбцов скопированного диапазона разделяются табуляциями.
  2. Строки ячеек скопированного диапазона отделяются новым абзацем.
Скрипты в AutoCAD

Таким образом, вставкой скопированного из Excel диапазона в текстовый документ мы получаем обычный TSV документ (англ. tab separated values — значения, разделенные горизонтальной табуляцией).

В контексте написания сценария, конечно, можно использовать «межъячеечную» табуляцию как оператор, например, для перехода от координаты X к Y. Но всё же такой способ — не самый удобный и простой для написания сценария. Я придерживаюсь концепции написания текста сценария, когда текст одной итерации сценария полностью формируется в одной ячейке, посредством сцепки текста команд и подкоманд с ячейками, содержащими необходимые значения (исходные данные). Так гораздо проще отследить возникающие ошибки и отлаживать сценарий.

Глава 5. Excel как среда программирования

Не надо быть семи пядей во лбу, чтобы прикинуть, что выполнить какие-то действия напрямую в AutoCAD при помощи клавиатуры, мыши и интерфейса программы гораздо проще, чем сначала записать все эти действия в блокнот, ни разу не ошибившись, а потом запустить выполнение этих действий. Но не будем спешить с выводами…

Если вы сисадмин–хакер–программист из голливудских фильмов, то вы без труда напишете любой код на любом языке в программе «Блокнот», и этот код будет безошибочно работать. Во всех остальных случаях он пишется в специальных программах, называемых средой программирования, созданных для удобного, быстрого написания кода с минимальным количеством ошибок. Например, в AutoCAD интегрированы среды редактора Visual Basic for application (VBA) и Visual LISP. Результатом написания макроса в этих редакторах является текстовый документ, который гипотетически можно написать и в блокноте, но вот времени и сил это займет в разы больше.

Специального редактора для написания сценариев не существует, равно как не существует и специального языка. Текст сценария – это просто последовательность команд, подкоманд и значений для них, которые мы вводим с клавиатуры, работая в AutoCAD.

Называть Excel средой программирования скриптов, конечно же, некорректно. Тут нет ни подсветки функций, ни выпадающего списка функций из библиотек, ни блоков готового кода, ни проверки ошибок – в общем, ничего, что связывало бы с Excel с редакторами кода. Тем не менее в Excel есть масса других функций, которые позволяют легким движением руки писать сотни строк сценария: автозаполнение, сцепка ячеек, подстановка и масса других формул для обработки значений исходных данных.

Добавим сюда всю мощь встроенного в Excel функционала VBA и в довесок – возможность связывать значения ячеек с другими Excel-таблицами, например с файлами извлечения данных. И вот уже идея работать в AutoCAD посредством записанного в блокнот перечня команд не кажется такой бредовой.

Глава 6. Возможности и ограничения использования скриптов

Дабы не перечислять всё, что может или не может сценарий, давайте просто запомним такую простую истину:
Скрипты в AutoCAD

Это немалый набор операций, но и ограничений также хватает. Например, без использования мыши мы не сможем изменять параметры динамических блоков, нажимать кнопки на палитрах или вытаскивать с них блоки, редактировать размеры и т. д.

Помимо этого, нужно понимать, что нельзя остановить работу скрипта для ввода данных с последующим его продолжением, как, например, макрос операций. Сценарий можно только запускать, останавливать и перезапускать.

Также нужно отдавать себе отчет в том, что, в зависимости от сложности задачи, на написание сценария может уйти гораздо больше времени, чем на ручное ее выполнение. Способ получения исходных данных может быть достаточно трудоемким – например, если нужную информацию невозможно получить извлечением данных или другим автоматизированным способом. Только при определенном опыте можно найти тонкую грань, когда следует «уходить в автоматизацию», или подключать «самую быструю руку на Диком Западе». Но при этом чем больше будет наработок в виде готовых сценариев и опыта в их написании, тем ближе эта грань будет находиться к автоматизации, замещая ресурсозатратный ручной труд. К выбору способа решения задачи всегда нужно подходить с холодной головой и горячим кофе.

Глава 7. Пять шагов от идеи до результата

Если концепция использования сценариев ясна и есть конкретная трудоемкая задача, которую нужно срочно решить, ну или просто хочется получить новые ощущения при работе в AutoCAD, – дело за малым:
  1. Открываем Excel-документ, сохраняем его с расширением *.xlsm (так сказать, «на вырост»). Создаем заголовки столбцов для исходных данных, а в конце помещаем заголовок с заветным названием «Сценарий». Далее наполняем столбцы исходными данными одним из привычных способов:
    • копипастом из другого документа, если этот документ является временным;
    • ссылками на другую Excel-таблицу, если ее название и расположение постоянно, а содержимое изменяется (например, это файл извлечения данных).
    Впоследствии между столбцами исходных данных и столбцом сценария могут появиться промежуточные столбцы, в которых будут выполняться необходимые преобразования (например замена точек на запятые или преобразование градусов в радианы и т. д.). Сценарии бывают достаточно сложными, и число вспомогательных столбцов может достигать десятка.
    Скрипты в AutoCAD

  2. Формируем сценарий. Обычно этот процесс выглядит следующим образом: заходим в AutoCAD, начинаем пошагово выполнять команду, которую нам нужно выполнить многократно при помощи сценария. Фиксируем каждое свое действие на конверте от шаурмы*: полное наименование команды (псевдонимы не подойдут), каждое нажатие клавиш Space, Enter или Tab, подкоманды и ввод значений.

    *(использование листа бумаги не гарантирует работоспособность скрипта – прим. авт.)

  3. Далее при помощи команды «Сцепить» или символа «&» собираем записанное на бумагу в единую формулу, объединяющую текст команды и ячейки с исходными данными. Автозаполнением растягиваем получившуюся формулу на число строк, равное числу строк исходных данных. Тут можно немного усложнить формулу таким образом, чтобы она возвращала пустое значение, если напротив нее нет исходных данных, и растянуть на заведомо большее число строк (тут уже на что хватит вашей фантазии и знаний Excel).
    Скрипты в AutoCAD

  4. Создаем файл скрипта, для этого открываем новый текстовый документ, копируем в него столбец с ячейками сценария, сохраняем его с произвольным названием и, самое главное, – прописываем расширение файла scr. Забегая далеко вперед, скажу, что файл этот будет всего один, поэтому название и место его хранения желательно подобрать сразу с умом, где–нибудь поближе к файлам извлечений – в соседней папке, например.
    Скрипты в AutoCAD

  5. Запускаем сценарий, для чего возвращаемся в AutoCAD, идем к той кнопке, с которой начиналась статья, и уже с полным пониманием дела жмем ее. Указав только что созданный scr-файл, вспотевшим от волнения пальцем жмем кнопку «ОК» и…
И тут нас ждут два равновозможных варианта развития событий:
  1. сценарий отрабатывает до конца, и вы радуетесь полученному результату;
  2. сценарий спотыкается, и наступает неизбежный процесс, именуемый «отладка».
Во втором случае клавиша «F2» станет вашим лучшим другом, так как журнал выполняемых команд наглядно покажет процесс выполнения сценария и, главное, тот момент, где он «свернул не туда».
Скрипты в AutoCAD

Да, это не так просто и удобно, как установить модуль из магазина приложений. Но все же только представьте на секунду – это ваш собственный сценарий, ваше детище, выполняющее именно вашу задачу, именно так, как вы этого хотите. Вы сами можете отлаживать, исправлять ошибки, настраивать под себя и адаптировать его под свои нужды, не обращаясь ни к кому за помощью. Это очень приятные ощущения, поверьте!

Предвосхищая нападки со стороны LISPописцев, в сотый раз скажу – «Да, AutoLISP (как и VBA, .NET, java script) гораздо более функциональны и могут то, что не могут сценарии». Однако есть одно большое «но»!

Еще в детстве я услышал шутку, в которой доля шутки очень мала, и звучит она так:

«Чем сложнее задача – тем проще ее не решать».

В контексте автоматизации работы в AutoCAD ее смысл интерпретировать достаточно легко – какие бы возможности ни давал AutoLISP (и другие языки), если для его изучения нужно время и немалые усилия, то изучать его будут далеко не все!

Скрипты в AutoCAD

Таким образом, если мы ставим для себя целью не выяснить «чей функционал шире», а все же сделать мир немного лучше путем высвобождения рабочего времени инженера, облегчая его труд автоматизацией работы, то нам нужно нащупать тонкую грань между «круто, нужно взять на вооружение» и «ничего не понял, лучше буду делать по старинке». На мой взгляд, скрипты куда ближе к первой стороне и являются простым, но очень полезным инструментом, используемым в том числе не только для решения прикладных задач, но и в качестве способа заинтересовать пользователей AutoCAD в изучении каких-то новых методов решения трудоемких задач.

Глава 8. «QuickStart», или минимизация действий для запуска скриптов

Когда эмоции восторга при выполнении скриптов перестанут отвлекать коллег от работы, сотни выполняемых в минуту операций – удивлять, а папка «Сценарии» на вашем Google Диске изрядно пополнится, вам захочется чего-то более сильного, что заставит вновь ощутить эйфорию от происходящего на мониторе. Да-да, это зависимость, и она работает именно так.

Что ж, мне как бывалому дилеру скриптов, есть что вам предложить.

Скрипты в AutoCAD

Пусть при помощи сценариев для ряда задач мы и избавились от тысяч кликов и нажатий клавиш, но высвободившегося времени нам все равно недостаточно. Поэтому с самим запуском сценария, занимающим «чудовищных» 20 секунд, нужно что-то радикально решать!

Запускать сценарий выбором scr-файла через окно выбора, да еще и открываемого через активацию вкладки «Управление» и поиском кнопки «Выполнить сценарий», – просто непозволительная роскошь. Запускать сценарий затягиванием scr-файла в окно AutoCAD также удовольствие сомнительное… Включаем логику и фантазию!

Если scr-файлы индивидуальны (их содержимое постоянно меняется), то нет никакого смысла хранить старые версии – следовательно, при создании нового файла сценария можно подменять старый, даже если это сценарии из разных Excel–шаблонов. Таким образом, мы получаем универсальный, регулярно обновляемый scr-файл с постоянным именем и расположением. Думаю, вы уже догадались, куда я клоню...

Подглядываем в командной строке, какая команда запускается при нажатии кнопки «Выполнить сценарий» на ленте, через пробел присоединяем к ней путь к файлу скрипта, и всё – можно вешать готовый макрос команды на красивую кнопочку на панели быстрого доступа!

Когда вы несколько раз обожжетесь на том, что забыли выключить привязку перед запуском сценария, вследствие чего близкорасположенные вершины создаваемых сценарием примитивов слились в страстном поцелуе, то макрос вышеозвученной кнопки обзаведется предусмотрительной припиской «osmode 0» перед командой ПАКЕТ, а в конце макроса значение этой переменной примет наиболее популярное для вас сочетание привязок. У вас получится что-то вроде:

^C^Cosmode 0 ПАКЕТ "D:/Google Диск/AutoCAD/СЦЕНАРИИ/SCRIPT.scr";osmode 6527

Таким образом, всего в один заветный клик можно запускать свежевыжатый из Excel-шаблона scr-файл сценария!

И вот вроде уже и сценарии запускаются одной кнопкой, и открываются Excel-ки этих сценариев с палитры, но все равно нет того желанного ощущения, что работа полностью автоматизирована…

Идем на крайние меры: если нет вообще никакого понятия, что такое VBA, – смотрим на YouTube несколько обучающих видео по данному вопросу. Через полчаса с «онлайн-дипломом программиста» гуглим вопрос «Экспорт данных из Excel в txt». Копируем готовый макрос в новый модуль файла сценария и вешаем его на красивую кнопочку (у меня это зеленая иконка scr-файла). Немного поднастроив макрос, заставив его экспортировать данные в scr-файл с названием и расположением, прописанным в макросе на запуск сценария, а также брать только те ячейки, в которых есть сценарий, – получаем вполне достойную автоматизацию работы в AutoCAD! Также не будет лишним добавить макрос на очистку таблицы от старых исходных данных, что хоть и немного, но сэкономит ваше время.

Скрипты в AutoCAD

Глава 9. «Полный пакет скриптов»

Как я уже писал ранее, скрипты могут быть универсальными или специализированными, созданными под конкретную задачу. В период моей проектной деятельности по одному из проектов мне довелось оформлять несколько сотен чертежей поперечных профилей, генерируемых САПР. В частности, доводить до требований ГОСТ по оформлению и производить некоторые расчеты. Естественно, вручную такой объем просто невыполним. После некоторого периода работы над проектом мной было написано 4 специализированных сценария, в определенной последовательности выполняющих ряд операций над поперечниками. И когда вдруг поступали замечания заказчика, корректировка нескольких сот чертежей не вызывала у меня ни ноты расстройства. Наоборот, я получал удовольствие от того, как играючи я решаю невыполнимую для неопытного пользователя AutoCAD задачу.

Но таких проектов было не так уж и много. Куда чаще приходится запускать универсальные сценарии, также в немалой степени облегчающие работу.

  • Инъецирование атрибутов в блоки

    Первым практическим применением скриптов в моей производственной деятельности было внедрение атрибутов в блоки дорожных знаков. Сценарий открывал блок каждого в редакторе, вставлял атрибуты из буфера обмена, закрывал редактор и обновлял атрибуты в только что отредактированном блоке. Учитывая, что блоков было более двухсот, а процесс открытия и закрытия редактора блоков не самый быстрый, – сценарий выполнялся около пяти минут, за которые я успел налить и выпить кружку чая. Наблюдать, как компьютер самостоятельно выполняет работу, которую вручную пришлось бы делать часами, попивая при этом любимый напиток, – бесценно.

    Скрипты в AutoCAD

  • Вставка блоков

    Достаточно популярная задача: «Вставить блок в известные координаты».

    Элементарный пример: нужно было достроить поверхность на топографическом плане, где не хватало изыскательской съемки. Пару часов с отражателем в поле, дорога домой, экспорт данных – и вот он, заветный dxe-файл с точками из тахеометра в моих руках. Легким движением руки извлекаем данные о координатах точек в модели, вносим эти данные в файл сценария, в качестве атрибута отметки используем координату Z. Жмем волшебную кнопку, и вместо точек в модели красуются блоки с отметками.

    Конечно, стоит приложить немного фантазии и знаний Excel, чтобы универсализировать таблицу сценария под блоки, содержащие разное число и типы атрибутов (одно- или многострочные), но результат будет радовать вас годами.

    Этим же файлом сценария я полностью освободил геодезиста от камеральных работ по оформлению исполнительных съемок по устройству слоев дорожной одежды, в качестве одного из атрибутов используя отметку передаваемых мне точек съемки, а в качестве второго – вычисленную в этой координате проектную отметку. Вы не поверите, но вся дорога была построена строго в допусках .

    Скрипты в AutoCAD

    По аналогии с блоками в модель можно вставлять и однострочный, и многострочный текст. Применение этого сценария не так очевидно, но, поверьте, пользовался я им неоднократно.
  • Создание слоев

    Сценарий из серии «Лень – двигатель прогресса». Мне не очень нравится, как в AutoCAD работает окно «Слои». Я написал простенький сценарий с командой «Слой» с возможностью добавления префиксов/суффиксов в названии, указания цвета, толщины линий, «печатаемости» и т. д. Частенько перед началом работы в новом чертеже накидываю в таблицу нужные названия слоев с нужными настройками, пара кликов – и можно уже начинать непосредственно черчение, не отвлекаясь на настройки слоев.

    Скрипты в AutoCAD

  • Построение полилиний по координатам

    Куда более прагматичный сценарий. «Передали координаты оси в скане…». Отсканировать и распознать – еще полбеды, но вот проверить соответствие координат линии на плане или сравнить фактическое положение оси с проектным – тоска берет, как подумаешь, что придется забивать тысячи этих цифр вручную. Простейший сценарий на построение полилинии по координатам с легкостью поднимет вам настроение, если такая задача вдруг постучится к вам в офис.

    Скрипты в AutoCAD

  • Переименование листов/блоков/слоев

    Если в ваши опытные натруженные руки попал чужой чертеж с названиями именованных объектов, с которыми вы в корне не согласны, а переименовывать вручную каждый объект ну очень лень, – на помощь придет сценарий. Команда «НОВОЕИМЯ» и связка «РЛИСТ П» помогут быстро настроить все так, как вам удобно, – добавить или убрать префиксы, сократить длинные названия или пронумеровать в нужном порядке. Получить список слоев и блоков можно без особых усилий при помощи извлечения данных. С названием листов в файле чуть сложней, но если, опять же, применить смекалку, то можно распотрошить dsd–файл настройки публикации и взять из него только названия листов. Но я думаю, для получения каждого из этих списков в интернете уже годами пылятся соответствующие LISP-ы.

    Скрипты в AutoCAD

  • Перенастройка устройства вывода на всех листах

    В продолжение темы адаптации чужих чертежей: вам пришел чертеж, листы в котором настроены на отсутствующее у вас устройство (физический принтер). Листов уйма, перенастраивать вручную – не вариант. Внимательный пользователь заметит, что при запуске печати в «безоконном» режиме один из запросов – «имя устройства вывода»! Все, решить вопрос – дело техники: получаем список листов в файле, пишем команду "-печать", сцепляем имя нужного листа с парой имитаций нажатия Enter (\u+000a) и названием нужного устройства ввода. Делов-то...

    Скрипты в AutoCAD

  • Печать листов в pdf–файлы с предустановленным названием

    Если вам нужно получить отдельные PDF-листы из файла, при этом для этих файлов есть определенный список названий, не совпадающий с названиями вкладок листов, то существует простой способ интегрировать этот список названий в процесс печати листов. Достаточно заменить четвертый Enter при выполнении команды "-печать" на путь и название нужного PDF-файла в сценарии на печать. Таким образом, вы избавитесь от необходимости тратить кучу времени на переименование файла, если такая необходимость существует.

  • Удаление листов

    Случается и такая ситуация, когда вам нужна только информация в модели, например, для внешней ссылки, а пара сотен листов в DWG-файле, содержащих разного рода объекты, только служат нехилым балластом. Примитивный сценарий на базе связки «РЛИСТ У» с легкостью решит эту проблему. Можно поднастроить сценарий так, что можно будет указывать, какой лист нужно удалять, а какой – нет.

  • Разбивка на листы

    Продемонстрированная на моем канале работа этого сценария вызвала наибольший интерес зрителей, так как проблема разбивки на листы довольно остра среди специалистов, решающих сложные производственные задачи в AutoCAD. Не могу назвать этот сценарий простым. Выполняемые им действия по разбивке на листы достаточно неочевидны, кроме того, еще и чисто технически написание такого сценария достаточно сложно, учитывая, что в качестве исходных данных принимаются положения рамок листов, их масштаб и поворот. Помимо этого, в зависимости от условий, блоки рамок можно как вытаскивать в пространство листа, так и оставлять в модели. Тем не менее, шаг за шагом, после долгих поисков методов решения и обхода ошибок, сценарий был написан, прекрасно себя зарекомендовал и применяется не только у меня, но и у ряда пользователей, обратившихся ко мне за помощью в этом вопросе.

    Скрипты в AutoCAD

  • Построение поперечных профилей дорог с отметками, коммуникациями и проектными сооружениями

    Самый технически сложный сценарий был написан мной, на удивление, не для работы, а в рамках «руки помощи» дружественной организации. Стояла задача: построить порядка пятисот поперечных профилей автомобильных дорог с указанием высотных отметок, пересекаемых коммуникаций и проектных сооружений в полном соответствии с ГОСТ. Вроде ничего сложного, да только в качестве исходных данных были разрозненные куски планов. Строить проектную поверхность по ним было бессмысленно, так как таких кусков было более сотни, во многих из них высотные отметки лежали в плоскости XY. Ни один известный мне САПР не подходил для этой задачи. Пришлось использовать нестандартный подход, писать и дважды переписывать сложный, составленный из трех частей сценарий, каждая часть которого выполняла отдельные построения.

    Так как задача решалась в одиночку, не было необходимости ни с кем налаживать взаимодействие, доказывать эффективность средств автоматизации и постоянно кого-то учить, – в бой пошли все известные мне средства автоматизации. Оставлю за скобками процесс работы, скажу лишь то, что мои друзья были в восторге от того, насколько качественно и безошибочно были выполнены все построения. Такой эффект мог быть достигнут только при минимизации человеческого фактора посредством максимально возможного взаимодействия AutoCAD и Excel. В этом проекте мне удалось достичь эффекта синергии от всех доступных мне средств стандартной автоматизации работы в AutoCAD. Хотите узнать, каким образом, – подробно об этом я расскажу в следующей статье.

    Заключение

    В заключение хотелось бы привести слова Ильи Глуханюка, активиста Autodesk Community:

    «Сценарии – альтернатива для тех, кто боится кодить».

    Да, конечно же, сценарии – это далеко не панацея от всех проблем и нестандартных задач, которые приходится решать в AutoCAD. Мало того, даже у меня использование сценариев занимает лишь малую долю общей работы в AutoCAD. Но все же, на мой взгляд, это самый доступный способ автоматизации работы с точки зрения затрачиваемого на его изучение времени и получаемого результата.

    Парадокс заключается в том, что каждый инженер, работающий в AutoCAD, сам того не подозревая, априори, уже владеет «языком команд AutoCAD», а «среда программирования» Excel – знакома еще со школы! Нужно всего лишь овладеть простейшим инструментарием скриптов, чтобы объединить эти знания в мощное средство автоматизации, способное сэкономить кучу времени для решения более важных инженерных задач, освободив от совершенно ненужного ручного труда.

Примечание
Хоть бейте меня, хоть режьте – никаким поисковиком не могу найти сообщение на форуме или комментарий автора книги по поводу «плагиата» справки AutoCAD. Если найдете – ткните носом.
Суть заключается в том, что автора упрекнули в схожести информации в его книге с тем, что содержится в выпущенном в 2005 году компанией Autodesk материале под названием «AutoCAD 2006. Руководство по адаптации и управлению» (в сети легко можно найти PDF печатной версии этого документа), вошедшем в состав справки в виде одноименного раздела, который и по сей день не особо-то и видоизменился.
На что автор парировал тем, что его книга была издана в 2004 году, а материал Autodesk появился в 2005. На момент написания книги материала было катастрофически мало, лишь некоторые обрывки англоязычных статей. Автором был проделан огромный труд по сбору информации и ее систематизации. Авторы «адаптации» значительно ее ужали, упростили его материал (с трехсот страниц примерно до сорока), включив в состав более общего списка тем.
Так это или нет, разбираться сейчас, сравнивать то и другое нет никакого смысла и желания. Тем не менее тот факт, что, по крайней мере, главы о сценариях приводят одинаковые по сути примеры использования сценариев, и дает мне моральное право рассматривать два этих материала как единое целое в контексте вопроса скриптов.

Все права защищены. © 2004-2024 Группа компаний «ЛЕДАС»

Перепечатка материалов сайта допускается с согласия редакции, ссылка на isicad.ru обязательна.
Вы можете обратиться к нам по адресу info@isicad.ru.