Предлагаем Вашему вниманию статью, опубликованную в 12 номере журнала "САПР и Графика" за 1998 г. и посвященную новой возможности, появившейся в тестируемой версии bCAD 3.5 - возможности самостоятельно создавать специфические приложения.
Владимир Малюх
Программируем САПР на Java.
В этом году мы неоднократно публиковали материалы посвященные пакету bCAD, его возможностям и применениям. Тема сегодняшней статьи - новинка, которая еще находится в стадии разработки, точнее так называемого бета-тестирования, иначе говоря, опытной эксплуатации. ПроПро Группа - разработчик bCAD, готовит к выпуску новую версию продукта. Главное ее отличие от предыдущих - наличие интерфейса программирования. Пользуясь его средствами можно легко и быстро разрабатывать специализированные приложения САПР.
Корни
Стоит немного обратиться к истории продукта - дело в том, что в отличие от многих известных САПР, bCAD изначально разрабатывался как пакет, доступный в использовании операторами, не являющимися специалистами в компьютерах, и тем более в программировании. Более того, многие внутренние сущности компьютерной графики были скрыты так, чтобы конструктор, архитектор или дизайнер не испытывали дискомфорта при использовании в общем-то достаточно сложной технологии современных САПР. Система предполагалась и долгое время развивалась как инструмент, готовый к немедленному использованию - практически без предварительной подготовки и настройки. Время показало, что такой подход действительно позволяет быстро и эффективно автоматизировать процесс проектирования для большинства предполагаемых заказчиков -дизайнерских студий, небольших КБ или локализованных подразделений крупных предприятий, индивидуальных проектировщиков - "кустарей-одиночек с компьютером". Иными словами - пакет нашел своего клиента. Однако с течением времени появились новые обстоятельства и, что называется, "требования рынка". Сформировались два принципиально новых типа потребителя. Первый - пользователи, уже приобретшие солидный опыт работы c bCAD и желающие добавить свои, "фирменные" приемы работы в дополнение к стандартному набору инструментов. Второй - независимые разработчики узкоспециализированных приложений САПР, ранее использовавшие в качестве базы другие пакеты. Дело в том, что для распространения, скажем архитектурного пакета ценой в $200-300 было необходимо продать потребителю базовый мощный пакет ценой в $5000, да еще и требующий дорогостоящего оборудования. Что самое парадоксальное - клиент как правило не пользовался и 20% возможностей базовой системы. Базовая же поставка bCAD существенно (в разы как минимум) дешевле, в то же время функциональная база bCAD является вполне подходящей платформой для многих приложений, так как содержит развитые чертежную и трехмерную подсистемы так сказать "в одном флаконе".
Общие требования к системе программирования
Все вышесказанное и послужило причиной создания новой версии пакета. Принципиально он сохраняет все возможности, привычный для пользователей стиль работы и внешний облик предыдущих версий, в этой части изменения скорее косметического, эволюционного характера. Одно из наиболее радикальных изменений в новой версии - возможность программировать bCAD, предоставленная в руки опытного пользователя, либо независимого разработчика. Практически все системы "тяжелого" уровня предоставляют такую возможность, так как они рассчитаны на эксплуатации в специализированных инженерных центрах, там где наверняка есть опытный программист. Дело остается за выбором программного интерфейса - он должен быть достаточно гибким, чтобы позволить создавать различные приложения, несложным в освоении для специалистов в предметных областях и, что особенно важно, безопасным в программировании, то есть созданные приложения не должны иметь возможности "разрушить" основную систему, например в случае ошибок программирования. Последнее обстоятельство особенно существенно, так как часто разработчики узкоспециальных систем являются не профессиональными программистами, а скорее специалистами в своей предметной области. Кроме того, системы программирования должны быть достаточно доступны по цене, иначе это также вызовет повышение цены самих разработок. Практически идеальным решением оказалась наиболее современная на сегодня технология программирования Java. Традиционно Java ассоциируется как средство разработки приложений для Internet, однако это лишь часть ее возможностей. Сам по себе язык Java, являясь логическим развитием языков C и C++, предоставляет практически неограниченные возможности для программирования как алгоритмов, так и пользовательского интерфейса. Однако в отличие от C/C++, с использованием которых и разработано ядро и встроенные инструменты bCAD, технология Java позволяет разделить внутренние структуры данных и функции bCAD и приложений и, тем самым "защитить" основную систему от мелких ошибок разработчика прикладной программы,
что делает исполнение приложений более "безопасным". Освоение самого языка Java не представляет труда, благодаря его популярности в Internet к настоящему времени уже изданы и продолжают появляться тысячи пособий и руководств по программированию на языке Java. Средства программирования также весьма доступны - от совершенно бесплатных инструментариев, в том числе от Sun и Microsoft - основных разработчиков средств программирования на Java, до интегрированных, отлично документированных сред, оснащенных отладчиками, большим количеством библиотек и примеров. Кроме того, однажды собранные приложения Java не требуют перекомпиляции для их исполнения в последующих версиях пакета или на других платформах (например Windows NT на DEC Alpha).
Реализация
Программный интерфейс bCAD (bAPI ), предоставляет разработчику функции (или, в терминологии объектно-ориентированного программирования - методы) для создания и модификации любого объекта - чертежных элементов и поверхностей, разделов (слоев) и групп, камер и источников освещения а также ряд дополнительных, например - ввести точку, напечатать сообщение в стандартное окно вывода и т.п. Набор программных вызовов ( API calls ) функционально повторяет интерактивный инструменты пакета. Таки образом в приложениях можно создавать любые чертежные и объемные геометрические элементы, источники освещения, подвижные и статические камеры. Кроме библиотеки вызовов стандартных функций bCAD в состав пакта входит библиотека сложных геометрических построений (создание линий сопряжения, касательных, нахождения пересечений и т.п., об этой библиотеке немного подробнее ниже). Приложения можно разрабатывать используя популярные системы программирования на Java - Microsoft Visual J++, Sun Java SDK, Symantec Visual Cafe и другие. Элементы пользовательского интерфейса создаются с использованием стандартного пакета классов AWT (Abstract Windows Toolkit) либо любых библиотек, соответствующих стандарту Sun JDK 1.1 Опыт предварительного тестирования показал, что практически любой предметный специалист (инженер, строитель, научный работник и даже студент) может при необходимости за короткое время освоить технологию программирования bCAD и решать свои индивидуальные задачи более эффективно.
Прикладная программа может иметь развитый интерфейс в виде сложных диалогов, обращаться к файлам, запускать другие приложения. Инсталляция и запуск приложений необычайно проста - все они содержатся в едином реестре (разработчики его назвали CofeeTree- "кофейное дерево", рис. 1, красный маркер) который, в свою очередь, может иметь привычные разделы и подразделы - достаточно щелкнуть правой кнопкой мыши на окне реестра, выбрать команду "Новое приложение" и указать где расположен исполняемый файл. Для независимых разработчиков предусмотрена возможность добавлять приложения с помощью традиционных систем инсталляции (например наиболее популярной - InstallShield Express) с использованием файлов Windows Registry. Окно реестра приложений может быть либо "плавающим" поверх окон чертежей, либо приклеено к основной рамке bCAD, либо просто закрыто. Для исполнения приложения достаточно щелкнуть левой кнопкой мыши на его имени. Для удобства разработчиков в панель стандартного вывода информации добавлена еще одна секция, в ней отображаются служебные сообщения Java-приложений, которые могут быть необходимы при их отладке и использовании (рис 1. , синий маркер).
рис 1. Элементы управления Java-приложениями bCAD.
Первые результаты
Несмотря на то, что система программирования находится в стадии тестирования и доводки уже существует ряд практически полезных разработок с ее использованием. Приведем лишь некоторые из них, в качестве примера. Все они созданы в рамках тестирования системы, в основном специалистами различных кафедр Новосибирского Государственного технического университета.
Итак первое - библиотека для выполнения сложных построений на плоскости, иными словами "циркуль и линейка" для программиста. При вычерчивании (в том числе и программном) зачастую возникает необходимость в функциях более сложных, нежели просто построение окружности или отрезка. При интерактивном черчении пользователь может находить места пересечений визуально или с помощью привязок, программный же алгоритм нуждается в соответствующих библиотеках. Эти задачи в рамках bAPI решены с помощью специально разработанной библиотеки Geometr-2D. Эта библиотека автоматизирует выполнение следующих классов операций:
- Построение дуг и окружностей, касательных к окружностям и эллипсам;
- Нахождение точек пересечения различных контуров, прямых, окружностей и эллипсов;
- Плавное сопряжение дуг и прямых
- Построение перпендикуляров и параллельных линий
- Нахождение кратчайших расстояний и определение максимально удаленных точек
- Построение прямых, касательных к паре окружностей или эллипсов
На рис. 2 приведен пример исполнения тестовой программы, находящей пересечения различных объектов. Исходные коды таких примеров, наряду с подробным текстовым описанием, прилагаются к каждому классу библиотеки, это позволяет освоить ее использование в считанные часы.
рис 2. Пример работы библиотеки Geometr-2D.
Следующим интересным приложением является модуль импорта геодезических данных, полученных с помощью пакета OrthoPhoto-SDS (САПР и Графика №11 за 1997 г.). Модуль позволяет прочесть описание геометрии поверхности земли, полученную после анализа аэрофотоснимков, и создает ее трехмерную модель в bCAD. Так как пакет OrthoPhoto создает не только описание геометрии но проективную текстуру - в bCAD легко получить синтетическое изображение поверхности, окрашенное в естественные цвета (рис 3.)
рис 3. Работа модуля импорта геодезической информации.
И наконец, приложение, о котором достаточно часто спрашивают проектировщики-строители и архитекторы. Это инструмент, создающий источник света, по положению и цвету соответствующий солнечному в определенный момент времени и заданной точке земного шара (рис. 4). Следует заметить, что это приложение имеет весьма насыщенный элементами управления пользовательский интерфейс, что демонстрирует возможности технологии программирования Java. Отметим также, что это написано студентом, закончившим два курса НГТУ, это еще раз говорит о простоте освоения системы разработки приложений.
рис 4. Приложение SunLight демонстрирует возможности создания развитого пользовательского интерфейса.
В настоящее время совместно с сотрудниками одной из кафедр НГТУ начата разработка специализированных пакетов "Машиностроительный Крепеж" и "Стандартные обозначения". Эти пакеты, а также ряд других, запланированных к разработке, позволят создавать параметризованные библиотеки типовых элементов машиностроительных изделий, и тем самым еще более упростить создание проектов как в части создания объемных геометрических моделей так и в процессе подготовки конструкторской документации. В принципе проектирование некоторых типовых деталей, например валов, или зубчатых колес, набивших оскомину уже поколениям конструкторов, может быть полностью запрограммировано и с точки зрения конструктора сведется к выбору числовых значений.
Ближайшие перспективы
В настоящий момент для тестирования доступна бесплатная БЕТА версия пакета, которая позволяет опробовать технологию и даже начать разработку приложений уже сейчас. Выход коммерческой версии планируется на конец 1998 года. Специалисты ПроПро Группы полагают, что bCAD с интерфейсом программирования на Java позволит независимым разработчикам специализированных приложений существенно расширить свои рынки, так как в настоящее время используя для разработки традиционные "тяжелые" платформы они вынуждены устанавливать высокие цены, из-за стоимости самой платформы и оборудования, необходимого для ее работы. Мы приглашаем к сотрудничеству всех заинтересованных разработчиков. Все заинтересованные в использовании технологии bCAD+Java могут получить подробную информацию о bCAD на узле http://www.propro.ru/bcad либо по телефону +7 383210 64 63.