6 - 2011

Графические инструменты в среде AutoCAD и автоматизация графических работ

Игорь Цепалин (Главный инженер проектов, ГУП «Моспроект-2» им. М.В. Посохина, мастерская №11)

При работе с современными программными продуктами, предназначенными для инженерной графики, к которым относятся AutoCAD Architecture 20** и AutoCAD 20**, возникают два вопроса:

  • удовлетворены ли вы набором инструментов для графической среды из стандартного базового комплекта?
  • что бы вы хотели иметь дополнительно к стандартному комплекту для достижения максимальной производительности вашего труда?

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

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

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

Оценить программный продукт можно и иначе — ответив на вопрос, имеет ли он специализированные программные модули, последовательно выполняющие автоматизированные построения для каждого этапа технологической цепочки проектных работ, которыми занимается ваша фирма, или чертежи, выпускаемые вами, — на 100% ручное черчение? Ответив на данный вопрос, вы сможете понять, насколько автоматизировано ваше производство.

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

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

Итак, если вы, приобретя AutoCAD ****, осознали необходимость его доработки под нужды производства и использования всех доступных средств для его настройки, контроля и управления объектами чертежа, в частности с применением VLISP и VBA, то данная информационно­аналитическая статья предоставит вам некоторые сведения об одном из вариантов такой доработки и принципиально ответит на вопрос, можно ли это сделать.

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

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

Рис. 1. Диалоговое окно программы черчения и построения соединений

Рис. 1. Диалоговое окно программы черчения и построения соединений

Этот инструмент применяется для выполнения соединения с автоматическим вычерчиванием отводов и фланцев. Выпадающее меню состоит из нескольких позиций: «Отопление», «Вентиляция», «Водопровод», «Канализация» и «Врезка (по умолчанию)» — соединение двух пар линий с автоматическим вычерчиванием дуг врезки по разным или одинаковым радиусам (рис. 2).

Рис. 2. Результат работы программы. Соединяемые пары линий могут иметь произвольное расположение: a — полож.;

Рис. 2. Результат работы программы. Соединяемые пары линий могут иметь произвольное расположение: a — полож.; б — полож., то есть их расположение не требует точной стыковки пары линий

Соединяемые отрезки, показанные на рис. 2.1 (исх.), 2.2 (исх) и 2.3, также выполняются программой в режиме черчения, количество одновременно вычерчиваемых отрезков на один проведенный вектор ограничено только количеством привязок (см. рис. 1).

Отличие этого инструмента от инструмента мультилиний состоит в том, что соединения выполняются без ручного вычерчивания дуг и при любом взаимном расположении пар линий достаточно выбрать первую и вторую пару. Выбор прост и выполняется в процессе работы в программном режиме fence(acSelectionSetFence), который не применяется в обычной практике черчения и проще, чем выбор рамкой, который заложен в базовом комплекте. На месте отводов и фланцев, выполненных по просьбе инженеров по отоплению и вентиляции, могут быть любые условные обозначения, которыми по мере необходимости можно дополнять программу. Это еще одна особенность собственного инструмента автоматизации — дополняемость.

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

Рис. 3. Диалоговое окно замены слоя

Рис. 3. Диалоговое окно замены слоя

Некоторые пользователи выполняют отводы из динамических блоков. Следует отметить, что скорость работы с применением приведенной программы черчения — приблизительно 10 соединений на один установленный динамический блок. Вы не отвлекаетесь на стыковку отводов с линиями, черчение отводов происходит автоматически с выбором необходимых отводов из базы данных по диаметрам труб.

Следующий пример инженерного инструмента — автоматизированное вычерчивание осей.

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

***************

[БТЧ 1 ]

­240514,06 ­276638,11 0,0

[БЛО 1 ПЛ 0] 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18;

1200 580 4020 700 2050 3600 1400 650 2550 5500

700 3100 3850 3150/2 3850 3100

[БЛО 1 ПЛ 90]

А­1.2 A­1.78 A­5.98 A­6.68 A­8.73 Е Ж И К Л М Н П Р С Т У Ф;

1200 580 4020 700 2050 3600 1400 650 2550 5500

700 3100 3850 3150/2 3850 3100

[БТЧ 2 ]

(9 + 5040) ( К +5040) 0,0

[БЛО 2 ПЛ 225]

А­2 А­3 А­4;

­3275 +3275

[БТЧ 3 ]

(9 + 5040) (К +5040) 0,0

[БЛО 3 РЛ 225]

А­1 А­3 А­5;

­22,3 22,3

[ГБТ]

2 30000 3 30000

[РЗЛ]

5000/1200

***************

Ручное черчение в данной программе не применяется.

Для работы с текстовыми файлами данных и начальной инициализации программы необходимы два дополнительных модуля: модуль установки стилей и типа линии и поисковая программа, чтобы находить TXT­файлы. DCL первого модуля показан на рис. 4, DCL второго модуля, который выполняет функции, аналогичные функциям проводника операционной системы, — на рис. 5. Модули написаны на VLISP и включаются в программы, работающие с текстовыми данными.

Рис. 4. Диалоговое окно для установки

Рис. 4. Диалоговое окно для установки стилей и типа линии

Диалоговое окно, показанное на рис. 4, — информационное: в нем указаны стили, которые будут созданы в процессе работы программы автоматически. Пользователь может поменять для первых трех окон имена, а для последнего может выбрать тип линии в выпадающем меню. В этом меню записаны все типы линии, найденные на компьютере в файле acadiso.lin или acad.lin.

После вызова окна с рис. 4 осуществляется поиск текстового файла с приведенными ранее текстовыми данными. На рис. 5 показан проводник, выполненный в VLISP и позволяющий производить поиск файлов как в прямом режиме доступа к диску — окно «Диск», так и в пошаговом прямом и обратном режимах.

Рис. 5. Диалоговое окно для выбора директории, файла пути

Рис. 5. Диалоговое окно для выбора директории, файла пути

Обратный режим, то есть шаг назад, выполняется при выборе в окне «Путь».

Возможен поиск файла по заданному пути.

Результат работы программы — построение 164 объектов в автоматическом режиме за несколько секунд (рис. 6).

Рис. 6. Результат работы программы черчения осей

Рис. 6. Результат работы программы черчения осей

Рис. 7. Диалоговое окно программы для черчения периметров

Рис. 7. Диалоговое окно программы для черчения периметров

Протокол черчения может быть изменен. Подставив вместо [БЛО 1 ПЛ 0] и [БЛО 1 ПЛ 90] величины [БЛО 1 ПЛ 35] и [БЛО 1 ПЛ 125], получим повернутые на 35° оси. Другие особенности протокола: дублирующиеся оси — 3150/2, привязка осей к ранее введенным прямоугольным осям — [БТЧ 2 ] (9 + 5040) (К +5040) 0,0. В данном варианте программы оси условно делятся на параллельно­линейные (ПЛ) и радиально­линейные (РЛ).

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

БТЧ 500.0 3670.0 0.0

СВ 50 47.8 3.781

ЮВ 44 37.8 14.263

ЮЗ 45 29.8 20.401

ЮВ 43 27.1 0.785

ЮВ 45 6.9 38.601

ЮЗ 44 44.9 1.605

ЮЗ 47 56.3 4.000

ЮВ 42 59.7 29.094

ЮЗ 45 29.8 189.512

ЮЗ 45 23.4 141.495

СЗ 84 50.7 15.914

ЮЗ 62 29.7 5.998

СЗ 44 31.4 68.882

СВ 45 25.8 369.643

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

Время написания самой объемной из приведенных программ не превышает двух рабочих недель. Более простые программы, например программа черчения периметров, составлялась два рабочих дня.

Исходя из этих сроков и сроков написания других программных модулей, которые не приводятся в данной статье, автор пришел к выводу, что VLISP + VBA — более быстрый инструмент, чем разработка на C++ ARX­модулей, а связка VLISP + VBA ориентирована на разработку инструментов самими пользователями AutoCAD 20** без привлечения фирм, занимающихся разработкой приложений, — конечно, в том случае, если пользователь обладает необходимой суммой знаний и наработками в этой среде.

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

А вот пример общего инструмента из базового набора, который совершенно не удовлетворяет автора по такому критерию, как скорость работы.

Многие создавали в чертежах полилинии и знакомы с отсутствием цифрового пересечения при наличии визуального, когда полилиния получается из набора отрезков; кроме того, создание полилинии требует открытия нескольких окон для добавления в набор, что автор считает излишним.

Работа в программном режиме для автоматизированного создания полилиний по существующим линиям начинается с диалогового окна, задающего величину «дельта» (рис. 8). Эта величина устанавливается пользователем, и в пределах окружности с радиусом, равным «дельта», выбранные линии автоматически соединяются, если требуется. Отрезки соединяются не фактически — программа находит точку пересечения отрезков из набора. Набор отрезков комплектуется линиями в автоматическом режиме — достаточно указать на один из отрезков в цепочке, из которой создается полилиния, и та же самая величина «дельта» служит критерием включения отрезков в набор.

Рис. 8. Диалоговое задание величины «дельта»

Рис. 8. Диалоговое задание величины «дельта»

Рис. 9. Диалоговое окно создания полилиний

Рис. 9. Диалоговое окно создания полилиний

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

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

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

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

До сих пор материал статьи имел информационную направленность, а теперь приведем результаты, применимые на практике.

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

Обратимся к руководству разработчика на VLISP и рассмотрим использование команды TransformBy с матрицей трансформации.

 

Примеры работы с этой матрицей, приведенные в документации AutoCAD, — это частные случаи ее использования, не позволяющие писать сколько­нибудь удовлетворительные 3D­инструменты, поэтому автор приводит общий вид матрицы, пригодной для практического программирования:

R00 = cos (g)* cos (b)

R01 = (cos (g)* sin (b)*sin (a) ­ sin (g)* cos (a))

R02 = (cos (g)* sin (b)*cos (a) + sin (g)* sin (a))

T0 = XB*(1 ­ cos (g)* cos (b)) – YB*(cos (g)* sin (b)*sin (a) ­ sin (g)* cos (a))

            ­ZB*(cos (g)* sin (b)*cos (a) + sin (g)* sin (a))

R10 = sin (g)* cos (b)

R11 = (sin (g)* sin (b)*sin (a) + cos (g)* cos (a))

R12 = (sin (g)* sin (b)*cos (a) ­ cos (g)* sin (a))

T1 = ­ XB *sin (g)* cos (b) ­ YB *(sin (g)* sin (b)*sin (a) + cos (g)* cos (a) ­ 1)

            ­ ZB *(sin (g)* sin (b)*cos (a) ­ cos (g)* sin (a))

 

R20 = ­ sin (b)

R21 = cos (b)*sin (a)

R22 = cos (b)*cos (a)

T2 = XB *sin (b) ­ YB * cos (b)*sin (a) ­ ZB *( cos (b)*cos (a) ­ 1)

где: a, b, g — углы поворота вокруг осей X, Y, Z;

XB, YB, ZB — координаты точки, вокруг которой происходит поворот (базовой точки).

Матрицу можно использовать двумя способами:

  • с командой “TransformBy”;
  • со столбцом координат XP, YP, ZP.

где:

XP, YP, ZP — координаты текущей точки;

XN, YN, ZN — координаты текущей точки после поворота.

При первом способе объект чертежа поворачивается на заданные углы автоматически, а при втором координаты нужно вносить в DXF­описание примитива и обновлять примитив, что не всегда возможно или удобно.

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

С автором можно связаться по адресу: namvam@rambler.ru

САПР и графика 6`2011

Регистрация | Войти