AutoCAD: интеллектуальные объекты Полещук Николай Николаевич Гл. специалист ОАО “Центр технологии судостроения и судоремонта” (Санкт-Петербург)

Download Report

Transcript 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.