Легенда в автокаде это

Обновлено: 07.07.2024

Решил рассказать о своем опыте работы с AutoCAD. Может быть, кому-то это поможет – ну или хотя бы интересным покажется.

Предыстория

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

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

Для пробы предлагалось создать на чертеже пару объектов, а также вывести текст. Несколько дней я искал информацию об API и пытался подружиться с непривычной программой. В конце концов фигуры были нарисованы, текст выведен, а тестовое задание отправлено на проверку. И через несколько дней я неожиданно узнал, что принят! Чудеса, да и только.

1. Подготовка необходимых инструментов

1.1. Собственно AutoCAD

Тут все понятно. Качайте с официального сайта Autodesk, ставьте, 30 дней наслаждайтесь прекрасным инструментом. Потом узнайте цену покупки и повесьтесь. Для разработчиков действует специальная программа ADN , по которой можно получать девелоперские лицензии на продукты Autodesk. Стоимость базовой версии подписки, как указано на сайте, составляет от 700 долларов в год.

1.2. ObjectARX SDK – набор библиотек, необходимых для работы с AutoCAD

Последние три-четыре версии библиотек можно бесплатно скачать тут после регистрации. Более ранние придется поискать – скажем, тут. На всякий случай продублирую список прямо здесь – не такой уж он и длинный:

ссылки для загрузки ObjectARX SDK для версий AutoCAD 2000 – 2011
Версия SDK и ссылка для загрузки Совместимость с версиями AutoCAD
2011 2011, 2012
2010 2010, 2011, 2012
2009 2009
2008 x86 2008, 2009 x86
2008 x64 2008, 2009 x64
2007 2007, 2008, 2009 x86
2006 2006
2005 2005, 2006
2004 2004, 2005, 2006
2002 2002
2000i 2000i, 2002
2000 2000, 2000i, 2002
R14 R14

Лично меня в свое время очень заинтересовал вопрос обратной совместимости ObjectARX. Как-то раз заказчик спросил: «А с какими версиями AutoCAD сможет работать программа?», и мне пришлось изрядно времени потратить на поиски ответа. В целом, ответ звучит так: «Autodesk поддерживает обратную совместимость в течение трех лет ». Какие версии совместимы между собой, можно посмотреть под спойлером выше.

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

1.3. MS Visual Studio 2013 Express

Великолепная IDE! Больше про нее и говорить-то нечего. Ссылок для скачивания масса – например, вот.

Можно, конечно, использовать и более ранние версии. Я начинал работу над проектом в MS Visual Studio 2010, но потом решил перейти на более современный выпуск.

1.4. Поисковик, усидчивость, здравый смысл
  • нет привычных всплывающих подсказок о назначении класса, свойства или метода;
  • нет подробной справки.

В конце этой статьи приведен список ресурсов, на которых можно позадавать вопросы и, если повезет, получить на них ответы.

2. Создание проекта библиотеки

Вкратце продублирую основные этапы:

2.1. Создать проект «Библиотека классов» («Class Library»)

Эти DLL-файлы находятся в папке с именем inc-<наименование_архитектуры>. Так, в моем случае я добавляю ссылки на библиотеки из папки C:\ObjectARX 2010\inc-win32.

у меня дома установлена 32-разрядная ОС, у заказчика – 64-разрядная. Пока серьезных проблем с совместимостью не возникало. Но однажды я все же напоролся на то, что у меня функция возвращала Int32 , а у заказчика – Int64 . Линковщик ОЧЕНЬ расстраивался. Нужно иметь эту особенность в виду.

Первое знакомство с API у меня заключалось в лихорадочных попытках скомпилировать хоть какой-нибудь из примеров, щедро разбросанных по Сети. И что сλка характерно, компилироваться они упорно не хотели, ругаясь на неизвестные пространства имен и классы. В попытках собрать свой первый проект я с горя включил в него чуть ли не все DLL-файлы, которые шли с ObjectARX. Плохой способ – так делать не надо.

Ну, это вопрос не ко мне. Я только могу сказать, что в начале примеров обычно идет перечисление используемых пространств имен – скажем, так:


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

А пока – вот список DLL-файлов, которые я использую в проекте, и содержащихся в них пространств имен:


Теперь в любом месте этого файла можно вместо Autodesk.AutoCAD.ApplicationServices.Application писать acadApp .

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

2.3. Написать код плагина

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

Таким образом, всего необходимо добавить три ссылки:



UPD. 09.04.2018. Важное дополнение от lasteran: В новых версиях (предположительно начиная с AutoCAD 2013) класс CommandMethod содержится не в AcDBMgd.dll, а в AcCoreMgd.dll, так что придётся добавить ссылку ещё и на эту библиотеку. Учтите это, если работаете с новой версией!

Затем мы объявляем класс Commands . Именно он и будет «отправной точкой» плагина. Наш класс унаследован от интерфейса IExtensionApplication , поэтому в нем могут быть реализованы методы Initialize и Terminate . Первый из них автоматически выполняется при загрузке плагина, второй – при выгрузке.

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

Почитать поподробнее про методы Initialize и Terminate можно тут (rus) и там (англ.).

Чтобы «превратить» созданный метод в команду AutoCAD, применяется атрибут CommandMethod . В скобках после него указывается имя создаваемой команды, которое можно будет использовать непосредственно в среде AutoCAD.

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

2.4. Загрузить созданный плагин

Нужно запустить AutoCAD и выполнить команду «NETLOAD»:




Затем в открывшемся окне указать путь к файлу плагина:




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


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

Теперь, когда плагин загружен, можно выполнить нашу тестовую команду:




… и увидеть результат:


Работает. Теперь можно закрывать AutoCAD.

2.5. Отладить плагин (при необходимости)

Процедура запуска плагина для отладки очень хорошо расписана в этом посте Tepliuk.


Автор:

Вставка легенды в макет пространства листа.

Учебный видеоролик


При наличии подключения к сети Интернет просмотрите видеоролик, чтобы подробнее узнать о создании легенды. Также можно нажать кнопку "Попробовать", чтобы выполнить действие самостоятельно. Действия, выполняемые в ходе этой процедуры, перечислены под окном видеоролика.
Прим.: В этом упражнении используется карта build_map1.dwg , которая была создана и изменена в предыдущих упражнениях.

Добавление легенды на карту


  1. Если она еще не открыта, откройте законченную карту из предыдущего урока.
    • Выберите Открыть Чертеж .
    • Найдите файл build_map1.dwg .
    • Выберите ее и нажмите кнопку Открыть .
  2. В Диспетчере отображения отключите слой "Основа карты", чтобы он не отображался в легенде.
  3. Перейдите на вкладку Лист2 в нижней части окна карты.

В правой части ленты появится новая вкладка Инструменты компоновки .

При двойном щелчке видового экрана карта будет отображена в пространстве модели (даже при просмотре в пространстве листа).

Легенда может находиться внутри видового экрана или за его пределами.

Обратите внимание, что каждый слой, указанный в Диспетчере отображения , автоматически выделяется в легенде своим отличительным цветом. Элементы отображаются в том же порядке, что и на вкладке "Диспетчер отображения" .

Для продолжения работы с этим учебным пособием перейдите к разделу Упражнение 2. Редактирование легенды.

В статье ниже нет ничего про программирование. Она была написано с целью дать поверхностное представление о том что такое AutoCAD Architecture, какие объекты в нем реализованы и в чем их особенности.

image


Введение

AutoCAD Architecture (аббревиатура ACA ) — это специализированное приложение на основе AutoCAD, флагманского продукта компании Autodesk, созданное для нужд архитектурного проектирования. Первая версия ACA была выпущена в 1998 году и с тех пор обновляется примерно раз в год. На данный момент последняя версия ACA называется AutoCAD Architecture 2016.

Почему возникла необходимость создания такого продукта?

Рассмотрим несколько архитектурных чертежей, выполненных с помощью ACA:



Обычно архитектурные чертежи содержат здания или части зданий, которые состоят из таких частей как стены, окна, двери, крыши, лестницы и т.д.

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

Если объект имеет разную геометрию в 2D и 3D представлениях (или вообще зависит от view direction), то все эти варианты приходилось рисовать вручную и размещать в нужном. Поглядев на первый чертеж, можно предположить, насколько трудоемко прорисовывать каждое представление объекта.

Чтобы передвинуть окно на плане нужно подвинуть само окно, восстановить стену на его месте, а на новом – начертить проем. А потом сделать тоже для 3D модели. Если видов больше, то правки придется делать в каждом виде. При таких изменениях легко допустить ошибки или несогласованность между видами.

В ACA реализованы специальные инструменты и библиотеки объектов, облегчающие и ускоряющие архитектурное проектирование. В AutoCAD Architecture «окно» и «стена» — это объекты, имеющие связи и поведение. Окно “знает”, что оно прикреплена к стене, а стена знает о существовании окна. При движении окна стена автоматически изменит свою геометрию, создав дырку в новой позиции двери и убрав дырку на старой позиции. При движении стены дверь будет двигаться вместе со стеной. Если удалить стену, то все окна и двери, которые были в этой стене, тоже удалятся:

Модель чертежа едина. Чтобы сделать двумерный plan view необходимо только переключить вид. Редактируя любой view, редактируется вся модель:

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

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


Типы примитивов в ACA

Кроме стандартных примитивов AutoCAD, ACA имеет следующие базовые примитивы (англ):


1) Стены (Walls)

2) Витражи (Curtain walls). Витражи состоят из одной или нескольких сеток. Каждая сетка в витражу делится на ячейки по горизонтали или по вертикали, но сетки можно объединять методом вложения с целью получения разнообразных комбинаций, от самых простых до весьма сложных.


3) Двери, окна, проемы, дверные и оконные сборки (Doors, Windows, Openings, DWA):


4) Лестницы и перила (Stairs and Railings):


5) Крыши, перекрытия и скаты крыш (Roofs, Slabs and Roof Slabs):


6) Несущие элементы (Structural Members). Несущий элемент — это объект, который может представлять собой на чертеже балку, раскос или колонну. Все создаваемые балки, раскосы и колонны являются подтипами одного и того же объекта — несущего элемента.


7) Вспомогательные примитивы: AD-полигоны, масс-элементы, 2D профили

Что такое примитивы ACA?

Объекты ACA — это custom-объекты AutoCAD, реализованные в группе отдельных библиотек, называемых ACA enablers. Для сохранения и загрузки объектов ACA используется DWG формат, но для отображения и работы с такими объектами необходимо наличие этих библиотек.

По сути объект ACA это C++ класс. Геометрия объекта вычисляется при отрисовке и зависит от его настроек (а не задана заранее).
Например, на скриншоте ниже можно увидеть некоторые параметры дверей в диалоговом окне: ширину, высоту, подъем, выравнивание, стиль и тд. Двери на скриншоте отличаются только шириной и углом открытия, но на основании этих данных разница в геометрии получилась значительная.


Основные особенности объектов ACA

Не углубляясь во взаимосвязи и детали, рассмотрим основные особенности относящиеся к объектам ACA:
1. Объектам ACA назначен стиль, который определяет внешний вид (и частично поведение).
2. Объекты ACA viewport dependent. Они рисуют разное представление себя в разных view. Под представлением имеется в виду геометрия. Например, стена в изометрии обычно отрисуется как 3D модель, а в top-view – как прямоугольник.
3. Геометрия объектов ACA состоит из отдельных компонентов. Каждое представление объекта имеет свой набор компонентов.

Объектам ACA назначен стиль, который определяет внешний вид объекта

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


Стили объектов могут быть очень сложными. Например, ниже – это тоже двери (и окна).


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

Геометрия объектов ACA зависит от view

На рисунке ниже представлена одна и та же модель. Изменяется только view – направление, под которым камера «смотрит» на объект. В зависимости от настроек и направления камеры объекты ACA отрисовывают разную геометрию. Геометрия объекта в каждом вью отражает логику данного представления и не связана с геометрией на других view.


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

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


Геометрия объектов ACA состоит из компонентов

Геометрия объекта ACA состоит из нескольких отдельных компонентов. Геометрия обычно делится на компоненты в соответствии с логикой физического мира. Так у окна компонентами могут быть рама, стекло, створки и так далее.

Для примера рассмотрим дверь в 3D. В открытом списке видны компоненты, из которых состоит нарисованная дверь. У каждого компонента можно изменить его свойства (цвет, тип линий и тд), а также показать или сделать невидимым.


В разных представлениях объект имеет разные компоненты. Дверь в top view (plan representation) имеет другую геометрию и, соответственно, другой набор компонентов, из которых она состоит.


Объекты документирования

Для создания документации в АСА существуют следующие «примитивы»:
• 2d sections
• Dimensions
• Schedule tables
• Spaces

Объекты документирования также спроектированы для работы с архитектурными объектами и обладают дополнительной логикой. Для примера рассмотрим размерные линии (dimensions):


При работе с ACA-dimensions нет необходимости вручную прорисовывать размеры каждого объекта. Когда мы прикрепляем объект dimension к стене, размеры окон, дверей и проемов проставятся автоматически. При движении проемов линии размерности автоматически перерисуются, чтобы отражать текущее состояние чертежа. Если мы передвинем стену, то линии размерности автоматически сдвинутся за стеной. При удалении объектов удалятся и части размерных линий, которые к этим объектам относились.

Читайте также: