Как получить симун в autocad

Обновлено: 02.06.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.

Координаты в Автокад. Система координат в AutoCAD.

Нажмите для просмотра видеоурока

Освой AutoCAD за 40 минут пройдя базовый курс от Максима Фартусова.

Текстовая версия урока:

Вопрос 1. Как включить отображение координат в Автокаде рядом с курсором?

Следует отметить тот факт, что для удобства в Автокаде есть возможность отображать текущие координаты около курсора, работает это при включенном динамическом вводе (см. картинки ниже).



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



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


Вопрос 2. Как вводить координаты в AutoCAD?

Нужно понимать, что все координаты вводятся относительно АБСОЛЮТНОГО начала координат в Автокаде. Т.е. от нуля. Сначала нужно ввести координату по оси X, а затем, с помощью клавиши TAB ввести координаты по оси Y, затем нажать ENTER. После таких манипуляций мы поставим первую точку нашего прямоугольника по нужным координатам. Давайте рассмотрим на примере.

Делается это очень просто.

Шаг 1. Для ввода координат с клавиатуры, требуется выбрать сначала любой инструмент для рисования. Возьмем все тот же прямоугольник и введем координату по оси X, скажем 4000.


Теперь, чтобы задать координату по оси Y следует нажать на клавишу TAB, она находится вот тут


Шаг 2. Вводим координату по оси Y, 5000.


Шаг 3. Мы поставили первую точку прямоугольника с координатами в Автокаде. Теперь мы можем поставить вторую точку прямоугольника.


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


Введем для разнообразия значения координат в Автокаде с такими параметрами, по оси X 600, а по оси Y -300. Следовательно, ширина прямоугольника у нас будет, верно, 600 единиц, а высота 300. Но т.к. по оси Y мы задаем значение с минусом, то и сторона уйдет как бы вниз.


Шаг 5. После ввода координат следует нажать ENTER. Еще раз хочу донести до Вас эту мысль. Вторая точка, угол если хотите, ставится относительной первой точки или угла. Поэтому вводя координаты для второй точки, мы автоматически задаем геометрический размер нашему прямоугольнику.


Вопрос 3. Как перенести начало координат в AutoCAD?

Перенести координаты не составляет труда, это очень просто и порой очень удобно для работы, особенно если требуется совместить начало координат в Автокаде с каким-то объектом. Давайте рассмотрим по шагам, как выделить и переместить координаты.

Шаг 1. Для перемещения координат, их нужно выделить. Для этого наводим курсор мышки на любое место координат и кликаем левой кнопкой мыши.


Шаг 2. Если Вы все верно сделаете, то у наших осей покажутся синие ручки.



Шаг 4. После этого, мы можем перемещать нашу координату куда нам угодно.


Соединяем координаты с точкой прямоугольника.


Готово! Мы взяли наши координаты и переместили их к одному из углов нашего прямоугольника.


Вопрос 4. Как повернуть оси в AutoCAD?

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

Шаг 1. Наводим на круглый синий маркер.



Шаг 3. Можно ввести угол поворота или задать его произвольно. Мы решили повернуть на -40 градусов (с отрицательным значением). Нажимаем ENTER.


Шаг 4. Обратите внимание, вспомогательная сетка тоже поменяла угол вместе с координатами.


Вопрос 5. Как вернуть начало координат назад в AutoCAD?

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



А на этом у нас все!

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

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

> Александр Ривилис
Попробовал программу. Первое впечатление - может быть очень полезна в работе. Хорошо смотрится в комплекте с открытым окошком Properties.

> Александр Ривилис
Сам недавно хотел написать на лиспе подобную программу, но все равно придется писать для Брикса. Хочется иногда выбрать еще по длине, по радиусу, и иногда еще и с допуском длины (радиуса).

О наличии анологичной команды в Civil 3D я узнал от сотрудников и сделал аналог для чистого AutoCAD. В Civil 3D описания этой команды не нашел. Поэтому делал на свое усмотрение, а диалог задания свойств выбора был сделан "по просьбам трудящихся". Если еще усложнять эту программу, то она станет похожа на стандартный Быстрый выбор (_QSELECT) и тогда потеряется весь ее смысл.

По предложению Евгения Елпанова добавил обработку примитивов с цветом BYLAYER.

> Александр Ривилис
"О наличии анологичной команды в Civil 3D. "
В ADT аналогичная команда называется:
Команда: SelectSimilar
Только как настраивать не знаю.

> wo!
Она видимо одна и таже в Civil 3D и в ADT. Описания и возможности настроек ее я не нашел - хотел сделать полный аналог, но потом расширил возможности за счет настройки.

> Александр Ривилис
У Вас получилось хорошо!
Настройки позволяют почувствовать уверенность
предсказуемость выбора.
Спасибо! (+1 голос к разговору о костылях)

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

> Valery Brelovsky
По поводу динамических блоков пока не думал (я с ними не работаю). Пришлите мне какой-нибудь чертежик с динамическими блоками - сделаю их обработку. Я так понимаю, что речь идет о сравнении по имени?

Сделал обработку динамических блоков. Теперь думаю стоит ли выкладывать эту версию. Из-за проверки динамических блоков пришлось сделать три arx-файла:

Надеюсь ничего не испортил.

> Александр Ривилис
Спасибо отлично работает. Динамические блоки теперь тоже выбираются.

> Александр Ривилис
Работал с топографией. И наткнулся на проблему удаления блоков с одинаковым значением "Z". Подумал что было бы не плохо если бы блоки выбирались не только по имени и масштабу, но и по "Z". При уровне рельефа между 95 и 150 затесалась группа точек с уровнем -1,5. Пришлось удалять по одной. Если получится буду при много благодарен. Могу заметить что ни одна версия Автокада так не ускоряет работу как Ваши две программы. Имею ввиду Сумму в свойствах и выбор по образцу.

> Valery Brelovsky
Что такое одинаковое значение "Z"? Это координата Z точки вставки блока или значение какого-то атрибута в блоке? Если первое еще можно обработать, то за второе я браться не буду - это будет слишком узко специализированно. Кроме того с какой точностью проверять значение (это плавающие числа и нужно задавать точность сравнения)?

Как просьба.
Про отметку Z вставки блоков - вещь нужная.
И по дин блокам. Нельзя ли добавить критерий отбора по параметру visible - видимости. Можно также и по значению какого либо атрибута на выбор - но это уже как наглость - если будет возможность.
Поясню - есть дин блок - положим звать его name
-у него есть несколько значений visible
-у него есть атрибут с изменяемым значением.
Это как пример - например блок площадки - марка указана в параметре visible т.е. выбор по марке а в атрибуте, скажем, ее поз в спеификации.

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

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

> Valery Brelovsky

> Александр Ривилис
А чем Вас не устраивает стандартная функция Select Semilar она уж года 2-3 как существует?
И условий выбора вроде хватает!
Current selection
Device
True Color
Linetype
Linetype scale
Plot style
Lineweight
Hyperlink
Material
Location
Normal
GUID
PartDescription
SizeName
SystemName
SystemAbbreviation
SystemType
MaximumSize
Voltage
Load
Description
Layer
Style
Bound spaces
Type
Subtype
Name
Size Name
Routing Preference
Shadow display
Connection Type
Shape
Diameter
Width
Height
System Group
System Name
System
ID
Assigned Engineering ID
Lock Size

= Equals
<> Not Equal
> Greater than
< Less than
Select All

Цифровая модель местности (ЦММ) – совокупность данных (пространственных координат) о каком-либо множестве точек, которая представляет собой многослойную модель, состоящую из частных моделей (слоев), например, из ситуации (здания, сооружения, дорожная сеть и т.д.), рельефа (отметки и глубины точек), а также технико-экономических, геологических и других характеристик. Указанная совокупность может представлять собой отдельно цифровую модель рельефа (ЦМР) и цифровую модель ситуации (ЦМС) (ситуации местности). [1]

Цифровые модели местности в некоторой степени составляют определенный пласт в информационном обеспечении ГИС (географических информационных системах), АИС для ведения кадастров (автоматизированных информационных системах), системах позиционирования и навигации. Модели местности выступают в данном случае в качестве картографической основы для привязки полученных в результате инженерных изысканий, земельно-кадастровых работ, обследований данных в пространстве.

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

Актуальность создания цифровой модели местности с помощью приложения МенюГЕО на платформе Autodesk AutoCAD заключается в удобстве хранения и обработки пространственных данных, а также конечного представления картографического материала. Кроме того, в программном обеспечении AutoCAD есть возможность экспорта ЦММ в ряд других программ в форматах dwf, fbx, wmf (метафайл), sat (ACIS), stl (литография), eps, dxk, bmp, dwg, dgn, iges.

Целью данной работы является создание цифровой модели местности с помощью цифровой обработки материалов наземной автоматизированной топографической съемки. В качестве объекта был выбран храм Приход Святой равноапостольной княгини Ольги, расположенный по адресу: г. Нижний Новгород, ул. Верхнепечерская, д. 8А.

  1. Импорт съемных точек в программу Autodesk AutoCAD из текстового файла с помощью МенюГЕО

Для появления в программе AutoCAD ряда дополнительных команд, в том числе импорта точек из текстового файла, был загружен файл адаптации (cuix) menuGEO 0_15. Это производилось с помощью диалогового окна «Загрузка/выгрузка адаптаций», которое было вызвано командой МЕНЮЗАГР (рис.1.1).

1

Рисунок 1.1 – Окно «Загрузка/выгрузка адаптаций»

При этом для корректной работы в параметрах во вкладке «Файлы» были указаны пути доступа к вспомогательным файлам (сопутствующие файлы адаптации). После загрузки адаптации в строке меню появилась вкладка МенюГЕО (рис.1.2).

2

Рисунок 1.2 – Вкладка меню «МенюГЕО»

Затем с помощью последовательности команд: «Импорт/экспорт точек – Импорт точек» было открыто окно импорта, в котором был выбран необходимый текстовый файл (он является результатом тахеометрической съемки), а также были установлены параметры, указанные на рисунке 1.3.

3

Рисунок 1.3 – Окно «Импорт»

Таким образом, после выполненных действий в пространстве модели появились пикеты с номерами точек и отметками (рис.1.4).

4

Рисунок 1.4 – Импортированные съемные точки в пространстве модели

  1. Создание ситуации местности (ЦМС) по съемочным точкам

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

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

При работе все объекты классифицируются по слоям («Здания_строения», «Сооружения», «Кабель ВН», «Рельеф» и т.д.) (рис.2.1). Для группы объектов, находящихся в одном слое таким образом можно выбрать цвет, тип и вес линии.

5 статья

Рисунок 2.1 – Диспетчер слоев

Для единства изображения всех объектов был использован классификатор условных знаков для масштаба 1:500, разработанный Институтом развития агломераций Нижегородской области. Данный классификатор содержит перечень условных обозначений: для каждого линейного знака определены какие-либо тип линии и вес, для каждого точечного – определен блок, а для площадных – свойства штриховки. Кроме того, условные знаки сгруппированы послойно, пример обозначений, относящихся к слою «41_Дорожная сеть» представлен на рисунке 2.2.

6

Рисунок 2.2 – Раздел классификатора условных знаков масштаба 1:500 «41_Дорожная сеть»

При отрисовке объектов местности выбирались инструменты рисования в зависимости от вида условных знаков (табл.1).

Таблица 1 – Соответствие инструмента для рисования определенному виду условного знака

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

Отображение площадного условного знака редактировалось аналогичными образами.

Стоит отметить, что в соответствии с требованиями, предъявляемыми к картографической продукции, пояснительные надписи должны быть оформлены в строго установленном стиле (рис.2.3). Таким образом, в зависимости от назначения надписи для нее выбирался шрифт и размер.

Рисунок 2.3 – Шрифты, используемые при создании ЦММ

Результат данного этапа работы представлен на рисунке 2.4.

9

Рисунок 2.4 –Цифровая модель ситуации

10

Рисунок 3.1 – Окно «Создание ЦММ»

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

После выбора объектов, программа строила треугольники ЦМР (рис. 3.2).

11 статья

Рисунок 3.2 – Треугольники ЦМР

12

Рисунок 3.3 – Окно «Выбор рабочей ЦММ»

13

Рисунок 3.4 – Окно «Создать горизонтали»

14

Рисунок 3.5 – Окно «Оформить горизонтали»

15

Рисунок 3.6 – Цифровая модель местности

Выводы

  1. Произведен импорт точек из текстового файла.
  2. Были созданы необходимые слои, отрисована ситуация (ЦМС), все объекты были оформлены в соответствии с требованиями и классификатором условных знаков.
  3. Были построены треугольники ЦМР и горизонтали, которые были оформлены и отредактированы.

Результатом данной работы является цифровая модель местности храма Приход Святой равноапостольной княгини Ольги, расположенного по адресу: г. Нижний Новгород, ул. Верхнепечерская, д. 8А.

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