KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программы » Максим Кидрук - КОМПАС-3D V10 на 100 %

Максим Кидрук - КОМПАС-3D V10 на 100 %

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Максим Кидрук - КОМПАС-3D V10 на 100 %". Жанр: Программы издательство -, год -.
Перейти на страницу:

doc3 := ksDocument3D(kompas.ActiveDocument3D());

// если указатель nil или документ является деталью

if (doc3 = nil) or (doc3.IsDetail) then

begin

// выдаем сообщение и прекращаем работу библиотеки

kompas.ksMessage(“Текущий документ не является сборкой!”);

kompas := nil;

exit;

end;

6. После закрытия диалогового окна библиотеки документ КОМПАС-Деталь, который и так создавался в невидимом режиме, закрывается, поэтому ничего пока происходить не будет. Чтобы организовать вставку модели фантомом в произвольную точку сборки, после завершения модального показа окна библиотеки должен выполниться следующий код (листинг 6.17). Разумеется, переменные doc3, rInfo и iPart должны быть предварительно объявлены в разделе var функции LibraryEntry.

Листинг 6.17. Вставка модели колеса в сборку фантомом

// если построение не было отменено

if not GearsForm.cancel then

begin

// возвращаем доступ к главному окну

kompas.ksEnableTaskAccess(1);

// получаем интерфейс новой детали в сборке

iPart := ksPart(doc3.GetPart(pNew_Part));

// устанавливаем имя файла компонента

iPart.fileName := “C:gear.m3d”;

// интерфейс запроса пользователя об указании

// точки вставки

rInfo := ksRequestInfo3D(doc3.GetRequestInfo(iPart));

// задаем функцию обратной связи

rInfo.SetCallBack(“SELECTCALLBACKPROC”, hInstance, nil);

// создаем фантом колеса

rInfo.CreatePhantom;

// если пользователь установил компонент

if doc3.UserGetPlacementAndEntity(0) then

begin

// размещаем его

iPart.SetPlacement(rInfo.GetPlacement);

doc3.SetPartFromFile(“C:gear.m3d”, iPart, true);

iPart.UpdatePlacement;

end;

end

else kompas.ksEnableTaskAccess(1);

7. После завершения работы библиотеки (пользователь указал точку вставки и зафиксировал компонент) уничтожаем форму и обнуляем все использовавшиеся переменные (листинг 6.18).

Листинг 6.18. Обнуление переменных

GearsForm.Free; // освобождаем объект формы

Application.Handle := 0; // обнуляем дескриптор главного окна

doc3.SetActive; // делаем активным окно текущей сборки

doc3 := nil; // обнуляем указатель на документ

kompas := nil; // и на КОМПАС

В листинге 6.17 одним из методов интерфейса ksRequestInfo3D объекту этого интерфейса передается адрес функции обратного вызова SELECTCALLBACKPROC. Эту функцию система вызывает из библиотеки каждый раз, когда пользователь указывает какой-либо объект в окне документа или фиксирует точку. В общем случае внутри этой функции происходит фильтрация указанных пользователем объектов и реализация определенных действий по результатам фильтрации. Например, при вставке болта из библиотеки стандартных изделий вы сначала указываете цилиндрическую поверхность, куда вставится болт (то есть отверстие под болт), а потом плоскую грань, на которую установится шапочка болта. Причем система точно знает, что именно вы указали (сначала цилиндрическую грань, затем плоскую) и какие сопряжения в зависимости от заданного трехмерного элемента накладывать на библиотечный элемент. Это и есть пример действия функции обратного вызова.

В нашей программе мы не будем реализовывать фильтр выбранных объектов, то есть при вставке модели колеса в документ нужно будет просто указать точку в трехмерном пространстве сборки. По этой причине функция обратного вызова будет чрезвычайно проста (листинг 6.19).

Листинг 6.19. Функция обратного вызова

function SelectCallBackProc(entity: ksEntity; rInfo: ksRequestInfo3D): integer;

stdcall; Export;

begin

Result := 1;

end;

Чтобы КОМПАС мог вызывать эту функцию из библиотеки, ее обязательно следует объявить как экспортную (листинг 6.20).

Листинг 6.20. Добавление функции обратного вызова в раздел exports

exports

LibraryName name “LIBRARYNAME”,

LibraryId name “LIBRARYID”,

LibraryEntry name “LIBRARYENTRY”,

SelectCallBackProc name “SELECTCALLBACKPROC”;

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

Рис. 6.26. Вставка модели, созданной библиотекой, в виде фантома в произвольную точку сборки


Чтобы вставить модель зубчатого колеса в сборку, необходимо указать точку вставки, щелкнув кнопкой мыши в нужном месте окна представления документа или задав координаты вручную, после чего обязательно нажать кнопку Создать объект на панели специального управления (или воспользоваться сочетанием клавиш Ctrl+Enter).

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

Рис. 6.27. Сообщение библиотеки о неверном типе документа


С помощью такой обновленной библиотеки вы можете создавать сразу несколько различных зубчатых колес и вставлять их в сборку (рис. 6.28).

Рис. 6.28. Трехмерные модели зубчатых колес, создаваемые библиотекой Gears miniCAD


Файлы с исходными кодами этой версии мини-САПР зубчатых колес вы найдете на прилагаемом к книге компакт-диске в папке ExamplesГлава 6Delphi ProgrammingGearsEx. В этом же каталоге размещен уже скомпилированный файл библиотеки GearsEx.rtw.

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

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

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

Резюме

В данной главе рассмотрены способы расширения стандартных возможностей, предоставляемых системой КОМПАС-3D.

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

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

Глава будет полезна всем, кто хочет получить от КОМПАС больше, научиться расширять его функционал, максимально упрощая и ускоряя процесс проектирования и выпуска документации.

Заключение

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

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*