AutoCAD: интеллектуальные объекты Полещук Николай Николаевич Гл. специалист ОАО “Центр технологии судостроения и судоремонта” (Санкт-Петербург)
Download ReportTranscript AutoCAD: интеллектуальные объекты Полещук Николай Николаевич Гл. специалист ОАО “Центр технологии судостроения и судоремонта” (Санкт-Петербург)
AutoCAD: интеллектуальные объекты Полещук Николай Николаевич Гл. специалист ОАО “Центр технологии судостроения и судоремонта” (Санкт-Петербург) Проектирование в AutoCAD Качество и скорость работы в среде AutoCAD во многом зависят от предварительной подготовки изображений объектов области проектирования (элементов схемы, узлов модели изделия и т.п.). Требования к объектам Подготовленные объекты могут: содержать нужные данные (номер узла, материал и т.д.) обладать определенной гибкостью (интеллектом) Инструменты, используемые для подготовки объектов Обычные блоки Динамические блоки Обычные блоки Вхождения обычных блоков: Могут хранить данные в атрибутах (расширенных данных, словарях). Невозможно хранить данные переменной длины Гибкостью обычно не обладают Пример обычного блока Однотипные изображения Динамические блоки Могут хранить данные Обладают значительной гибкостью Пока являются двумерными Примеры – блоки в инструментальных палитрах (Tool Palettes) последних версий AutoCAD Пример динамического блока Блок двумерного изображения двери Не хватает многообразия и функциональности? Возможно создание еще более интересных объектов. Для этого в системе AutoCAD имеется технология “custom objects” (пользовательские объекты). Эту технологию использует и сам Autodesk для ввода новых примитивов в AutoCAD и специализированных объектов в вертикальных приложениях (AutoCAD Architecture, AutoCAD Mechanical и т.д.). Custom objects Custom objects могут иметь геометрию, могут и не иметь ее. Первый вариант наиболее интересен. Такие объекты часто называют custom entities. Преимущества Могут иметь данные (внутри самих объектов) Разные элементы одного объекта могут быть оформлены по-разному (цвет, слой, тип линий и т.п.) Могут быть трехмерными Могут иметь изменяемую геометрию Можно наращивать интеллект (операции над объектом) Пример 1 необычного объекта Элемент неплоского соединения в форме буквы Y, у которого должны быть ручки на концах Пример 1 (продолжение) Иногда в таком объекте может быть требуется не два выхода, а больше. Нужна изменяемая геометрия Пример 2 Аналог полилинии, но сегменты разноцветные Пример 3 • Деталь из плоского листа (аналог области), которую нужно редактировать Что нужно для создания custom objects? Владение языком программирования C++ Умение работать с классами Пакет Microsoft Visual Studio соответствующей версии и конфигурации Знание языка C++ Знание языка (включая опыт работы с классами) Опыт работы с библиотеками ObjectARX Членство в ADN (Autodesk Developer Network) приветствуется Инструменты разработчика Microsoft Visual Studio или MS VC++, конфигураций Standard, Professional (Express не годится) Библиотеки Autodesk ObjectARX соответствующих версий AutoCAD Соответствие версий AutoCAD 2007-2009 - Visual Studio 2005 SP1 AutoCAD 2010-2012 - Visual Studio 2008 SP1 AutoCAD 2013 - Visual Studio 2010 SP1 Разработчики Для разработки интеллектуальных (custom) объектов нужны: Постановка задачи - опытный пользователь-проектант Разработка приложений – программист Типы приложений Приложения на C++ в среде AutoCAD - это DLLфайлы с расширениями: dbx – описания классов custom-объектов arx – прочие приложения (в т.ч. работающие с customобъектами) Например: myobj.dbx, myapp.arx ObjectARX и Visual Studio После установки на MS Visual Studio пакета ObjectARX (Autodesk) в среде Visual Studio появляются дополнительные инструменты (Wizards, мастера), позволяющие быстро создавать каркасы приложений определенного назначения. Далее в презентации следует некоторая информация, полезная в практической работе. Выбор типа проекта На примере Visual Studio 2010: ObjectARX/DBX Project Мастер ObjectARX (окно 1) Окно 1 Мастер ObjectARX (окно 2) Окно 2 (выбор DBX в качестве типа приложения) Класс custom-объекта Описание custom-объектов выполняется с помощью классов. Каждому типу объектов соответствует свой класс. Пример имени класса: MyObj. В AutoCAD каждый примитив имеет свой класс: AcDbLine, AcDbArc, AcDbSpline, AcDbPolyline и т.д. Мастер создания класса На примере Visual Studio 2010: Проект Добавить класс Custom Object Wizard Мастер custom-объектов (окно 1) В окне 1 мастера custom-объектов неоходимо ввести имя класса своего объекта (напр., MyObj) и имя класса-родителя (обычно AcDbEntity). Наследование Для создания своего класса обычно применяется механизм наследования от классародителя: AcDbObject – для объектов без графики AcDbEntity – для объектов с графикой Нас будет интересовать второй вариант. Возможно более простое наследование (от AcDbLine, AcDbSpline и т.п.). Мастер custom-объектов (окно 2) В окне 2 необходимо поставить флажки для автоматического получения каркасов функций разных протоколов Мастер custom-объектов (окно 3) В окне 3 можно установить флажки дополнительных свойств (каркасы функций клонирования и реакторов) MyObj.h Образуется заготовка файла MyObj.h, в котором перечисляются типы данных, функции методов. Сюда можно добавлять свои данные с указанием их типов (int, double и т.д.). Для хранения геометрических данных переменной длины можно использовать динамические массивы. MyObj.cpp Этот файл хранит тела функций (методов) класса. Наличие развитых методов и определяет интеллектуальность объекта. Наследованием от AcDbEntity мы получаем заготовки методов, присущих всем примитивам AutoCAD. Методы можно развивать по своему усмотрению. Можно добавлять в класс свои методы. Методы чтения/записи Важную роль играют обязательные методы чтения/записи: subDwgInFields, subDwgOutFields – чтение/запись в DWG subDxfInFields, subDxfOutFields – чтение/запись в DXF Особенно важно правильно написать методы subDwgInFields, subDwgOutFields. Методы визуализации графики subWorldDraw – графика в модели subViewportDraw – графика в видовых экранах листа Здесь можно реализовать все варианты графического отображения custom-объекта. Графика может меняться в зависимости от данных или настроек. Привязки к объекту Работа функций объектной привязки определяется в методе subGetOsnapPoints. Положение ручек и их функциональность Для этого используются методы subGetGripPoints, subMoveGripPointsAt. Именно здесь описывается функциональность (интеллектуальность) ручек. Могут быть подсказки, меню и т.д. Форма ручек Можно задавать свою форму и цвет ручек. Фактически создаются двумерные вспомогательные custom-объекты и правила рисования их контуров. Прокси-объекты Ваши custom-объекты не будут правильно работать в чертеже, если не загрузить их описания в DBX-файлах (адаптерах, custom enablers). При отсутствии адаптера появляются проксиобъекты. Адаптеры надо сделать легко доступными (например, выложить в Интернете). Примеры Цилиндр, у которого меняется число разноцветных осей при изменении радиуса Примеры • Учебная модель плавающего изделия с изменяемыми размерами Спасибо за внимание! [email protected] http://poleshchuk.spb.ru/cad/ Autodesk, AutoCAD* [*if/when mentioned in the pertinent material, followed by an alphabetical list of all other trademarks mentioned in the material] are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. All other brand names, product names, or trademarks belong to their respective holders. Autodesk reserves the right to alter product and services offerings, and specifications and pricing at any time without notice, and is not responsible for typographical or graphical errors that may appear in this document. © 2011 Autodesk, Inc. All rights reserved.