Масштаб размеров в AutoCAD. Аннотативность
Как масштабировать размеры в Автокаде? При образмеривании объекта может показаться, что в Автокаде не ставятся размеры. Т.е. вроде как выносная линия появляется, но само значение размера отсутствует (см. рис. 1). Рассмотрим, как в Автокаде поставить размеры нужного масштаба.
Рис. 1. При простановке размеры в Автокаде могут отображаться некорректно.
ПРИМЕЧАНИЕ: Если вы до этого не работали с размерами, то сначала ознакомьтесь со статей, в которой рассматривается, как ставить размеры в Автокаде.
Как быстро настроить масштаб размеров AutoCAD?
Если в Автокаде маленькие размеры на чертеже, то самый быстрый способ исправить это – вызвать панель «Свойства» (Ctrl+1) и изменить два параметра: высота текста и величина стрелок. При этом сам размер должен быть выделен. При увеличении числовых значений в соответствующих ячейках размеры на чертеже будут отображаться корректно (см. рис. 2).

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

Рис. 3. Редактирование Размерного стиля.
ПРИМЕЧАНИЕ: На вкладке «Основные единицы» можно управлять масштабом измерений (см. рис. 4). Поэтому при работе со сторонними чертежами проверяйте это значение.

Рис. 4. Масштаб измерений для размерного текста в AutoCAD.
Аннотативные размеры в Автокаде
Аннотативность – это свойство объекта менять свои размеры при изменении масштаба аннотаций. Свойство аннотативности нужно присвоить объектам. Это можно сделать для текста, размеров, мультивыносок и блоков.
Чтобы присвоить аннотативность размерному стилю, необходимо перейти в Диспетчер размерных стилей, выбрать «Редактировать» и во вкладке «Размещение» установить галочку напротив «Аннотативный» (см. рис. 5).

Рис. 5. Аннотативные размеры в Автокаде.
Прежде чем задавать масштаб аннотаций, определитесь, в каком масштабе объект будет на Листе (см. статью «Изменение масштаба в Автокаде»). Аннотативные размеры на листе отображаются только в том масштабе, который им присвоен.
Данный материал сугубо практический. Полностью тему, посвященную аннотативным размерам, я разбираю в видеокурсе «Оформление проектов AutoCAD по ГОСТ». В нем я показываю, как присвоить масштаб аннотациям, разбираю основные инструменты для работы с ними и рассматриваю несколько примеров на практике.
Подведем итог. Теперь вы знаете, как уменьшить или увеличить размер в Автокаде. Достаточно воспользоваться настройкой Размерного стиля. Что касается свойств аннотативности, то более подробную информацию по работе с аннотативными размерами можно найти в курсе «Оформление проектов AutoCAD по ГОСТ». Также вы можете ознакомиться с видеоуроком «Аннотативные размеры в AutoCAD».
Освойте профессию проектировщика
Научитесь быстрому черчению, освоите прикладное 3D, автоматизируете создание ведомостей и спецификаций.
Как сделать так 1 в autocad

О нас
Рабочии моменты
Рабочие заметки
Autocad пропало диалоговое окно сохранить
Autocad пропало диалоговое окно сохранить
Autocad \ Civil 2009 хотя думаю относится и к другим продуктам Autodesk при открытии\сохранении документа вместо диалогового окна появляется строка.
Для исправления следует ввести команду filedia и нажать Enter. Результатом выполнения команды будет целое число «0» или «1». Следующим шагом следует ввести команду filedia с числом обратным результату. То есть если был «0», то следует вводить «1». Нажать Enter и радоваться жизни.
Подробное описание
Доступна в R12-2008
Из справки 2007ру:
Подавляет отображение диалоговых окон навигации к файлу.
Тип: целый
Сохранен в: реестр
Начальное значение: 1
0 — Диалоговые окна не отображаются. Но в этом режиме диалоговое окно можно вызвать принудительно, если ввести тильду (~) в ответ на запрос команды. То же справедливо для функций AutoLISP и ADS.
1 — Отображает диалоговые окна. Если пакетный файл или программа AutoLISP/ObjectARX™ активны, на экран выводится обычный запрос.
С некоторыми командами можно работать как в командной строке, так в диалоговых окнах. Это полезно при использовании сценариев.
Чтобы выполнить команду не из диалога, а из командной строки, надо ввести дефис (-) перед именем команды (для многих команд). Например, команда layer (слой) в командной строке откроет диалог «Диспетчер свойств слоев».
Но команда -layer (-слой) выведет тот же набор параметров и опций в командной строке.
Параметры, отображаемые в диалоговом окне, могут незначительно отличаться от выводимых в командной строке.
Подавление вывода диалоговых окон полезно для обеспечения совместимости с более ранними версиями AutoCAD и для использования пакетных файлов.
Следующие системные переменные оказывают влияние на открытие диалоговых окон:
ATTDIA указывает, должно ли использоваться диалоговое окно для ввода атрибутов команды ВСТАВКА.
CMDNAMES задаёт вывод имён (английских) текущей активной команды и прозрачной команды.
EXPERT указывает, нужно ли выводить диалоговые окна с предупреждениями.
FILEDIA управляет появлением диалоговых окон для чтения и записи файлов. Например, если FILEDIA=1, при выполнении команды СОХРАН В открывается диалоговое окно «Сохранение чертежа». Если FILEDIA=0, команда СОХРАН В будет выполнена после выбора нужной опции в командной строке.
Переменные FILEDIA и EXPERT полезны при выполнении команд с помощью сценариев.
Дополнения (мной не проверены) для 2006 и старше:
Если нажать CTRL+0, то ком. строки не будет. Это полезно тем, кто использует дин ввод. В этом случае, набираемое на клавиатуре слово Filedia появится на курсоре, а не в ком. строке.
Интересная особенность (документированная?), если даже не убирать ком. строку, но включить дин. ввод, приглашения Filedia в ком. строке НЕ появится (пока не нажать Enter).
Подскажите по управлению автокадом?
Знаю задам наверно нууу очень очень глупый вопрос:
1. Как двигаться по листу чертежа мышкой — то есть влево впарво вверх вниз наискосок?
В 3D max Просто зажал кнопку и передвигаешь рабочую область, рисунок, а здесь ну не допирает как это 0.о
И сразу второй вопрос
2. В 2012 надо сделать простой чертежик квартиры: выбираю инструмент стена — нужна длина там 100, и эти 100 он отмеряет не изнутри пириметра. толщина стен там скажем 10. и вот:
Внутри периметра получается что стена меньше там 94. Как изменить это?
На сайте c 08.05.2008
Сообщений: 1593
страна Грёз
1. Как двигаться по листу чертежа мышкой — то есть влево впарво вверх вниз наискосок?
В 3D max Просто зажал кнопку и передвигаешь рабочую область, рисунок, а здесь ну не допирает как это 0.о
средняя кнопка мыши(колёсико)
2. В 2012 надо сделать простой чертежик квартиры: выбираю инструмент стена — нужна длина там 100, и эти 100 он отмеряет не изнутри пириметра. толщина стен там скажем 10. и вот:
Внутри периметра получается что стена меньше там 94. Как изменить это?
нифига не понял.
Репутация: 0
На сайте c 22.06.2009
Сообщений: 18
Средняя кнопка — прокрутка вперед назад — приближает отдаляет вид. А если зажать то ни чего не происходит. А как двигаться по рисунку?
А второе — вот на скрине видно — мне нужно 2100 стена. И когда прарамметры задаю (инструмент «стена" он эти 2100 берет как бы начиная на пересечение углов стен по центрально линии, а не по внутренней.
На сайте c 18.02.2008
Сообщений: 167
Krasnodar
двойное нажатие левой кнопкой мыши по центру листа (вход в модель) чтобы двигать масштабировать и др. а двойное нажатие за пределами листа то есть по серому фону это выход.
Репутация: 0
На сайте c 22.06.2009
Сообщений: 18
двойное нажатие левой кнопкой мыши по центру листа (вход в модель) чтобы двигать масштабировать и др. а двойное нажатие за пределами листа то есть по серому фону это выход.
Что то непонятно.
Ну вот постараюсь сказать по другому — мне нужно зажать лист и двигать его, еще рука такая появляется вместо мышки. как?
На сайте c 08.05.2008
Сообщений: 1593
страна Грёз
А если зажать то ни чего не происходит
ты что издеваешться? изи ты автокад перенастроить успел? ПО УМОЛЧАНИЮ: нажать(НЕ КРУТИТЬ ИМЕННО НАЖАТЬ!) на колёсико ОДИН РАЗ, появится рука вместо курсора и ПОДВИГАЙ МЫШУ.
Репутация: 0
На сайте c 22.06.2009
Сообщений: 18
Серьезно -_-
Сама в шоке, после установки первый раз открыла его и вот НЕТ РУКИ НЕТУ
Кто знает где настройки?
На сайте c 22.09.2011
Сообщений: 631
1. Набрать в командной строке MBUTTONPAN + ввод. Если — 0, то набрать 1 +ввод.
2. А точно чистый AutoCAD? А не архитектчурал либо Ревит? Вообще, по идее, в опциях команды должен присутствовать пункт «выравнивание» — Justify. Вот там и указывать нужно чего от программы хотите.
P.S. Еще раз убеждаюсь в том, что думая облегчить себе жизнь локализированой версией, люди получают обратный результат!
Репутация: 0
На сайте c 22.06.2009
Сообщений: 18
Ну с привязками ладно туплю — размер стены видимо тот что задаю, просто он показывает по привязкам его -_-
Репутация: 0
На сайте c 22.06.2009
Сообщений: 18
1. Набрать в командной строке MBUTTONPAN + ввод. Если — 0, то набрать 1 +ввод.
2. А точно чистый AutoCAD? А не архитектчурал либо Ревит? Вообще, по идее, в опциях команды должен присутствовать пункт «выравнивание» — Justify. Вот там и указывать нужно чего от программы хотите.
Автокад архитектуре 12 . Только поставила. Ну на версиях же не написано какие из них лучше) Все очень долго не хотели уходить с Макса 2009.
Ввела команду, там 1.
Репутация: 0
На сайте c 22.06.2009
Сообщений: 18
Всем спасибо) руку нашла! Вид — навигация — и там рука вкл)
На сайте c 22.09.2011
Сообщений: 631
Ввела команду, там 1.
Так где же РУКУ найти?
Ну тогда — громкий ужас. (Если 1)
Рука должна выйти из подполья (хотя я уже ни в чем не уверен) после следующего колдовства:
-ПАН + ввод
либо:
_.pan + ввод
На сайте c 12.01.2007
Сообщений: 534
Омск
черти всё линиями и всё. нафига эти стены
На сайте c 11.08.2011
Сообщений: 208
Здравствуйте, подскажите пожалуйста-как быть? мне надо сделать план комнаты.3000 на 5000 мм.я взяда масштаб 1:100. построили прямоугольник 30на 50.потом все начертила что нужно.теперь вывожу на лист. печатаю. должно же быть так. что на самом а4 если приложить линейку должен быть этот прямоугольник(комната) размером 3на5 см. а у меня не так.как этого добиться. а еще хочу узнать как сделать чтоб прямоугольник , когда измеряю линейкой был 6 на 10см. скажите пожалуйста
На сайте c 03.11.2009
Сообщений: 50
Мда. Открываем кад устанавливаем единицы чертежа, потом все чертим так как надо. Если комната 5000 мм. на 3000 мм. то так и чертим и не парим мозги. Потом выбираем печать и устанавливаем масштаб печати. И будет вам счастье.
На сайте c 11.08.2011
Сообщений: 208
да.но когда нажимаю вписать то уже не подходит под размер листа А4.
На сайте c 17.12.2009
Сообщений: 8042
РЕГИОН 13
да.но когда нажимаю вписать то уже не подходит под размер листа А4.
но нужно представлять, какой объем чертежа и в каком масштабе впишется в тот или иной формат. Лучше заранее организовывать лист альбома, предполагая как и в каком качестве это будет напечатано.
На сайте c 08.05.2008
Сообщений: 1593
страна Грёз
elise070
возьмите лист A3? и вообще при необходимости допускаются «дикие» форматы
у аВтоКада нет границ рабочего поля, поэтому нет смысла четить в каком-то масштабе. обычно всё чериться 1:1. нужный масштаб получают на выходе
На сайте c 13.08.2008
Сообщений: 294
Rostangeles
elise070
возьмите лист A3? и вообще при необходимости допускаются «дикие» форматы
у аВтоКада нет границ рабочего поля, поэтому нет смысла четить в каком-то масштабе. обычно всё чериться 1:1. нужный масштаб получают на выходе
черти всё линиями и всё. нафига эти стены
Блин как раздражают все эти умники, сами по сути ничего не знают но очень умно пишут на форумах.
Обращаюсь к автору темы, по поводу черчения следует делать так:
1. чертить в масштаба 1:1
2. Слоями распределять объекты по их типам (стены, оси, двери и т.д.)
3. Использовать Анноатации и Аннотативность для масштабов.
4. Используй не ОТРЕЗКИ! а инструменты полелиния, мильтилиния, блоки и т.д. если у тебя Архитектурный AutoCAD то естественно все делается стенами окнами и т.д.
5. Для формирования чертежей используй листы (виды, штампы и т.д.), их и печатай.
и главное если научишься работать как большинство пользователе форума (выше перечисленные), то будешь терять не только массу времени на создание и редактирование, но и получать очень не качественные чертежи с ошибками и недоделками.
я думаю стоит потерять немного времени и посмотреть просто хотя бы азы, по работе с интерфейсом и примитивами. Если что можешб глянуть тут .
На сайте c 08.05.2008
Сообщений: 1593
страна Грёз
Блин как раздражают все эти умники, сами по сути ничего не знают но очень умно пишут на форумах.
к чему это? если раздражает Лечись, по остальным вопросам в личку
5. Для формирования чертежей используй листы (виды, штампы и т.д.), их и печатай.
и главное если научишься работать как большинство пользователе форума (выше перечисленные), то будешь терять не только массу времени на создание и редактирование, но и получать очень не качественные чертежи с ошибками и недоделками.
я думаю стоит потерять немного времени и посмотреть просто хотя бы азы, по работе с интерфейсом и примитивами. Если что можешб
качество чертежей завитит от знания черчения в какой проге это сделано не важно. Формирование чертежей на листах довольно спорное занятие. спорить не буду. здесь тока выскочки с высоким самомнением любят спорить. исхожу из более десятилетнего опыта работы с чертежами в автокаде
Создание плагинов для AutoCAD с помощью .NET API (часть 1 – первые шаги)
Решил рассказать о своем опыте работы с AutoCAD. Может быть, кому-то это поможет – ну или хотя бы интересным покажется.
public static string disclaimer = "Автор не является профессиональным разработчиком и не обладает глубокими знаниями AutoCAD. Этот пост – просто небольшой рассказ о начальном этапе создания плагина.";
Предыстория
Началось все достаточно просто: в очередной раз почувствовав острую нехватку денег, я решил, что пора бы уже начать их где-нибудь разыскивать. И вот после пары недель поиска на «Фрилансим» обнаружилась вакансия разработчика для создания программы, взаимодействующей с AutoCAD.
Скажу сразу: до того дня общаться с AutoCAD мне не доводилось. Однако объявление содержало в себе фразу «Опыт работы не требуется», которая наполнила мою душу надеждой. Я связался с разместившим вакансию человеком и получил тестовое задание.
Для пробы предлагалось создать на чертеже пару объектов, а также вывести текст. Несколько дней я искал информацию об API и пытался подружиться с непривычной программой. В конце концов фигуры были нарисованы, текст выведен, а тестовое задание отправлено на проверку. И через несколько дней я неожиданно узнал, что принят! Чудеса, да и только.
В следующих абзацах – мои впечатления, синяки и шишки, мысли и советы (возможно, вредные). Разработка велась под AutoCAD 2010, в качестве IDE использовалась верная Visual Studio 2013 Express. Язык разработки – C#.
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. Создание проекта библиотеки
Первые шаги вполне внятно описаны здесь. Владеющие английским могут попробовать зайти еще и сюда. Правда, в материалах по последней ссылке упор сделан на Visual Basic, плюс нужно будет установить «AutoCAD .NET Wizard» – шаблон проекта для создания плагинов под AutoCAD. Люди знающие говорят, что этот шаблон сильно упрощает жизнь; я же никогда им не пользовался, поэтому скромно промолчу.
Вкратце продублирую основные этапы:
2.1. Создать проект «Библиотека классов» («Class Library»)
Если плагин предназначен для старой версии AutoCAD, то целесообразно сразу же задать в свойствах проекта версию .NET, которую будем использовать. Например, AutoCAD 2010 не может загружать плагины, созданные с использованием .NET Framework 4, поэтому я в качестве используемой версии указываю .NET Framework 3.5.
При понижении версии .NET Framework, используемой в проекте, могут появляться сообщения об ошибках. В моем случае Visual Studio ругается на отсутствие сборки «Microsoft.CSharp» – ее просто нужно исключить из ссылок (References).
2.2. Добавить ссылки на необходимые библиотеки AutoCAD .NET API
На этом пункте стоит остановиться чуть подробнее. AutoCAD .NET API включает в себя достаточно большое количество классов, которые разнесены по разным пространствам имен (namespaces). В свою очередь, эти пространства имен разнесены по нескольким контейнерам (проще говоря, DLL-файлам).
Эти DLL-файлы находятся в папке с именем inc- . Так, в моем случае я добавляю ссылки на библиотеки из папки C:\ObjectARX 2010\inc-win32.
у меня дома установлена 32-разрядная ОС, у заказчика – 64-разрядная. Пока серьезных проблем с совместимостью не возникало. Но однажды я все же напоролся на то, что у меня функция возвращала Int32 , а у заказчика – Int64 . Линковщик ОЧЕНЬ расстраивался. Нужно иметь эту особенность в виду.
Первое знакомство с API у меня заключалось в лихорадочных попытках скомпилировать хоть какой-нибудь из примеров, щедро разбросанных по Сети. И что сλка характерно, компилироваться они упорно не хотели, ругаясь на неизвестные пространства имен и классы. В попытках собрать свой первый проект я с горя включил в него чуть ли не все DLL-файлы, которые шли с ObjectARX. Плохой способ – так делать не надо.
А как надо?
Ну, это вопрос не ко мне. Я только могу сказать, что в начале примеров обычно идет перечисление используемых пространств имен – скажем, так:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using Autodesk.AutoCAD.Runtime; using Autodesk.Windows;
То, что начинается со слова «Autodesk», – это и есть те дроиды пространства имен, которые мы ищем. Теперь осталось разыскать контейнеры, которые их содержат. Исчерпывающего перечня сопоставлений я найти не смог, поэтому все проверялось методом научного тыка. Если есть более правильный способ, было бы интересно его узнать…
А пока – вот список DLL-файлов, которые я использую в проекте, и содержащихся в них пространств имен:
- Autodesk.AutoCAD.ApplicationServices
- Autodesk.AutoCAD.EditorInput
- Autodesk.AutoCAD.GraphicsSystem
- Autodesk.AutoCAD.Internal
- Autodesk.AutoCAD.Internal.Calculator
- Autodesk.AutoCAD.Internal.DatabaseServices
- Autodesk.AutoCAD.Internal.Forms
- Autodesk.AutoCAD.Internal.PreviousInput
- Autodesk.AutoCAD.Internal.PropertyInspector
- Autodesk.AutoCAD.Internal.Reactors
- Autodesk.AutoCAD.Internal.Windows
- Autodesk.AutoCAD.PlottingServices
- Autodesk.AutoCAD.Publishing
- Autodesk.AutoCAD.Runtime
- Autodesk.AutoCAD.Windows
- Autodesk.AutoCAD.Windows.Data
- Autodesk.AutoCAD.Windows.ToolPalette
- Autodesk.AutoCAD.Colors
- Autodesk.AutoCAD.ComponentModel
- Autodesk.AutoCAD.DatabaseServices
- Autodesk.AutoCAD.DatabaseServices.Filters
- Autodesk.AutoCAD.Geometry
- Autodesk.AutoCAD.GraphicsInterface
- Autodesk.AutoCAD.GraphicsSystem
- Autodesk.AutoCAD.LayerManager
- Autodesk.AutoCAD.Runtime
- Autodesk.Internal.InfoCenter
- Autodesk.Internal.Windows
- Autodesk.Internal.Windows.ToolBars
- Autodesk.Private.InfoCenter
- Autodesk.Private.SubAwareService
- Autodesk.Private.WebSearchService
- Autodesk.Private.Windows
- Autodesk.Private.Windows.ToolBars
- Autodesk.Private.WsCommCntrLib
- Autodesk.Windows
- Autodesk.Windows.Common.Utilities
- Autodesk.Windows.ToolBars
- Autodesk.AutoCAD.Customization
имена многих классов AutoCAD .NET API совпадают с именами стандартных классов .NET, что не очень удобно. Например, если обратиться в коде к классу Application , то Visual Studio выругается на неоднозначность этого определения: класс с таким именем есть как в пространстве имен System.Windows , так и в пространстве имен Autodesk.AutoCAD.ApplicationServices . Чтобы не писать каждый раз полное имя, можно добавить в начало файла строку
using acadApp = Autodesk.AutoCAD.ApplicationServices.Application;
Теперь в любом месте этого файла можно вместо Autodesk.AutoCAD.ApplicationServices.Application писать acadApp .
Есть смысл провернуть такую операцию с наиболее часто употребляемыми классами. Непременно так делайте, код будет компактнее и понятнее. Цинизм данного совета заключается в том, что к тому моменту, когда вы наконец поймете, какие же классы являются у вас наиболее часто употребляемыми, что-то менять будет уже сильно лень.
Важный момент: обязательно запретите копирование библиотек AutoCAD .NET API в каталог сборки при построении проекта! Для этого найдите в свойствах каждой добавленной ссылки параметр CopyLocal и установите его в False .
2.3. Написать код плагина
using System.Windows.Forms; using Autodesk.AutoCAD.Runtime; namespace MyAutoCADDll < public class Commands : IExtensionApplication < // функция инициализации (выполняется при загрузке плагина) public void Initialize() < MessageBox.Show("Hello!"); >// функция, выполняемая при выгрузке плагина public void Terminate() < MessageBox.Show("Goodbye!"); >// эта функция будет вызываться при выполнении в AutoCAD команды «TestCommand» [CommandMethod("TestCommand")] public void MyCommand() < MessageBox.Show("Habr!"); >> >
Все очень просто. Вначале мы указываем необходимые пространства имен. Нам потребуются два.
В первом пространстве имен ( System.Windows.Forms ) хранится описание класса MessageBox , с помощью которого мы будем выводить сообщения. Чтобы сделать его доступным, необходимо добавить ссылку на одноименную сборку .NET.
Во втором пространстве имен ( Autodesk.AutoCAD.Runtime ) определены интерфейс IExtensionApplication и атрибут CommandMethod . Причем описание IExtensionApplication находится в файле AcDBMgd.dll, а описание CommandMethod – в файле AcMgd.dll, поэтому придется добавить ссылки на обе эти библиотеки.
Таким образом, всего необходимо добавить три ссылки:
UPD. 09.04.2018. Важное дополнение от lasteran: В новых версиях (предположительно начиная с AutoCAD 2013) класс CommandMethod содержится не в AcDBMgd.dll, а в AcCoreMgd.dll, так что придётся добавить ссылку ещё и на эту библиотеку. Учтите это, если работаете с новой версией!
Затем мы объявляем класс Commands . Именно он и будет «отправной точкой» плагина. Наш класс унаследован от интерфейса IExtensionApplication , поэтому в нем могут быть реализованы методы Initialize и Terminate . Первый из них автоматически выполняется при загрузке плагина, второй – при выгрузке.
AutoCAD не предоставляет разработчику возможность выгрузить плагин после того, как он будет загружен. Поэтому реально метод Terminate будет вызываться только в одном случае – при закрытии самого AutoCAD.
Почитать поподробнее про методы Initialize и Terminate можно тут (rus) и там (англ.).
Наконец, мы объявляем функцию MyCommand , которая будет реализовывать команду AutoCAD. Она обязательно должна ничего не принимать на вход и ничего не возвращать на выходе (не знаю, откуда у меня взялось это убеждение, но оно есть). Внутри этой функции можно делать все, что заблагорассудится (в пределах разумного, конечно), причем есть возможность работать как с AutoCAD .NET API, так и со стандартными классами .NET. Например, можно создать обычную форму Windows с полями ввода, отобразить ее на экране с помощью ShowModal() , а затем на основе введенных пользователем данных внести изменения в открытый в AutoCAD чертеж.
Чтобы «превратить» созданный метод в команду AutoCAD, применяется атрибут CommandMethod . В скобках после него указывается имя создаваемой команды, которое можно будет использовать непосредственно в среде AutoCAD.
После сборки этого проекта у нас получится готовый к употреблению плагин.
2.4. Загрузить созданный плагин
Нужно запустить AutoCAD и выполнить команду «NETLOAD»:

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

После этого плагин будет загружен в AutoCAD. Мы должны увидеть первое сообщение:

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

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

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

Работает. Теперь можно закрывать AutoCAD.
А как же…
Да – внимательный читатель, конечно, заметит, что при закрытии AutoCAD мы почему-то не увидим сообщения «Goodbye». Как уже говорилось выше, внутри функции «Terminate» можно сделать далеко не все. Но с ее помощью вполне получится, например, создать файл при закрытии AutoCAD.
2.5. Отладить плагин (при необходимости)
Процедура запуска плагина для отладки очень хорошо расписана в этом посте Tepliuk.
Финал
- http://adn-cis.org/forum/ (rus) – форум Сообщества программистов Autodesk в СНГ. Один из лучших русскоязычных ресурсов среди всех мною встреченных в 2013-2014 годах. Сам я туда прихожу за советом, когда совсем припекает, – и не было пока случая, чтобы мне не помогли. Хотя я, конечно, стараюсь особо не злоупотреблять.
- http://forums.autodesk.com/t5/russkoe-soobshchestvo/bd-p/392 (rus) – официальные форумы Autodesk – раздел русского сообщества. Можно позадавать вопросы.
- http://forums.autodesk.com/t5/net/bd-p/152 (англ.) – официальные форумы Autodesk – раздел, посвященный .NET API. Тоже можно задать вопрос – правда, его могут и проигнорировать.
- http://through-the-interface.typepad.com (англ.) – блог, который ведет Kean Walmsley, один из ведущих экспертов в разработке под AutoCAD. Ценнейший ресурс. Можно попробовать что-нибудь спросить у самого хозяина блога – и даже получить ответ, если тот будет в настроении. Впрочем, неинтересные (и простые) вопросы Kean часто игнорирует – или же предлагает вопрошающему поискать решение на официальном форуме
(см. рис. 1). - http://adndevblog.typepad.com (англ.) – коллективный блог разработчиков из ADN . Порой бывает полезен.
- http://www.theswamp.org/index.php (англ.) – еще один форум со множеством примеров и решений.
- работа с лентой (Ribbon);
- работа со слоями;
- работа с динамическими блоками;
- реализация пользовательского ввода;
- взаимодействие плагина с внешним приложением.
