Как получить the world в autocad
Более сорока лет назад разработан и внедрен в использование для выполнения целей искусственного интеллекта язык программирования LISP (ЛИСП), позднее ставший популярным среди пользователей ПО AutoCAD. Он создан для символьных вычислений. С течением времени был преобразован, чтобы соответствовать новым потребностям ИИ.
Начинающим пользователям, изучающим его архитектуру, рекомендуется рассматривать его в качестве формальной знаковой системы.
Это imperative language (императивный), действия которого описывают выполнение алгоритма, отличается от других, декларативных, предполагающих определение ограничений и соотношений в предметной сфере поставленной цели. По сравнению с другими подобными разработками С++ и FORTRAN, ЛИСП наделен большей функциональностью. Его популярность обусловлена большими возможностями для программирования в сочетании с мощным набором:
Это средства построения данных структур обозначения высокого уровня.
Конструкция
LISP синтаксис и семантика, разработанные программистами, обусловлены теорией рекурсивных функций. Символьные, s-выражения, являются элементами предложений, сочетаний. В них представлены софты и файлы. Они могут отображаться в виде списка (list) или атомов (atom).
Во втором варианте включены числовые комбинации, цифры, буквы латинского алфавита и знаки: *, -, +, /,@, %, , &, _, ,
Несколько поочередно идущих абзацев составляют каталог. Они обязательно разделяются пробелами и замыкаются в скобки.
Составляющими одних перечислений могут служить другие, более мелкие, подпункты. Символьные структуры разной формы и уровня сложности можно создавать благодаря произвольной углубленности и вложенности. Существует пустая строка, она обозначается – () и называется «nill». При возведении информационной структуры, а также при способе управления ею, она играет особенную роль, представляясь одновременно и атомом, и списком.
Язык LISP относится к языкам программирования, которые используются для создания дополнительных загрузок к ПО по проектированию и моделированию. Для их использования необязательно хорошо разбираться в компьютере на уровне профессионала.
После изучения основных принципов работы в таких пакетах, как AutoCAD или ZWCAD 2018 Professional, который является аналогом ACAD, появляется необходимость упростить выполнение длительных рутинных операций или полностью избавиться от них. Для этого дополнения и нужны. Если они написаны на ЛИСПе, скрипты называются LISP-приложения. Каждое из них представляет собой текстовый файл с определенным встроенным кодом для выполнения команды и подсказками от производителя. Определитесь с нужными для работы свойствами, выбирайте надстройку, скачивайте ее и загружайте в «ЗВКАД» или другую платформу. Рассмотрим возможности одного такого модуля на образце скрипта «Выравнивание текстов».
Примеры программ на ЛИСПе (lisp) для Автокада
Приложение форматирует страницу горизонтально и вертикально по заданной точке. Это полезная возможность, непредусмотренная в основном ПО. Файл с расширением *.lsp открывается двумя кликами левой кнопки мыши. В окне появится «блокнот».
Чтобы сгладить и уподобить несколько напечатанных строк в готовом чертеже, обычно приходится выполнять однообразные действия много раз. Со скачанным скриптом это выполняется одной командой (в примере указана Z-TEXT-ALIGN).
Подобные дополнения полезны на любом этапе проектирования. Их существует очень много, но совсем необязательно устанавливать все. Перед скачиванием, посмотрите, подходит ли скрипт для выполнения нужных конкретных задач. Для каждой области написаны подходящие:
- для инженерного проектирования в строительстве;
- коммунальных структур, занимающихся планированием и укладкой сетей;
- ЛИСПы Автокада для геодезистов.
Как загрузить вспомогательную часть в ПО
После выбора нужного вложения возникает надобность его внедрения. Если речь идет об ACAD, для него доступны файлы с такими расширениями:
Помимо файлов lisp также поддерживается загрузка форматов:
На примере того же модуля для выравнивания текста рассмотрим, как подгрузить в основную программу его файл.
Обратите внимание: при скачивании архивированного лисп-приложения, распакуйте его, чтобы на ПК фрагмент сохранился перед загрузкой.
Этапы установки LISP (их можно отследить по истории):
- Перейдите по пути «Управление» – «Приложения» – «Загрузить».
- В командной строке основного ПО введите «_appload».
- В окне «Загрузка/Выгрузка» найдите файл с одним из вышеперечисленных расширений и кликните «Загрузить».
- Процедура завершена. Переходите к тестированию и написанию кода.
Важно: при каждом запуске базовой утилиты нажмите кнопку «Добавить» в разделе «Добавить в автозагрузку». Если этого не сделать, то будет выполнен единоразовый вход в модуль, который не сохраняется с закрытием софта.
Команды LISP-программы для Автокада (Autocad)
В главном ПО их посмотреть невозможно, поэтому нужно обратиться к исходному файлу дополнения. Он открывается в «Блокноте», вверху которого находится название команды для запуска лиспа и вся необходимая информация для работы от его создателей. В примере указано z-text-align, что и нужно ввести в командную строку, чтобы вызвать нужный инструмент.
После этого, следите за указаниями вложения. Обычно такие скрипты интуитивно понятны и не требуют дополнительных разъяснений относительно дальнейших действий пользователя.
Обратите внимание: в случае отсутствия подобной подсказки, ищите ее в коде – в строке «defun c: z-text-align».
Вложения, написанные на диалекте, разработаны только для внедрения в полную версию ACAD и в схожие программы, например, ZWCAD 2018 Professional, NanoCAD, они не подгружаются. Для них существуют другие приложения.
Список функций лисп (LISP) – языка программирования для Autocad
С оператора defun начинается определение задач. С его помощью создают опции с переменными. Зависимо от назначения, каждая из них будет действовать по-разному.
Варианты, производимые этим оператором:
- с префиксом «С:» (circle) – команда на выполнение s-выражения в сфере деятельности;
- без приставки – их вычисления используются в теле программы-дополнения.
В каждом модуле, написанном этим диалектом, есть встроенный интерпретатор. Он выполняет вычисление введенных данных и возвращает их в программную среду для дальнейшей обработки. Готовые наработки передаются на высший уровень системы или сохраняются в переменной. Это значит, что скрипт получает информацию, когда ее вводит пользователь, или при самостоятельном выборе из существующей. Он сохраняет ее в переменную, и производит вычисления, включающие неизвестное значение и функцию.
Есть участок кода: (setq gh (+ 4 5)), где setq – одна из прописанных единиц. Она объявляет вариацию gh. В скобках знак + тоже опция, числа 4 и 5 – данные, которые были введены в систему. Значение выражения в gh сохранится, то есть 4+5 =9, gh=9. При заданном условии (setqhj (* gh 2), в результат hj сохраняется 18 – gh = 9, 9 умножить на 2 равно 18.
Синтаксис отличен от привычной большинству математики. Его порядок представлен сначала задачей, а потом переменными. В школьном счете это выглядит, как (3+2), а здесь (+ 3 2), однако, смысл одинаковый.
Список функций lisp, работа которых является основой дополнительных приложений:
- для преобразования данных (float);
- вычислений (fix);
- организации циклов (if);
- логические (and, nul,=, , or и другие);
- арифметические (+, -,
При помощи этого программного диалекта создают новые уравнения 3-х классов:
Язык, который не позволяет этого – бесполезен. Часто используется LISP в геодезии, инженерии и строительстве, применяя надстройку «Автокада».
С помощью ЛИСП изучают рекурсивную функцию, используя такую возможность, как «трассировка». Это основной и весьма эффективный способ организации вычислений, повторяющихся несколько раз.
На входе в эту ячейку печатают значения входящих параметров, а на выходе появляются результаты, полученные в ходе операции. Для этого есть специальная опция класса FSURB, называемая TRACE. При ее успешном завершении, возвращается наименование задачи. При неудачном – возврат «NIil».
Пример включения рассматриваемой возможности SUMLIST и произведения математических манипуляций, суммирования элементов списка (1 2 3 4 5):
Обратите внимание на то, что ответ на поставленную задачку ведется в ином порядке – от последнего к первому.
Используемые только для AutoCAD (Автокад) LISP программы, устанавливаются исключительно на полноценную версию и не подходят по списку функций и команд для работы в пакетах типа Autodesk LT, Electrical, Mechanical. Исключений немного, ими выступают специальные разработки типа LT Extender, с типом расширения *.arx, *.lsp.
Если имеются растры с файлами привязки .TAB (MapInfo, ТРАНСФОРМ), .jgw или .tfw , которые необходимо подгрузить в Автокад, то это приложение в помощь Вам. С ним нет необходимости подгружать, масштабировать перемещать и разворачивать каждый растр по отдельности, а достаточно установить данное приложение и выбрать необходимые файлы для загрузки.
Иногда будет удобно воспользоваться и тем, что данное приложение помимо подгрузки растров, может сформировать файлы привязки .TAB и tfw уже подгруженных растров.
Загрузка растра с файлом привязки в AutoCAD. Установка
1. Качаем архив с VLX файла для загрузки растра в AutoCAD здесь.
2. Распаковываем архив и сохраняем файл в папочку где хранятся все наши приложения, а если такой еще нет например в D:MyLisp.
3. Запускаем AutoCAD и устанавливаем VLX аналогично установке Lisp стандартным способом. Если не знаем как, читаем здесь.
4. Ну все можно пользоваться, набираем в командной строке:
5. Ну и для вывода команд с кнопки, создаем их стандартным способом и в поле макрос пишем следующее:
Полезно. Если не знаем как создать свою кнопку читаем здесь.
Примечание: Перед загрузкой растра, убедитесь что он не был загружен раннее, в противном случаи удалите его через палитру "Внешние ссылки" вызвав из пункта меню "Вставка" или набрав в командной строке _externalreferences.
Установка приложения для подгрузки растра с файлом привязки в Автокад. Видеоурок
Видео наглядно демострирует как подгрузить в координаты подложки имеющие файлы .TAB, .jgw или .tfw.
Ранее мы уже рассмотрели, что из себя представляет LISP-приложения для AutoCAD. Теперь давайте рассмотрим, как его внедрить в работу.
Для Автокада доступны приложения со следующим расширением файла: *.arx, *.crx, *.lsp, *.dvb, *.dbx, *.vlx, *.fas. Рассмотрим на примере ЛИСПа, который позволяет выравнивать текст относительно указанной точки по оси X или Y (скачать файл «Выравнивание текста .lsp»).
Как установить файл *.lsp в Автокад?
1. Перейдите во вкладку «Управление» и на панели «Приложения» выберите команду «Загрузить приложение». Можно воспользоваться командной строй в Автокаде и ввести «_appload».
2. Откроется диалоговое окно «Загрузка/выгрузка приложений», через которое вам нужно найти подходящий файл с расширением *.lsp или др, которое было перечислено выше.
3. После проделанных действий нажмите кнопку «Загрузить».
Как запустить команду приложения lisp?
В AutoCAD lisp команды посмотреть нельзя. Следует отталкиваться от исходного файла, который был загружен в программу.
Ранее мы говорили, что файл скрипта можно открыть через обычный «Блокнот». Как правило, в самом верху этого текстового документа разработчики оставляют всю необходимую информацию для работы, в том числе и название команды, которая будет запускать ЛИСП. В данном примере это «z-text-align», поэтому в командную строку нужно вводить именно такой запрос для вызова инструмента.
Далее следуйте указаниям командной строки и пошагово выполняйте запросы установленного скрипта. Как правило, все достаточно интуитивно понятно.
Как подгрузить lisp в Автокад LT?
С вопросом: «Как установить лисп в Автокад» все понятно. Но, как его загрузить в схожие программы, например, Автокад Electrical/Mechanical?
К сожалению, приложения, написанные на AutoLISP, работают только на полной версии программы AutoCAD. Поэтому такие скрипты нельзя внедрить в AutoCAD LT или др. версии.
Исключением могут являться специализированные приложения типа LT Extender и подобные ему, которые были разработаны чтобы запускать файлы *.lsp или *.arx непосредственно в среде Автокад LT.
Пишу эту статью, чтобы:
1. Разложить у себя в голове по полочкам, что я узнал об Autocad.
2. Помочь тем, кто так же как я продирается через очень малое количество документации.
3. Получить в комментариях информацию вида «это ты делаешь неправильно, проще и лучше будет сделать так. »
Начало работы. Создание плагина.
Наследование от IExtensionApplication необязательно, Autocad автоматически подцепит все public классы в библиотеки, но, как мне сказали, так будет быстрее. Плюс можно контролировать Initialize/Terminate плагина.
Компилируем, запускаем автокад, загружаем плагин командой netload (открывается окно выбора managed dll)
Теперь при вводе команды hello мы будем получать ожидаемый ответ.
Структура Autocad приложения:
То, что мы видим на экране, графические объекты, унаследованные от Entity
Кроме видимых, есть невидимые информационные объекты — Слои, Типы линий, Стили размерности (Dimension styles), Стили таблиц и т.д.
Все это хранится в Database Table Records, в хранилищах вида TYPETable и классах вида TYPETableRecord.
Идентификаторы объектов
- ObjectId, известный также как EName (entity name). Число, создаваемое при открытии рисунка.
Использование — идентификация объекта в базе в течении одной сессии, объект запрашивается из базы по его ObjectId
Может меняться между разными открытиями, лучше не использовать для сохранения ссылок на объекты - Handle — число, неизменное между разными открытиями документа, удобно использовать для сохранения связей между объектами при сохранении файла.
Работа с базой данных
Обычно работа с базой идет с помощью транзакции. Объекты запрашиваются из базы данных, изменяются и commit'ом транзакции сохраняются обратно
Во время транзакции объект запрашивается из БД в одном из 3х режимов ForRead, ForWrite, ForNotify.
Назначение первых двух очевидно, третий как-то используется для механизма событий, с чем я пока не пересекался
В режиме ForWrite автокадом создаются дополнительные объекты, позволяющие отменить изменения в транзации.
Если нужно изменить объект, открытый как «ForRead», вызывается его метод UpgradeOpen().
Если вызвать этот метод на объекте, уже открытом в режиме изменения, метод выдаст исключение.
Транзакции могут быть вложенными, при отмене верхнеуровневой транзации отменяются и все дочерние.
В начале, долго не мог разобрать где ошибка — не сохранялись изменения в рисунке. Как оказалось забыл закрыть верхнюю транзацию.
Словари
Словари я использовал для сохранения своих данных в DWG, чтобы не создавать лишних файлов
Я столкнулся с двумя видами словарей в рисунке — NamedObjectDictionary и ExtensionDictionary
Данные в словарях хранятся в записях (Record), которые в свою очередь хранят типизированные значения.
Адресуются данные по текстовым ключам.
NamedObjectDictionary — глобальный словарь рисунка. Создается автоматически при создании документа.
Его я использовал для хранения ссылок на главные используемые мной объекты.
ExtensionDictionary — словарь, свой для каждого объекта, его нужно создавать вручную.
Проверить его существование можно сравнив поле entity.ExtensionDictionary c ObjectId.Null
Работа с глобальным словарем почти такая же, только объект DBDictionary получается так:
С чем я еще столкнулся
Пояснения:
R17.0 — Autocad 2007
419 для русской версии
409 для английской версии
GeocomplexPlugin — создаваемый раздел
LOADCTRLS = 2 — загружать при старте автокада. Определенными ключами можно сделать запуск «по требованию», плагин загружается, когда вводится одна из его команд
LOADER — путь к плагину
UPDATE: Решил проблему пошаговой отладки:
Победил эту проблему таким образом:
В файле настройки автокада acad.exe.config установил среду исполнения на v4.0:
Поменял среду исполнения плагина на 4.0 client profile
И настройках сборки AssemblyInfo.cs закомментировал атрибут AllowPartiallyTrustedCallers
В автокаде пробел эквивалентен Enter, поэтому если послать команду без завершающего пробела, в результате в editor'e будет введено _e и он будет ожидать дальнейшего ввода
Однако этот способ не всегда можно использовать. Принцип работы команды SendStringToExecute такой, что команды посылается только после завершения работы фунции, вызыванной командой. Поэтому если вы сначала вызовите эту команду, а потом, например, предложите пользователю выбрать объект на рисунке, фунции выбора будет послано две строки "_zoom", "_e", которые она воспримет как неправильные объекты.
Приходится искать аналоги, выполняющиеся сразу же. В данном случае:
Для выбора объектов используются функции editor'a Get*
Например, выбор нескольких объектов — GetSelection, выбор одного объекта GetEntity…
Возникнув около трех лет назад, новое для Autodesk направление - геоинформационные системы - не только активно развивается, но и уже обогнало по объемам текущих поставок таких авторитетов в области ГИС, как ESRI (ArcCAD, ArcInfo, ArcView) и Intergraph. Сегодня в линейку ГИС-продуктов Autodesk входят AutoCAD MAP, Autodesk World и MapGuide.
AutoCAD MAP Release 3.0
AutoCAD Map 3.0 - это полнофункциональная инструментальная ГИС на основе Aвтокада 14 (и полностью включающая его в себя) в среде Windows 95/NT.
Возникнув около трех лет назад, новое для Autodesk направление - геоинформационные системы - не только активно развивается, но и уже обогнало по объемам текущих поставок таких авторитетов в области ГИС, как ESRI (ArcCAD, ArcInfo, ArcView) и Intergraph. Сегодня в линейку ГИС-продуктов Autodesk входят AutoCAD MAP, Autodesk World и MapGuide. Последняя версия AutoCAD MAP не просто комплект из AutoCAD R14 и встроенной системы управления базами данных с функциями работы с топологией объектов. Это - новый комплексный продукт разработки и эксплуатации ГИС, мощный и легкий в освоении, а главное - современный, впитавший в себя лучшие достижения в этой области и убедительно их развивший.
AutoCAD MAP Release 3.0 предназначен для создания, просмотра, редактирования и управления графическими базами данных географических или геологических карт, карт землепользования, анализа окружающей среды, транспортных, коммуникационных схем и схем управления фондами и инфраструктурой, а также создания и редактирования топологических данных этих карт (данных, привязанных к объектам, например, домам, дорогам, коммуникациям и проч.). AutoCAD MAP R3.0 работает на базе векторно-растровой графики Автокада версии 14, но в дополнение ко всем функциональным возможностям и преимуществам, присущим новому Автокаду версии 14, дает пользователям мощные и эффективные средства, направленные на их специфические потребности. AutoCAD MAP позволяет создавать, редактировать векторную графику в комбинации с растровыми изображениями картографического материала и обладая мощной системой управления пространственными базами данных, связать воедино графические объекты с семантической и атрибутной информацией которая может храниться как непосредственно в чертеже в упакованном виде, так и во внешних базах данных, записи которых связаны с объектами карты. Пользователь имеет возможность определить и модифицировать их структуру, связать с примитивами, вводить значения данных, например, при дигитализации, и корректировать их. Работа с внешними базами данных (в т.ч. работающими в архитектуре клиент/сервер) производится через драйверы, которые поддерживают dBASE III, Oracle, а через ODBC - Access, Paradox, FoxPro, SQL Сервер и другие ODBC-coвместимые СУБД.
AutoCAD MAP является эффективным средством для создания высококачественных карт и атласов. Средства вычерчивания на плоттер и принтер Автокада по достоинству оценили миллионы пользователей во всем мире. В AutoCAD Map 3.0 эти средства значительно расширены и интеллектуализированы, включая все возможности пространства листа, способность задавать заголовки, надписи, рамки, легенды, масштабные шкалы, вклейки и т.д. Пакет позволяет устанавливать, сохранять и применять различные конфигурации для вычерчивания множества карт и создания атласов. Имеется возможность задания положения и внешнего вида легенды, масштабной шкалы, рамок, надписей.
Пакет обеспечивает импорт и экспорт картографических данных между другими картографическими и ГИС-форматами, включая MIF/MID (MapInfo), Shape (ArcView, ESRI), DGN (Microstation), покрытия ARC/INFO, SDF (Autodesk MapGuide). Важно, что dwg-файлы может прямо читать World 2.0 фирмы Autodesk и ArcView 3.0 фирмы ESRI.
Пакет обеспечивает одновременное редактирование множества чертежей, например, ввод объекта, проходящего по нескольким листам, с дальнейшей автоматической разрезкой и разнесением объекта по чертежам с сохранением идентификации и связей с атрибутами.
С другой стороны, обеспечивается просмотр и многопользовательское редактирование карт в сети. При этом блокировка производится только на уровне отдельных примитивов и только на редактирование - просматривать данные можно. При необходимости можно установить многоуровневую защиту данных вплоть до отдельных объектов, чтобы предотвратить возможный несанкционированный доступ к данным со стороны пользователей, не имеющих на то права.
В ходе дигитализации (как по бумаге, так и по экранному растру) система автоматически присоединяет к объектам и запрашивает необходимые атрибуты. В AutoCAD MAP достигается высокая эффективность и производительность картографических работ. Имеется механизм подчистки полученных после дигитализации и/или векторизации карт для получения топологически корректных моделей. Возможна работа как в автоматическом, так и в "ручном" режиме. Система разрывает линии в точках пересечения, выявляет и корректирует разомкнутые, перекрывающиеся и дублирующиеся линии, "хвосты", "шум" (короткие штрихи) и другие дефекты оцифровки, стягивает близкие вершины. Этим способом, в частности, легко осуществляется сшивка отдельных планшетов или других смежных участков карт.
Обеспечивается целый ряд картографических средств, таких как вырезание (выкопировка) по произвольному контуру; разрезание карты по "режущим кромкам", например, сетке планшетов; вписывание-трансформация ("резиновое растяжение") векторной модели по заданным точкам, что позволяет совмещать карты и компенсировать искажения.
Для поддержки мелкомасштабного картографирования имеется целый набор проекций и возможность создавать собственные, что необходимо нашему пользователю.
Сегодня в линейку ГИС-продуктов Autodesk входят AutoCAD MAP, Autodesk World и MapGuide. Уникальная особенность Autodesk World - возможность работы со всеми мыслимыми форматами ГИС, баз данных, растровыми и векторными изображениями без перекодировок (импорта файлов) в одном сеансе да еще с простым и привычным для пользователей интерфейсом MS Office.
Система поддерживает топологические структуры данных (как полигональную, так и линейную, сетевую), позволяя создавать топологически корректные модели (базы) данных т.е. Это обеспечивает намного более эффективное хранение, редактирование и вычерчивание карт.
Топология позволяет задавать запросы, оперирующие топологическими соотношениями, а главное - эффективно делать то, что составляет сущность ГИС, - выполнять пространственный анализ, геопроцессинг, получать производные карты.
Информация из баз данных, результаты обычных или топологических запросов и результаты анализа могут быть картированы, оформлены в виде тематических карт с использованием всех возможностей Автокада - цветов, символов, типов линий, штриховок, заливок и т.д. Легенды можно легко создавать и редактировать.
Autodesk World Release 2.0
Пакет компании Autodesk для разработки и ведения геоинформационных систем, полностью совместимый с AutoCAD MAP и Autodesk Map Guide. Предназначен для ведения, интеграции и управления потоком географической информации и атрибутов карт с обработкой информации стандартных баз данных и ГИС. Autodesk World превращает классическую ГИС в открытую и гибкую систему управления всеми географическими данными.
Позволяет объединить графические данные CAD, ГИС с растровыми и мультимедиа файлами в единую среду. Средства анализа Autodesk World включают: применение фильтров выборки с предопределенными установками; пространственные, атрибутивные и объектные операции; пространственные запросы двойной точности трехмерных источников в двумерной топологии; запросы с использованием комбинаций из графических, пространственных и SQL фильтров; использование мастеров частовыполняемых функций.
Версия 2.0 даёт возможность организациям обладать полным контролем над своими данными через интерфейс программирования приложений (API), обеспечивающий доступ к любому набору графических и пространственных объектов, а также ассоциированной с базами данных информации через расширенный интерфейс Attribute Database (ADB) API. Кроме того, версия 2.0 осуществляет вставку и показ файлового формата ALG от ER Mapper и все типы растровых образов, поддерживаемых ER Mapper, а также обеспечивает поддержку образов GeoTIFF и формата DXF, и отличается улучшенной производительностью.
Форматы рабочих файлов Autodesk World включают Autodesk World Geobase и Microsoft Access MDB. Поддерживаются векторные данные в оригинальных форматах ESRI Arc/Info Coverages, ESRI ArcView SHP, MapInfo MIF/MID, Microstation DGN, Atlas GIS BNA, Autodesk MapGuide SDF, AutoCAD DXF, а также основной формат файлов AutoCAD DWG. Осуществляется двухсторонняя связь с Oracle, Sybase, Microsoft SQL Server или любыми совместимыми с ODBC/DAO базами данных.
Привет, народ. Этот материал вы могли бы найти стотыщраз самостоятельно, но, пообщавшись с разными замечательными людьми, я обнаружил, что многие этого не знают.
Вообще, продукция Autodesk реально недешёвая. А учитывая наш менталитет, украсть - сам Бог велел. За нас это сделали много-много раз прекрасные ребята, выкладывающие на торрентах всяческие трудноустанавливаемые и плохополоманные коммерческие версии, а к ним мануалы по установке, в которых подозрительно часто встречается "отключите вашу антивирусную программу, а если вы нам не доверяете, то идите лесом". Не хочу обидеть пиратов, благо сам постоянно пользуюсь плодами их трудов, но есть среди нас люди, которым это не по кайфу. И поэтому я предлагаю всем желающим зарегистрироваться в "Образовательном сообществе Autodesk" - всем членам этого чудесного сообщества предоставляется бесплатная трёхлетняя лицензия на любые продукты компании. Естественно, для некоммерческого использования.
Сразу предупрежу любителей старых версий. В старых версиях программ (которые частично также доступны образовательному сообществу, но это, скорее, исключение из правил) на всех ваших работах будет висеть несмываемая надпись "Этот файл создан в учебной версии программы". Начиная с продуктов 2015 года (это линейка с индексом "2016", как ни странно) я этой надписи найти не смог. Хотя и очень старался.
Как вы заметите далее, на этом Великий и могучий заканчивается и мы переходим на столь родной нам всем буржуйский. Если вы в нём шарите и не боитесь жмакать кнопки, то дальше разберётесь сами. Если же нет, то на картинке ниже представлено то душераздирающее зрелище, которое вам надлежит увидеть.
Вкратце поясню. Нам предлагают залогиниться - а если нет аккаунта, то создать его обещают прямнувот запросто. Естественно, тыкаем кнопку "Создание аккаунта", а по-ихнему - "Signing up". Изи.
Далее нас попросят выбрать страну (не знаю, как кто, а я выбираю всегда "Russian Federation", поцреот я) и образовательную роль, в примерном переводе это студент, препод, айтишнег и научрук. Я реально не знаю, что будет, если выбрать не студента. Пока что я тут только за него гамал.
Потом вводим дату рождения (я вводил свою настоящую, мне почти тридцатник, никаких проблем/претензий не было). Жмём "Next".
Далее - самое сложное. Ввести настоящее или выдуманное имя, настоящую почту, выдумать пароль. На ту почту, которая сфоткана, реально заведён аккаунт. Пароль сложный, аж 15 символов, какой - не скажу, скажу только, что в середине цифры 777, а по краям буквы - первые 6 букв, которые в адресной строке сейчас у вас. И в начале, и в конце.
Нижнюю галочку ставить обязательно, верхнюю - наверное, нет. Но я щёлкал вслепую и увидел, что она есть, уже потом.
Далее следует стандартная процедура. Заходим в почту, находим письмо от Аутодеск, тыкаем кнопку "VERIFY EMAIL", логинимся, видим, как всё хорошо. А что дальше делать - непонятно.
Я с этого места начинаю всё с самого начала. Только не регистрируюсь, а логинюсь. Тогда попадаю туда, куда надо.
И после этого шага - внезапно - к ним вернулся Великий и могучий! Класс.
Последний шаг, кстати, тоже хитрый. Вы можете ввести какой-нибудь набор букв, нажать на кнопку "не удалось найти учебное заведение" и далее ввести новый вуз (там уже можно хоть выдумывать, хоть реальный вводить". Я же ввожу какую-нибудь букву (сегодня это была буква У) и выбираю из списка.
Ура! Учётка настроена!
Если вам влом разбираться с тем, что же делать дальше, как всё это скачать и, главное, зачем - об этом позже. Естественно, если найдутся желающие почитать.
ObjectARX (AutoCAD Runtime Extension) – это набор библиотек для разработки ARX-приложений в среде программирования Microsoft Visual C++. ARX-приложение работает в AutoCAD, как динамически связываемая библиотека (DLL) с файловым расширением .arx и имеет прямой доступ к графической базе данных AutoCAD. Важнейшая особенность ARX приложений заключается в том, что появилась возможность расширения AutoCAD не только за счет разработки новых команд, но также и за счет создания новых типов примитивов.
ObjectARX среда состоит из следующих групп классов и функций:
- AcRx (acad.lib, rxapi.lib, acrxlib) – классы для создания производных классов.
- AcEd (acad.lib, rxapi.lib, acedapi.lib, acrxlib) – классы для регистрации команд AutoCAD и для уведомления о событиях AutoCAD.
- AcDb (acad.lib, rxapi.lib, acdblib, acrx15.lib) – классы базы данных AutoCAD.
- AcGi (acad.lib, rxapi.lib, acgiapi.lib, acrxlib) – классы для создания графических объектов AutoCAD.
- AcGe (acad.lib, rxapi.lib, acgelib, acrx15.lib) – сервисные классы для общей линейной алгебры и геометрического объекта.
Рисунок AutoCAD – коллекция графических объектов и внутренних конструкций типа таблиц идентификаторов и словарей, сохраненных в базе данных.
Примитив (Entity) имеет графическое представление в пределах рисунка AutoCAD – строки, круги, дуги, текст, solids, области(регионы), сплайны, и эллипсы. Пользователь может видеть его на экране и управлять им.
Таблицы идентификаторов – контейнеры для сохранения объектов базы данных. Примеры таблиц идентификаторов – таблица слоев (AcDbLayerTable) и таблица блоков (AcDbBlockTable). Все примитивы AutoCAD принадлежат записям таблицы блоков.
Словари обеспечивают более универсальный контейнер для сохранения объектов, чем таблицы идентификаторов. Словарь может содержать любой объект типа AcDbObject или его подкласса. Когда создается новый рисунок AutoCAD создает словарь называемый Named Object Dictionary. Этот словарь может просматриваться как “оглавление” для всех словарей, связанных с базой данных. Вы можете создавать новые словари в пределах Named Object Dictionary.
ObjectARX обеспечивает ваше приложение доступом к этим структурам базы данных. Кроме того, Вы можете создавать новую базу данных объектов для вашего приложения.
Множество баз данных (рисунков) могут быть загружены в одном сеансе AutoCAD. Каждый объект в сеансе имеет метку и ID. Метка уникально идентифицирует объект в пределах специфической базы данных. ID уникально идентифицирует объект во всех базах данных, загруженных в одно время. ID сохраняется только в течение сеанса редактирования, а метка сохраняется с рисунком. В отличие от ID объекта, метка может быть неуникальна, когда множество баз данных загружены в сеансе AutoCAD. Через ID Вы можете получить указатель на фактический объект базы данных для обеспечения исполнения операций с ним.
Чтобы быть пригодной для использования, база данных должна иметь, по крайней мере, следующий набор объектов: таблицу блоков; таблицу слоев; таблицу типов линий.
Таблица блоков первоначально содержит три записи: MODEL_SPACE, и два пространства листа, называемые PAPER_SPACE и PAPER_SPACE0. Таблица слоев содержит одну запись – слой 0. Таблица типов линий содержит тип линии CONTINUES.
Предположим, что пользователь создает отрезок с параметрами (4,2 10,7) в пространстве MODEL_SPACE. В базе данных AutoCAD создает образец класса AcDbLine и затем сохраняет его в таблице блоков.
Следующий код создает объект Line и прибавляет его к таблице блоков пространства модели:
Сначала получаем таблицу блоков для текущего рисунка. Затем открываем в пространстве MODEL_SPACE запись таблицы блоков и прибавляем объект к таблице, затем закрываем таблицу и объект.
Теперь, предположим, что пользователь создает окружность с параметрами ((9,3) 2). Снова AutoCAD создает образец соответствующего объекта (AcDbCircle) и прибавляет его к пространству модели.
Следующий код создает окружность и прибавляет ее к таблице блоков в пространстве модели:
Затем, пользователь создает слой mylayer, AutoCAD создает новую запись таблицы слоя и добавляет ее в таблицу слоев.
Следующий код получает таблицу идентификаторов слоя от базы данных и создает новую запись таблицы слоя ASDK_MYLAYER:
Наконец, группируем все объекты вместе (group 3,2 9,3). AutoCAD создает новую группу и прибавляет ее к словарю GROUP который содержится в объектном словаре имен (Named Object Dictionary). Новая группа содержит список ID объектов, которые составляют группу.
Cледующий код создает группу pGroup из объектов Line и Circle в методах createLine () и createCircle (), и помещает группу в словарь. Обратите внимание, как словарь открывается для записи, изменяется, и затем явно закрывается.
Все примеры кода иллюстрируют протокол для открытия и закрытия объектов, который Вы будете должны соблюсти всякий раз, когда Вы работаете с объектами резидента-базы. Этот протокол гарантирует, что объекты находятся физически в памяти, когда к ним обращаются. Прежде, чем Вы предполагаете изменять объект, Вы должны открыть его. Функции имеют параметр, который определяет, открываете ли Вы объект для чтения, записи или уведомления. В то время как объект открыт для записи, Вы можете изменять его. Когда закончите, Вы должны явно закрыть объект. Ниже приведен типовой код для изменения цвета объекта:
Для каждой версии AutoCAD выпускается соответствующая версия пакета ObjectARX . При этом для разработки ARX приложений для разных версий AutoCAD требуются строго определенные версии Visual Studio. Ниже приводится список значений параметра Platform Toolset, который должен быть установлен в свойствах проекта приложения:
В Visual Studio создайте пустой Win32 проект для DLL с именем First и установите свойства проекта в соответствии с рисунками.
initApp – функция вызывается, когда приложение загружается;В приложении (см. файл Source.cpp) вначале подключаются ObjetARX основные файлы: aced.h (определенные редактором услуги) и rxregsvc.h (для сервисных ARX функций). Затем объявляются три функции:
unloadApp – функция вызывается, когда приложение выгружается;
helloWorld – функция, которая обеспечивает печать “Hello World!”.
Далее определяется функция initApp. Эта функция регистрирует новую команду в системе команд AutoCAD. Информацию относительно acedRegCmds макроса и addCommand () метода (AcEdCommandStack класса), можно получить из ObjectARX справки.
Первый аргумент addCommand () – название группы команд (в нашем случае в группу включена только одна команда). Второй аргумент – глобальное имя команды. Третий аргумент – местное имя для той же самой команды. Четвертый аргумент – флаг команды (определяется прозрачная команда – может быть вызвана, когда другая команда активна). Последний аргумент – указатель на вызываемую нашей командой функцию.
После этого в коде программы определяется функция helloWorld. В теле данной функции используется функция acutPrintf, которая является эквивалентом LISP-функции printf.
Так как наше приложение очень простое (оно не определяет объекты, на которые AutoCAD и другие приложения ссылаются) мы можем без опасений определять его незамкнутым. Это позволяет выгружать наше приложение с помощью функции unloadApp. Также по умолчанию, ObjectARX приложения не используют MDI (обратитесь к справке для детальной информации по проблемам MDI). Для регистрации MDI в приложении используется глобальная функция acrxRegisterAppMDIAware.
Чтобы AutoCAD смог получить доступ к функции acrxEntryPoint необходимо экспортировать её. Для этого определяется файл с расширением .def. Все ObjectARX приложения должны экспортировать, по крайней мере, две функции: acrxEntryPoint и acrxGetApiVersion (см. файл Source.def).
Ниже приводится приложение, которое демонстрирует итерацию таблицы типов полилинии. Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 2_tbliter_dg.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команду ITERATE.
Ниже приводится приложение, которое демонстрирует итерацию по вершинам примитива AcDb2dPolyline. При этом реализуется открытие и закрытие объектов – полилинии и ее вершин.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 3_pliniter_dg.txt.
Для тестирования приложения выполните следующие шаги:
- Установите системную переменную PLINETYPE=0.
- Создайте полилинию.
- Выгрузите предыдущую и загрузите обновленную библиотеку First.arx.
- Запустите команду ITERATE.
Ниже приводится приложение, которое демонстрирует создание и добавление записи в таблицу слоев.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 4_tablerec_dg.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команду ADDLAYER и раскройте диалоговое окно “Диспетчер свойств слоев”.
Ниже приводится приложение, которое демонстрирует создание и добавление объекта XRecord в словарь объектов и возможность просмотра этого объекта из словаря объектов.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текстовку из файла 5_XRecord.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команды ASDK_CREATE и ASDK_LISTXREC.
Ниже приводится приложение, которое демонстрирует создание и добавление объекта XRecord в словарь расширения выбранного пользователем объекта.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текст из файла 6_extension dictionaries.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Нарисуйте любой примитив, например, окружность. Запустите команду CREATE и укажите на нарисованный примитив. При этом будет создан словарь расширений и в нем будет размещена запись о выбранном примитиве. Запустите команду LISTXREC, укажите на нарисованный примитив, При этом будет напечатана запись о выбранном примитиве из словаря расширений.
Ниже приводится приложение, которое демонстрирует создание mesh объекта с ячейками сети различного цвета. В приложении создается класс, производный от класса AcDbEntity, в нем переопределяются виртуальные функции.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текст из файла 7_ASDKMAKEMESH.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Запустите команду ASDKMAKEMESH.
Ниже приводится приложение, которое демонстрирует использование AcDbGroup протокола.
Модифицируйте проект приложения First. Для этого замените код файла Source.cpp на текст из файла 8_ASDK_GROUPTEST.txt.
Для тестирования приложения выгрузите из чертежа предыдущую и загрузите обновленную библиотеку First.arx. Выполните чертеж из нескольких примитивов, включая отрезки. Запустите команду GROUPTST. На запрос команды выберите набор объектов, который включает, по крайней мере, один отрезок. Из выбранного набора отрезки должны выделиться красным цветом.
Читайте также: