Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КОМПАС-3D V10 на 100%

.pdf
Скачиваний:
336
Добавлен:
10.05.2015
Размер:
14.48 Mб
Скачать

выполнения появится окно, в котором для каждого шаблона нужно будет ввести имя, указать файл с параметризированным фрагментом или моделью, файл таблицы параметров Excel и заставку (необязательно).

В результате библиотека шаблонов будет полностью готова к работе (рис. 6.13).

Рис. 6.13. Пример библиотеки шаблонов сварных швов

Все значения переменных, набранные в редакторе электронных таблиц Excel (рис. 6.14), будут ассоциированы с соответствующими им переменными шаблона. Теперь в окне менеджера шаблонов можно выбирать определенный шаблон, вводить значения переменных и вставлять его в документ.

Рис. 6.14. Таблица параметров для одного из шаблонов библиотеки сварных швов

Чем же существенно отличаются библиотеки шаблонов от библиотек фрагментов? Как уже говорилось, возможностью вставки в документ не всего фрагмента, а отдельных слоев и возможностью задавать список четко определенных значений для переменной, из которых пользователь может выбирать необходимую (например, стандартные модули зубчатых колес, диаметры резьбы, длину шпоночного паза и пр.). Кроме того, в шаблонах можно использовать различные типы переменных, среди которых логические и строковые, а в размерных

надписях фрагмента-заготовки можно резервировать переменные для текстовых подстановок (они должны выделяться с обеих сторон знаком #). Однако самым главным преимуществом библиотек шаблонов перед библиотеками фрагментов является то, что при выборе и вставке шаблона вам не нужно будет изменять вручную параметризованные переменные, как это делалось бы при вставке фрагмента или модели из библиотеки фрагментов. Значения всех переменных будут автоматически выбраны из соответствующей шаблону таблицы.

Безусловно, на разработку шаблонов уходит больше времени, а при создании и работе с библиотекой уже не обойтись одними навыками работы с КОМПАС-3D – нужно изучить принципы работы менеджера библиотек (для чего изрядно попотеть над справкой). Зато библиотека шаблонов дает возможность широко автоматизировать создание типовых элементов и, вместе с тем, не запрещает динамично управлять процессом формирования и вставки библиотечного элемента в графический или трехмерный документы.

Создание библиотек с помощью КОМПАС-Макро

КОМПАС-Макро – это интегрированная в систему КОМПАС-3D среда разработки конструкторских приложений на основе языка программирования Python. Почему за основу взят именно Python? Во-первых, Python распространяется бесплатно и, как следствие, нет никаких ограничений на использование программ, написанных на нем. И, во-вторых, на сегодняшний день Python – один из самых простых и понятных языков программирования. И при всей своей простоте он мало в чем уступает таким китам объектно-ориентированного программирования, как C++ или Delphi.

По сути, КОМПАС-Макро является обычной библиотекой, подключаемой к КОМПАС, только с очень большими возможностями. После установки среды Python и КОМПАС-Макро (их дистрибутивы входят в установочный комплект системы КОМПАС) библиотеку можно подключить к системе как обычный прикладной модуль – с помощью менеджера библиотек.

При создании приложений в КОМПАС-Макро можно пользоваться как функциями КОМПАС-Мастер (о них будет рассказано ниже), так и специальными функциями макросреды, облегчающими разработку прикладных библиотек. Среди специальных функций КОМПАС-Макро следует отметить возможности простановки угловых, линейных и радиальных размеров, функцию вставки в документ фрагмента, рисования линии-выноски и пр. Синтаксис перечисленных методов значительно проще их аналогов, реализованных в КОМПАС-Мастер (например, вместо вызова одной функции создания линейного размера, при работе с API-функциями в КОМПАС-Мастер приходится объявлять и инициализировать три интерфейса).

Чтобы использовать библиотеку КОМПАС-Макро, нужно обладать знаниями лексики и приемов работы с языком Python.

Если же вы не понаслышке знакомы с основами объектно-ориентированного программирования и у вас есть желание разрабатывать настоящие библиотеки на базе КОМПАС-3D, то для вас есть один путь – использование инструментальных средств разработки прикладных библиотек КОМПАС-Мастер.

КОМПАС-Мастер Во многих случаях одних средств параметризации для автоматизации тех или иных действий в процессе

проектирования недостаточно, и новые проектируемые 3D-модели или чертежи хоть и схожи с эталоном, но имеют различия, не позволяющие использовать параметрические зависимости при построении. Например, когда какие-либо значения принимаются конструктивно или выбираются из справочников в зависимости от третьих величин. Иногда расчетные параметры модели изменяются дискретно (например, модуль зубчатых колес всегда согласовывается со стандартными значениями и не может принимать значений, отличных от приведенных в ГОСТ) или не связаны аналитически с любым другим параметром. Для определения таких параметров в библиотеку необходимо заложить достаточно сложный и гибкий алгоритм. Он может включать расчеты любой сложности,

условия определения параметров, различные ограничения, связь с файлами данных и т. п. В таком случае никак не обойтись без программирования.

Для этой цели программный пакет КОМПАС-3D располагает очень мощными инструментальными средствами разработки дополнительных модулей (прикладных 500 библиотек) – КОМПАС-Мастер, которые позволяют использовать всю силу современного объектно-ориентированного программирования совместно с функциями КОМПАС для создания очень гибких и функциональных приложений. Хорошо владея одним из языков программирования и основами трехмерного моделирования в КОМПАС-3D, можно научиться самостоятельно разрабатывать различные по структуре программные модули для решения узко-профильных задач конструирования. Такие приложения смогут производить сложные вычисления, самостоятельно выбирать необходимые параметры из баз данных, обмениваться данными с внешними приложениями и, в конце концов, построить 3D-модель или чертеж неограниченной сложности с учетом всех параметров (вспомните хотя бы Редуктор3D, описанный в гл. 5).

Выбор того, что применять (параметризацию или программирование), зависит от поставленных перед вами задач. Если вам необходим просто набор надежно хранимых и удобных в использовании параметрических элементов, а главное – если с созданием самих этих элементов нет никаких проблем, конечно, лучше прибегнуть к параметризации и создавать простые библиотеки типовых элементов. Однако если вы планируете вводить в

проектируемый модуль сложные аналитические расчеты, предполагаете, что модуль будет принимать решения вместо проектировщика, взаимодействовать с внешними приложениями, считывать или сохранять данные, то этот модуль должен быть полноценной программой. Другими словами, к средствам программирования следует прибегать лишь тогда, когда вам необходимо создавать мини-САПР.

Конечно, практика разработки подключаемых модулей на языках Delphi, C++ и др. далеко не нова. Очень много известных приложений трехмерной графики формируют свою архитектуру открытой, предоставляя пользователям возможность расширять функциональность программ. Такими приложениями являются AutoCAD, Adobe Photoshop, 3ds Max (некоторые плагины для 3ds Max значительно расширяют функционал программы) и др. В этом разделе будет рассказано о создании пользовательских приложений на базе КОМПАС-3D в одной из самых популярных на сегодня сред программирования – Borland Delphi 7.

Внимание!

Данный раздел рассчитан на читателей как минимум знакомых с основами объектно-ориентированного программирования и имеющих представление о работе в программной среде Delphi 7. Вы должны знать основополагающие понятия программирования, такие как класс, объект, интерфейс, метод и пр. В противном случае рекомендую вам изучить какую-либо книгу о программировании в Delphi.

КОМПАС-Мастер предоставляет доступ как к функциям КОМПАС-График, так и к функциям трехмерного моделирования в КОМПАС-3D. Сам доступ может реализоваться двумя путями:

с использованием экспортных функций, оформленных в виде DLL-модулей, которые разработчик подключает к своей программе при создании плоских чертежей, и с применением СОМ-объектов – при программном формировании твердотельных моделей;

при помощи технологии Automation (автоматизации). Эта технология реализована через API (Application Programming Interface, интерфейс прикладного программирования) системы КОМПАС. Управление и взаимодействие с системой при этом оформлено через интерфейсы IDispatch.

Далее в этом разделе пойдет речь о программировании прикладных библиотек, работающих именно с трехмерным редактором КОМПАС-3D. По этой причине необходимо сказать о том, благодаря чему возможно создание таких прикладных модулей.

Технология COM, автоматизация и интерфейсы IDispatch

Поскольку программирование не является темой данной книги, мы не будем углубляться в суть понятий технологии COM и автоматизации. Я опишу эти вопросы вкратце, чтобы вы имели некоторое представление.

С начала 1990 годов корпорация Microsoft разрабатывает технологию, позволяющую создавать гибкие модульные программы таким образом, чтобы отдельные модули можно было писать на разных языках программирования, но чтобы при этом обеспечивалась их полная взаимозаменяемость при использовании в различных программных пакетах. На сегодня эта технология полностью сформирована и называется COM (Component Object Model, модель компонентных объектов).

Технология COM описывает методологию реализации компонентов программного обеспечения: объектов, которые могут повторно использоваться, могут быть неоднократно подключены к разным приложениям. Повторное использование компонентов стало логическим следствием эволюции объектно-ориентированного программирования и получило название компонентно-ориентированного подхода. Концепция компонентноориентированного программирования предусматривает полное отделение внутренних функций компонента от функций доступа к нему извне. Теперь, обращаясь к компоненту, необязательно знать его внутреннее устройство, для этого достаточно лишь иметь информацию о том, как вызывать его функции. Другими словами, необходимо знать, как взаимодействовать с компонентом и какой у него интерфейс. Такая функциональность в COM достигается за счет поддержки одного или нескольких интерфейсов, которые используются другими программами для доступа к внутренним членам и методам компонента.

Таким образом, интерфейс – это то, что размещено между двумя объектами и обеспечивает связь между ними. Интерфейс-ориентированное программирование представляет собой технологию разработки программного обеспечения, жестко нацеленную на использование интерфейсов. Интерфейс является своего рода связующим звеном, предоставленным управляющей программе для доступа к COM-объекту.

Объект COM – конкретный экземпляр COM-класса, завершенный объект с собственными членами данных и методами, который может легко встраиваться в программы или распространяться как отдельный программный продукт. COM-объект представляет собой или DLL-библиотеку или ЕХЕ-программу для Wіndows, которые можно создавать в любой среде программирования, способной поддерживать нужный формат представления. COMобъект может иметь много функций, доступ к которым происходит через его интерфейсы. Любой COM-объект должен иметь по крайней мере одни интерфейс ІUnknown, хотя на самом деле имеет их значительно больше.

В свое время разработчики технологии COM пришли к заключению, что должен существовать некоторый механизм запроса интерфейса для определения его возможностей. Этот запрос также должен существовать для того, чтобы обеспечить обновление клиентскими программами значения счетчика ссылок на данный интерфейс. Данный счетчик определяет, как долго интерфейс будет оставаться доступным, прежде чем он будет удален из памяти. Именно для этой цели существует специальный интерфейс, который называется ІUnknown. Он имеет настолько важное значение, что основной принцип спецификации СОМ требует, чтобы все СОМ-объекты кроме своих специализированных интерфейсов поддерживали интерфейс ІUnknown. Причем каждый определенный для объекта интерфейс должен происходить от ІUnknown или от интерфейса, который в свою очередь сам происходит от ІUnknown. Данный принцип называется наследованием интерфейсов. В интерфейсе ІUnknown реализовано лишь три метода: Queryіnterface(), AddRef() и Release(). Метод Queryіnterface() определяет, является ли полученный интерфейс нужным. Методы AddRef() и Release() используются для подсчета ссылок на данный

интерфейс при его применении многими программами. Перед началом использования COM-объекта клиент вызывает метод СОМ, тем самым увеличивая количество ссылок на интерфейс на единицу. После окончания работы с интерфейсом клиент должен вызвать функцию Release(), чтобы уменьшить количество ссылок на единицу. Когда счетчик ссылок для всех интерфейсов станет равным нулю, значит, объект больше никем не используется и его можно выгружать из памяти.

На сегодняшний день технология СОМ используется практически во всех серьезных программах. Приведу один пример. Предположим, что пользователю в каком-нибудь отчете нужно поместить электронную таблицу с расчетами, которые ссылаются на определенные параметры в тексте. Чтобы выполнить любые вычисления без использования технологии СОМ, пришлось бы постоянно переключаться между двумя программами (Word и Excel), а информацию копировать (вырезать и вставлять). При помощи технологии COM можно применять функции электронной таблицы прямо в текстовом редакторе и автоматически форматировать полученный результат. Возможность реализовать операции такого рода называется автоматизацией.

Цель автоматизации состоит в том, чтобы дать возможность программе предоставлять в использование сервисы, которые в ней присутствуют. Основной особенностью автоматизации является возможность комбинировать функции различных специализированных приложений в одном модуле. СОМ дает возможность программам передавать свою информацию в другие приложения и модули. Если бы каждая программа или приложение-сценарий могли бы поддерживать указатели и процедуру обхода указателей, то проблема была бы решена. Однако в некоторых языках программирования есть определенная трудность с процедурой обхода таблицы указателей. Некоторые из них, например Vіsual Basіc, не поддерживают указатели напрямую. Для решения этой проблемы был разработан специальный интерфейс, который разрешает любым языкам