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

Статьи

9 апреля 2019

Минутка прикладного AutoCAD: извлечение данных в один клик

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

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

Александр Савилов – инженер-проектировщик автомобильных дорог, автор YouTube-канала AutoCAD imho.
Для своей статьи он обозначил рубрику:
«Минутка прикладного AutoCAD. Прикладываемся к AutoCAD головой».

Глава 1. Извлечение данных как связь объектов с «внешним миром»
Глава 2. Чем не устраивает штатный способ извлечения данных?
Глава 3. Постановка задачи
Глава 4. Построение принципиальной схемы автоматизации извлечения данных
Глава 5. Написание макроса команд
Глава 6. Подводные камни автоматического извлечения
Глава 7. Организация файловой системы под извлечения
Глава 8. Открытие файла извлеченных данных из AutoCAD («микромакрос» на VBA)
Глава 9. Как не запутаться и не ошибиться в макросах
Глава 10. Примеры практического применения автоматического извлечения данных
Эпилог

Глава 1. Извлечение данных как связь объектов с «внешним миром»

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

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

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

  • определение координат объектов и их пересечения;
  • анализ взаимного расположения элементов и вычисление допустимых размеров;
  • подсчет количества элементов в чертеже;
  • определение площадей сложных фигур, объемов тел и т. д.
Построение чертежа на основе известных размеров в AutoCAD – это одна тысячная от тех возможностей, которые дает нам AutoCAD.

Но решить задачу графически, пусть и с очень высокой точностью, – это только полдела! Не менее важно уметь применять полученные результаты в дальнейших расчетах:

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

Именно для этих целей в AutoCAD и создана функция с неожиданным названием «Извлечение данных».

С ее помощью и можно связать объекты чертежей AutoCAD с «внешним миром», в частности с электронными таблицами Excel, посредством экспорта информации об объектах в табличной форме, будь то *.xls – таблица Excel, текстовый *.txt-файл и др.

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

Глава 2. Чем не устраивает штатный способ извлечения данных?

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

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

  • справка оказалась не той формы – мчимся в поликлинику и бежим по тем же кабинетам;
  • в справке написали фамилию с ошибкой – опять семь кабинетов;
  • в четвертом кабинете заполнили не все строки – опять все по новому кругу…

Даже представить себе страшно, не так ли?

Так вот, в AutoCAD та же самая история! Само по себе извлечение данных сделать несложно, и это не займет много времени. И все вроде бы хорошо, но при анализе результата оказывается, что:

  • в набор попали не все нужные объекты – делаем переизвлечение;
  • в четвертом окне выставил не все нужные галочки – переизвлечение;
  • не отменил объединение идентичных строк – переизвлечение;
  • некорректно упорядоченные данные... принцип понятен.

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

Глава 3. Постановка задачи

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

Десяток таких кнопок перекроет 90% потребности в извлечении данных при работе в AutoCAD.

Подобного функционала в базовой версии AutoCAD, естественно, нет, следовательно – нужно смотреть в сторону программирования.

Программирование в AutoCAD – очень странный предмет, оно вроде есть, а вроде и нет. С одной стороны, все карты в руки: VBA, AutoLISP, .NET, DIESEL, java script – на любой вкус и цвет. Но с другой стороны, в AutoCAD работают не программисты, а инженеры, чья обязанность – знать свою специальность, а умение программировать – это лишь приятный бонус, обладая которым инженер может упростить себе работу, повысить ее качество и снизить нагрузку. Но таких специалистов – один на сотни. Позволить себе штатного программиста (не путать с сисадмином и BIM-менеджером) может далеко не каждая организация, зачастую даже не понимая, зачем он нужен и какая от него может быть польза.

Извлечение данных в AutoCAD

Уметь программировать инженер не обязан, но при этом использовать штатные возможности AutoCAD на 106% должен уметь! Таким образом, мы получаем самую распространенную ситуацию, когда для решения производственной задачи придется использовать только штатные средства автоматизации работы в AutoCAD. В данном случае из всего арсенала стоит обратить внимание на макрокоманды, вооружившись знаниями о которых, отважно бросимся на борьбу с «внутрипрограммной бюрократией».

Наша цель – получить *.xls-таблицу извлеченных данных всего одним нажатием кнопки. На меньшее (большее количество действий) мы не согласны!

Глава 4. Построение принципиальной схемы автоматизации извлечения данных

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

Окно №1 – в нем мы определяем, будем ли мы создавать новое извлечение с «чистого листа», создавать новое извлечение на базе существующего, внеся в него нужные корректировки, или просто подкорректируем уже существующее.

Извлечение данных в AutoCAD

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

Окно №2 – окно выбора источника данных. Для извлечений в ручном режиме – полная свобода выбора объектов, от «мелкой розницы» – в виде указания конкретных объектов в текущем чертеже – до «оптовых поставок» объектов чертежами, подшивками и даже папками. Но все это нам не интересно, ибо требует ручных манипуляций, а при автоматическом извлечении макрос должен отработать безостановочно. Таким образом, единственным подходящим для нас вариантом является установленная по умолчанию конфигурация «Чертежи > Включить текущий чертеж».

Извлечение данных в AutoCAD

Обратите внимание, что путь к текущему чертежу полностью прописывается в *.dxe-файл извлечения! Просто запомните мудрую пословицу, к ней мы еще вернемся позже!
Извлечение данных в AutoCAD

Окна №3, №4 – окна выбора типа объектов и нужных свойств объектов. Тут все интуитивно понятно, лишь еще раз оговорюсь, что автоматические извлечения данных делаются в основном под какой-то конкретный тип объекта, чьи данные чаще всего приходится извлекать. Реже автоизвлечение настраивается под конкретную задачу, где количество типов объектов может быть и два, и три, и более. Но все ситуации предусмотреть невозможно, поэтому время от времени «разовые» извлечения делать все равно придется.
Извлечение данных в AutoCAD

В окне №5 формируется вид таблицы: расположение столбцов, упорядочивание, объединение одинаковых строк, наличие столбца наименований объектов и их количества. Также здесь можно добавить свои столбцы, в которых формулой задать значения, вычисляемые из извлекаемых данных.
Извлечение данных в AutoCAD

В окне №6 мы указываем место складирования таблиц извлеченных данных и их название.
Извлечение данных в AutoCAD

В окне №8 мастер извлечения данных проверяет серьезность наших намерений и дает нам последний шанс одуматься. Взвесив все «за» и «против» и посоветовавшись с семьей, очень аккуратно жмем «Готово». Пара секунд ожидания, и вот она – заветная строка, ради которой был пройден столь долгий путь:
Извлечение данных в AutoCAD

Какие выводы можно сделать из увиденного, с точки зрения автоматизации извлечения?
  1. Файл чертежа, из которого будут извлекаться данные, должен иметь фиксированное название и расположение на диске (помним «пословицу»).
  2. xls-таблицы с извлеченными данными будут перезаписываться при каждом новом повторе извлечения, создающего эту таблицу.
Исходя из первого обстоятельства, учитывая, что названия и расположения чертежей, в которых мы работаем, всегда индивидуальны, – понимаем, что использование их при автоматизированном извлечении невозможно!

Таким образом, объекты, данные о которых нужно извлечь, должны быть скопированы в специальный, так называемый (мной) «буферный» dwg-чертеж. Чертеж этот должен иметь строго определенное название, определяющее тип объекта извлечения, и постоянный путь. Затем уже в этом самом «буферном» чертеже должен быть записан dxe-файл извлечения, собирающий информацию об объектах в нем.

Теперь можно составить принципиальную схему работы макроса команд.

Извлечение данных в AutoCAD

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

5.1 Выбор объектов для извлечения данных
По традиции макрос начинается с ^C^C – имитации двойного нажатия Esc, дабы сбросить все выполняемые команды. Первым делом в рабочем чертеже из всего множества нужно выделить объекты, данные о которых нужно извлечь. Для этого можно использовать различные ключи команды _PSelect, выбор подобных объектов или попросту запускать макрос с предварительно выделенными объектами.

^C^C – запуск макроса с предварительно выбранными объектами
^C^C_.PSelect Р \\ – выбор объектов секущей рамкой
^C^C_.PSELECT Т; – работа с «текущим» набором объектов
^C^C_.PSELECT В; – выбор всех объектов в чертеже
^C^CSELECTSIMILAR \; – выбор объектов, подобных указанному пользователем.

(Примечание: ключевые подкоманды на кириллице, для русской локализации программы).

5.2 Экспорт объектов в буферный файл чертежа
Дальше идет самая неочевидная часть макроса. Нам нужно скопировать выбранные объекты в отдельный чертеж с заданным именем. Пытаться написать на языке макрокоманд что-то вроде [скопируй выбранные объекты – открой такой-то чертеж – вставь объекты – закрой чертеж и вернись в рабочий чертеж] – затея бесперспективная. Это вам не LISP, не VBA, не .NET – тут головой думать нужно!

В этот момент стоит пересмотреть саму концепцию «копирования объектов в буферный чертеж». Нужно искать обходной путь!

А что если не открывать чертеж для копирования в него объектов, а при каждом извлечении подменять буферный чертеж другим, уже содержащим нужные объекты?

Как таковой функции сохранения выделенных объектов в отдельный чертеж в AutoCAD нет, но есть не особо популярная команда «ПБЛОК» (кнопка на ленте «Запись блока на диск»), при определенных настройках как раз дающая нужный результат. Функционал «ПБЛОК» можно легко заменить сочетаниями клавиш Ctrl + C(X)/N/V(Shift + V)/S, но вот для использования в макросе альтернативы ей нет! Забегая вперед, скажу – не будь ее в AutoCAD или работай она как-то иначе, этой статьи бы не было.

Извлечение данных в AutoCAD

Дальше тренироваться в написании макроса проще и наглядней будет на каком-то простом примере. В качестве «кошки» для тренировки создадим извлечение данных о координатах XYZ объекта «Точка». В качестве пути для файлов извлечений будем использовать папку облачного хранилища: D:\Google Диск\AutoCAD\Извлечения.

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

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

Итак, запоминаем последовательность действий:

  1. выбираем точки в чертеже;
  2. запускаем команду ПБЛОК в «безоконном» режиме (-ПБ);
  3. вставляем путь и название буферного чертежа (D:\Google Диск\AutoCAD\Извлечения\Точки (расширение можно не указывать, в безоконном режиме это бескомпромиссно «dwg»);
  4. нажимаем Enter, запуская предлагаемую кнопку «Сохранить»;
  5. на вопрос о замене существующего файла жмем «Да»;
  6. вернувшись в AutoCAD, соглашаемся с предустановкой «задать новый чертеж» нажатием Enter;
  7. в качестве точки вставки указываем 0,0 – чтобы объекты встали в те же координаты.
Все, буферный чертеж создан. Но есть маленькая загвоздка – в «безоконном« режиме команда ПБЛОК не спрашивает, нужно или нет оставить объекты в текущем чертеже, она безжалостно удаляет объекты из текущего чертежа, а если говорить точнее – отрабатывает по принципу команды «Вырезать» с последующей вставкой в указанный чертеж.

Но горевать об утрате не стоит, сочетание Ctrl + Z, она же команда «Отменить» или просто псевдоним «О», вернет объекты на их историческую родину.

Прежде чем записать все содеянное в макрос, нужно вспомнить синтаксис языка макрокоманд, согласно которому обратный слэш «\», используемый при разделении директорий в Windows, на языке макрокоманд означает «ввод координаты пользователем», поэтому при указании пути к файлу его следует поменять на прямой слэш «/», иначе макрос остановится. Также путь и название файла следует заключить в кавычки, на случай, если в пути к файлу есть пробелы, чтобы эти пробелы не воспринимались как нажатие клавиши «пробел». За нажатие клавиши Enter отвечает «;», а за нажатие кнопки «Да» в окне сохранения файла – буква «Д».

Получаем следующий кусок макроса:

ПБ "D:/Google Диск/AutoCAD/Извлечения/Точки";д;0,0;о

5.3 Запуск извлечения данных
Еще немного подготовки. Чтобы завершить макрос на извлечение данных, это извлечение нужно создать:

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

Результат извлечения в виде Excel-файла складируем в кучу с «Точки.dwg» и «Точки.dxe». Достаточно удобно, когда все эти три файла имеют одно название, отображающее тип извлекаемых объектов (в принципе, можно вообще использовать единственный буферный чертеж для всех извлечений, функциональность от этого не пострадает). Закрываем буферный чертеж, он нам больше не понадобится, пока не придет время перенастроить извлечение или переписать пути.

Снова запоминаем последовательность действий:

  1. запускаем извлечение данных в режиме подавления окна мастера (-данныеизвл);
  2. в ответ на запрос командной строки указываем путь и название только что созданного извлечения данных (D:\Google Диск\AutoCAD\Извлечения\Точки.dxe) и жмем Enter;
  3. в следующем запросе нажатием Enter соглашаемся на перезапись xls-файла.
И вот она, заветная строка:
Извлечение данных в AutoCAD

Финальный кусок макроса будет выглядеть так:

-данныеизвл D:/Google Диск/AutoCAD/Извлечения/Точки.dxe;;

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

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

Итак, в итоговом варианте, например с выбором подобных объектов, макрос будет выглядеть так:

^C^CSELECTSIMILAR \; ПБ "D:/Google Диск/AutoCAD/Извлечения/Точки";д;0,0;о -данныеизвл D:/Google Диск/AutoCAD/Извлечения/Точки.dxe;;

Теперь, когда макрос написан, для удобства использования его нужно повесить на какую-нибудь кнопочку.

Из доступных в AutoCAD способов создания кнопок для пользовательских макросов – лента, панель быстрого доступа и палитры – предпочтение я отдаю, конечно же, палитрам:

во-первых – простота создания кнопки, удобный доступ к большому их числу;
во-вторых – возможность назначить красивые, качественные наглядные иконки;
в-третьих – у палитр еще одно неочевидное, недокументированное преимущество…

Глава 6. Подводные камни автоматического извлечения

Есть у макроса извлечения данных одна ахиллесова пята – явно прописанный путь к dwg, dxe и xls-файлам. К сожалению, так случается, что путь к папке с файлами извлечений по каким-то причинам может изменяться. Также при настройке автоматического извлечения на стороннем компьютере иногда нет возможности использовать тот же путь, который используется на текущей машине. В этом случае простым копированием файлов извлечений, плюс экспорт/импорт палитр извлечений – не обойтись.
Извлечение данных в AutoCAD

И вот тогда наступает самый болезненный момент – корректировка пути к файлам. Менять пути нужно в двух местах – в тексте макросов и в файле dxe.

В первом случае нам на помощь приходит то самое «неочевидное преимущество». Дело в том, что файл палитр .xtp, содержащий всю информацию об элементах палитр, является обычным текстовым файлом, в котором текстом прописывается вся информация о кнопках, расположенных на этой палитре, в том числе и текст макроса. Думаю, вы уже догадались, к чему я клоню. Переписываем расширение на txt, открываем файл блокнотом, находим и копируем старый путь, жмем Ctrl + H (поиск и замена) и заменяем старый путь на новый. Возвращаем файлу расширение, данное при рождении, и все – при импорте подправленной палитры кнопки в ней будут содержать корректный путь в макросах!

С dxe-файлами такой фокус не пройдет. Открыть их блокнотом, конечно, можно, но редактировать – нет. Как мы помним, что в *.dxe записано пером – не вырубишь ни топором, ни блокнотом и вообще ничем иным не поправишь. И выход тут только один – вручную перезаписывать каждый dxe, последовательно открывая каждый буферный dwg-файл и выбрав чекбокс «Редактировать существующее извлечение данных», пробежаться по всем окнам, в предпоследнем указав новое расположение xls-таблицы результата извлечения.

Глава 7. Организация файловой системы под извлечения

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

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

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

Глава 8. Открытие файла извлеченных данных из AutoCAD («микромакрос» на VBA)

Итак, данные извлекаются в один клик, но после извлечения таблицы с данными автоматом не открываются, и добираться до них сквозь дебри директорий приходится вручную. В Windows есть несколько способов ускорить этот процесс: ярлыки на рабочем столе, библиотеки в окне проводника, закрепление папок на панели задач.

А ведь душа-то просит, чтобы «в один клик», да прямо из AutoCAD, и с той же палитры, да чтобы на каждую таблицу своя кнопочка! Эх, интересно, можно чтобы вот так?

Нельзя – на языке макрокоманд, а вот на VBA вполне себе можно (обладатели AutoCAD LT грустно вздохнули).

Запуск VBA-макроса кнопкой на палитре осуществляется командой «-vbarun» + его название. Сам макрос настолько примитивен, что отредактировать под себя этот код... сможет даже кот!
(указать путь к папке извлечений и название таблицы)

Извлечение данных в AutoCAD

Кстати, файл «Project.dvb», в котором по умолчанию хранятся записанные макросы, также можно положить в сетевую папку рядом с извлечениями, и все вновь записанные макросы (и их изменения) будут появляться на всех компьютерах, к которым подключен этот файл.

Разумеется, никто никогда у меня с секундомером за спиной не стоял, поэтому следующий вывод очень субъективен, но, на мой взгляд, автоматизация извлечения данных вкупе с кнопкой открытия файла результата, с учетом не только самого процесса работы мастера, но и времени на поиски нужных файлов, присваивание новых имен и прочие процессы, сокращает время, необходимое для получения одного и того же результата, в 20-30 раз. Время, затрачиваемое на настройку автоматизированного извлечения (которую, по-хорошему, нужно сделать всего один раз), окупится после 15-20-го извлечения. Помимо этого, перед пользователем часто встает выбор: сделать трудоемкое, но исключающее ошибки извлечение данных или получить тот же результат вручную, пусть и с вероятностью где-то допустить ошибку. Использование автоматизации уверенно заваливает чашу весов в сторону извлечений, как экономя время, так и повышая качество выполняемой работы.

Глава 9. Как не запутаться и не ошибиться в макросах

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

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

С таким подспорьем создание автоматического извлечения занимает всего пару минут, а вероятность сделать ошибку в коде макроса стремится к нулю. Хотите себе такую табличку – найдите меня в VK, я с удовольствием с вами поделюсь (равно как и иконками с плоскогубцами).

Извлечение данных в AutoCAD

Глава 10. Примеры практического применения автоматического извлечения данных

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

Извлечение данных можно условно разделить на три типа использования:

а) извлечение данных как готовый результат
Самый простой случай, когда извлекаемых данных достаточно для решения задачи.

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

ОК. Строим полилинию в указанных границах, параметризацией выравниваем длины сегментов кратно шагу стоек, взрываем полилинию и одним кликом запускаем извлечение данных об отрезках, в частности о координатах их начала и конца. Десять минут работы, и у геодезиста на объекте есть текстовый файл с координатами, которые он загружает в тахеометр и делает разбивку. Работа не останавливается ни на минуту.

Извлечение данных в AutoCAD

б) использование извлеченных данных в качестве исходных данных для расчетов
В этом случае создается специальное извлечение, заточенное под конкретную задачу. Результаты извлечения подхватываются другой таблицей, и на базе полученных данных происходят дальнейшие расчеты.

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

Для разработки томов ОДД (организации дорожного движения) нами была разработана таблица для автоматизации подсчета дорожных знаков, стоек и фундаментов к ним.

Из чертежа ОДД извлекались данные о блоках знаков и стоек, данные о названиях блоков, слоях (для деления по подобъектам дороги), атрибутах (наличии фундамента, пикетажном положении, типоразмере и т.д).

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

Соглашусь, что это дублирование работы многих САПР, но тем не менее, когда приходят замечания, ответ «мне программа выдала» не имеет ни малейшего значения. Все же, когда на каждом этапе вычислений можно произвести проверку и внести корректировки (например отойти от требований нормативов в сторону увеличения надежности или актуализации нормативных данных), спектр возможностей гораздо шире.

Извлечение данных в AutoCAD

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

В качестве примера можно привести любые из моих сценариев:

  • Извлекаем из чертежа координаты точек с тахеометра > сценарием вставляем в эти координаты нужные нам блоки. Например, определив в этих точках проектные данные, вычисляем отклонения и вставляем специальные блоки c отметками и отклонениями. Исполнительная схема (в дорожном строительстве порой на сотни и тысячи точек съемки) готова!
  • Вставить в нужные координаты текст, многострочный текст, выноски с нужной информацией – только дайте координаты, сценарий сам все сделает.
  • Извлекаем названия слоев/блоков/листов – обрабатываем нужным нам образом эти данные – запускаем сценарий на переименование. Две минуты, и чертеж адаптирован под наши задачи.
  • Извлекаем данные о блоках рамки листов в модели – координатах вставки, масштабе, угле поворота – в один клик создаем сценарий на разбивку листов и наслаждаемся тем, как в AutoCAD сценарий выполняет разбивку модели на листы с максимально возможной скоростью.
И еще масса сценариев, питающихся извлеченными данными из чертежей, описывать которые не хватит никакой статьи.
Извлечение данных в AutoCAD

Эпилог

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

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


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

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