Как сделать макроэлемент в компасе

Конструкторские библиотеки и инструменты для их создания в системе КОМПАС-3D

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

Как уже отмечалось, ни один набор библиотек к графической системе не может охватить всё множество различных направлений и отраслей промышленности и в полной мере удовлетворить требования всех категорий пользователей. Спектр задач конструкторско-технологической подготовки производства стал настолько широким, что решение некоторых из них как стандартными, так и прикладными средствами, предоставленными компанией — разработчиком ПО, может отнимать слишком много времени и быть нерациональным, а в редких случаях даже невозможным.

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

Перечислим основные способы создания библиотек:

• создание библиотеки фрагментов (эскизов) или моделей на основе базовых возможностей системы КОМПАС-3D;

• создание библиотеки шаблонов с помощью Менеджера шаблонов;

• использование специальной макросреды КОМПАС-Макро для подготовки пользовательского приложения;

• применение инструментальных средств КОМПАС-Мастер, то есть собственно написание (программирование) библиотек.

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

Создание библиотек фрагментов и моделей

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

Создать свою библиотеку фрагментов совсем несложно. Для этого в окне Менеджера библиотек нужно воспользоваться командой контекстного меню Добавить описание > Библиотеки документов. В появившемся диалоговом окне открытия библиотеки следует выбрать тип файла: КОМПАС-Библиотеки фрагментов (*.lfr), если вы создаете хранилище для чертежей или эскизов, или КОМПАС-Библиотеки моделей (*.l3d) — для наполнения будущей библиотеки 3D-моделями. В итоге в окне Менеджера библиотек должна появиться ваша библиотека, пока еще пустая. После запуска к ней можно добавлять фрагменты и модели с помощью команд контекстного меню.

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

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

Более широкими возможностями, по сравнению с библиотеками фрагментов, обладают библиотеки шаблонов КОМПАС-3D.

Как сделать макроэлемент в компасе

Создание библиотеки моделей

Как сделать макроэлемент в компасе

Пример пользовательской библиотеки, содержащей модели шпонок, и ее применение

Как сделать макроэлемент в компасе

Пример пользовательской библиотеки шаблонов для создания трехмерной модели гайки

Создание библиотек шаблонов

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

Разработку шаблона следует начинать с создания его прототипа (фрагмента или детали), пользуясь стандартными средствами КОМПАС-График или КОМПАС-3D. Затем необходимо параметризовать вычерченный фрагмент или эскизы модели и назначить внешними все переменные, которые вы планируете вводить (набирать) в таблице Excel. Следующим шагом является создание таблицы значений. Такая таблица формируется в редакторе Excel и включает названия внешних параметризованных переменных, флаги видимости колонок значений в Менеджере шаблонов, конкретные значения или их интервал для каждой переменной и др. Детально с правилами заполнения таблиц к шаблонам вы можете ознакомиться в файле-справке и примерах, поставляемых вместе с библиотекой шаблонов. Формирование еще одной составной части шаблона — схемы параметров — не вызовет особых затруднений. Схемой может быть любой графический файл системы КОМПАС-3D или файл-рисунок в формате *.bmp, *.gif или *.jpg.

Когда все три рассмотренных выше компонента подготовлены, их нужно собрать в единое приложение. Для этого, пользуясь командой Новая библиотека, следует указать название будущей библиотеки и папку, где она будет размещена. Далее необходимо оформить внутреннюю древовидную структуру библиотеки, то есть разделы и подразделы, в которых будут находиться подготовленные вами шаблоны.

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

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

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

Как сделать макроэлемент в компасе

Создание прикладных библиотек с помощью API

Как сделать макроэлемент в компасе

Муфты, сгенерированные с помощью приложения, разработанного в среде КОМПАС-Мастер

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

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

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

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

Как сделать макроэлемент в компасе

Среда разработки прикладных библиотек к КОМПАС-3D

КОМПАС-Мастер

КОМПАС-Мастер… Согласитесь, звучит несколько загадочно. Навевает мысли об утилите наподобие Мастера записи компакт-дисков в Windows. Но оказывается, все намного серьезнее.

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

Доступ к внутренним функциям КОМПАС-График и КОМПАС-3D обеспечивается двумя путями:

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

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

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

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

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

Зато, преодолев все эти трудности, вы получите удобное и гибкое приложение, обладающее функциональностью и интерфейсом, которые полностью удовлетворяют вашим требованиям. Программу можно заставить «думать» — самостоятельно выбирать, анализировать и обрабатывать необходимые данные, производить определенные действия в зависимости от прочитанных значений, делать сложные расчеты и выводы по их результатам и пр. И всё это для того, чтобы максимально облегчить работу инженера, избавить его от выполнения рутинных операций.

Заключение

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

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

Источник

Как сделать макроэлемент в компасе

• Создание библиотек фрагментов и моделей

• Создание библиотек шаблонов

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

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

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

Возникает вопрос: а что же делать тем предприятиям и проектным организациям, которые со своими специфическими требованиями не попадают под большинство, и их не устраивают стандартные библиотеки КОМПАС? На самом деле проблемы нет – они могут делать библиотеки сами!

Создать собственную библиотеку можно одним из четырех способов:

• организовать библиотеку параметризированных фрагментов (эскизов) или моделей на основе базовых возможностей системы КОМПАС-3D;

• создать библиотеку шаблонов с помощью специального приложения – Менеджера шаблонов;

• использовать специальную макросреду КОМПАС-Макро для подготовки пользовательского приложения;

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

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

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

Создание библиотек фрагментов и моделей

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

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

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

Создать свою библиотеку фрагментов совсем несложно. Для этого в окне менеджера библиотек нужно воспользоваться командой контекстного меню Добавить описание > библиотеки документов. В появившемся диалоговом окне открытия библиотеки следует выбрать тип файла: КОМПАС-Библиотеки фрагментов (*.lfr), если вы создаете хранилище для чертежей или эскизов, или КОМПАС-Библиотеки моделей (*.l3d), для наполнения будущей библиотеки 3D-моделями. Далее в поле Имя файла необходимо набрать название вашей библиотеки и нажать кнопку Открыть. Поскольку самого файла библиотеки фрагментов еще не существует, система выдаст запрос, создавать ли его, на который следует ответить утвердительно. В результате в окне менеджера библиотек должна появиться ваша библиотека, пока еще пустая. После ее запуска в ней можно помещать новые разделы, добавлять или формировать фрагменты и модели с помощью команд контекстного меню.

Создадим небольшую библиотеку параметризированных фрагментов. Пусть она будет содержать всего один, но весьма полезный и часто используемый в чертежах элемент, – профиль шпоночного паза.

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

Как сделать макроэлемент в компасе

Рис. 6.1. Включение автоматической параметризации для текущего фрагмента

Далее, пользуясь вспомогательной геометрией, самостоятельно вычертите изображение шпоночного паза так, чтобы его геометрический центр совпадал с началом координат фрагмента (рис. 6.2). В начале координат установите графический объект точка (команда Точка) и зафиксируйте ее. Чтобы зафиксировать точку, нажмите кнопку Зафиксировать точку

Как сделать макроэлемент в компасе

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

Как сделать макроэлемент в компасе

Рис. 6.2. Параметрическое изображение профиля шпоночного паза

Если после параметризации у вас на чертеже не отображаются ограничения, наложенные на графические объекты (вертикальность, совпадение точек), выполните команду Отображать ограничения

Как сделать макроэлемент в компасе

(кнопка находится на панели Параметризация).

Теперь необходимо установить размеры паза и переменные, соответствующие каждому размеру.

1. Перейдите на панель инструментов Размеры и с помощью команды Линейный размер постройте четыре размера: первые два обозначающие ширину и рабочую длину паза, остальные два – расстояние от начала координат до крайней точки по ширине и крайней точки по длине (до скругления). Очевидно, что последние два размера равны половине соответствующих им первых двух размеров. После этого вызовите команду Радиальный размер и установите размеры радиусов закругления краев шпонки.

2. Вернитесь на панель инструментов Параметризация и нажмите кнопку Установить значение размера

Как сделать макроэлемент в компасе

По очереди щелкайте на каждом созданном размере и в окне Установить значение размера (рис. 6.3) вводите имена переменных фрагмента: для ширины и длины паза задайте переменные b и l, для двух других линейных размеров – b_2 и l_2, переменные, отвечающие радиусам скругления, установите равными b_2. Кроме того, все размеры, кроме длины и ширины паза, должны отмечаться как информационные (то есть их нельзя будет поменять вручную – изменяются они только в результате перестроения паза при изменении одной или нескольких неинформационных переменных).

Как сделать макроэлемент в компасе

Рис. 6.3. Установка значения размера и имени переменной

3. Вызовите окно редактора формул (кнопка Переменные на панели инструментов Стандартная). На вкладке Переменные появившегося окна в столбцах напротив переменных, отвечающих рабочей длине и ширине паза, установите флажок Внешняя (рис. 6.4), а на вкладке Уравнения задайте соотношения между параметрическими переменными: b=b_2*2 и l=l_2*2.

Как сделать макроэлемент в компасе

Рис. 6.4. Завершение выполнения параметрического чертежа шпоночного паза

Вкладка (панель) Уравнения вызывается щелчком на одноименной кнопке панели инструментов редактора формул.

Формирование параметрического фрагмента закончено. Теперь можно приступить к созданию библиотеки.

1. Выполните команду Добавить описание > библиотеки документов, в появившемся окне введите имя библиотеки – Шпоночный паз. После утвердительного ответа на запрос о создании библиотеки (рис. 6.5) вам будет предложено задать имя библиотеки, которое будет отображаться в менеджере библиотек. Введите, например, Профиль шпоночного паза и нажмите OK для подтверждения создания библиотеки.

Как сделать макроэлемент в компасе

Рис. 6.5. Запрос подтверждения создания библиотеки фрагментов

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

Как сделать макроэлемент в компасе

Рис. 6.6. Добавление фрагмента в библиотеку

Вы можете создать фрагмент прямо в библиотеке. Для этого служит команда контекстного меню Новый фрагмент.

После добавления фрагмента библиотека будет выглядеть следующим образом (рис. 6.7).

Как сделать макроэлемент в компасе

Рис. 6.7. Фрагмент добавлен в библиотеку

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

Как сделать макроэлемент в компасе

Рис. 6.8. Изменение значения внешних переменных фрагмента из библиотеки

Файлы параметризированного фрагмента (Шпоночный паз.frw) и самой библиотеки фрагментов (Шпоночный паз.lfr) находятся на прилагаемом к книге компакт-диске в папке Examples\Глава 6.

Аналогично создаются библиотеки моделей. Рассмотрим небольшой пример.

Создавать параметрический трехмерный элемент нет необходимости, вы можете воспользоваться готовым, который был разработан в примерах к третьей главе (файл Параметризация.m3d в папке Examples\Глава 3). Как вы помните, в этом примере была выполнена параметрическая модель куба со скругленными ребрами, перестраивающаяся при изменении длины ребра. Однако перед дальнейшим использованием этой модели в библиотеке необходимо ее немного доработать.

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

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

Как сделать макроэлемент в компасе

Рис. 6.9. Объявление переменной модели внешней

Далее порядок действий такой же, как и при формировании библиотеки фрагментов. Выполняем команду контекстного меню Добавить описание > библиотеки документов, только в списке Тип файла выбираем КОМПАС-Библиотеки моделей (*.l3d) и создаем библиотеку. Имя можете присвоить произвольное, например Куб.l3d.

В библиотеку моделей вы можете добавлять как сборки, так и модели. Предусмотрена возможность создавать сборку или модель непосредственно в библиотеке. Элемент в состав библиотеки добавляется так же, как и для библиотек фрагментов, – с помощью контекстного меню. После добавления модели куба в библиотеку она будет выглядеть следующим образом (рис. 6.10).

Как сделать макроэлемент в компасе

Рис. 6.10. Простая пользовательская библиотека моделей

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

Список переменных с их текущими значениями размещается на вкладке Параметры панели свойств (рис. 6.11).

Как сделать макроэлемент в компасе

Рис. 6.11. Настройки вставки параметрического элемента из библиотеки моделей

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

Файл библиотеки моделей Куб.l3d, а также измененный файл параметрического куба Параметризация.m3d находятся на прилагаемом к книге компакт-диске в папке Examples\Глава 6.

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

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

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

Более широкими возможностями, по сравнению с библиотеками фрагментов, обладают библиотеки шаблонов КОМПАС-3D.

Создание библиотек шаблонов

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

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

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

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

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

Как сделать макроэлемент в компасе

Рис. 6.12. Начало создания библиотеки шаблонов

Далее необходимо оформить древовидную структуру библиотеки, то есть разделы и подразделы, в которых будут размещены подготовленные вами шаблоны. Для этой цели на панели инструментов и в меню менеджера шаблонов есть команда Создать раздел. Завершающий этап подготовки библиотеки – наполнение разделов соответствующими шаблонами, для чего нужно воспользоваться командой Редактор > Создать шаблон. После ее выполнения появится окно, в котором для каждого шаблона нужно будет ввести имя, указать файл с параметризированным фрагментом или моделью, файл таблицы параметров 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, не поддерживают указатели напрямую. Для решения этой проблемы был разработан специальный интерфейс, который разрешает любым языкам программирования, в том числе таким, как Vіsual Basіc, обращаться к методам COM-компонентов. Этот интерфейс получил название ІDіspatch.

Итак, любая программа, которая предоставляет свои возможности другим приложениям (поддерживает автоматизацию), может делать это через интерфейс ІDіspatch. Интерфейс ІDіspatch происходит от базового интерфейса модели СОМ ІUnknown, тем не менее, в отличие от других COM-интерфейсов, ІDіspatch содержит метод Іnvoke(). Его можно использовать для действительного выполнения методов, которые поддерживает COM-объект. Клиент может выполнить любой метод COM-объекта, вызвав метод Іnvoke() интерфейса ІDіspatch. Этот механизм работает при помощи диспинтерфейса (интерфейса диспетчеризации). Диспинтерфейс определяет методы, которые будут доступны благодаря использованию метода Іnvoke() интерфейса ІDіspatch.

Интерфейсы IDispatch можно применять в любой из наиболее распространенных сегодня сред программирования (Visual C++ Studio, Borland Delphi, Borland C++Builder, Visual Basic). Именно этим КОМПАС-Мастер выгодно отличается от КОМПАС-Макро: вам не придется изучать малознакомый язык программирования, вы можете создавать свои приложения в той среде, к которой привыкли.

Базовые интерфейсы API системы КОМПАС

Как вы уже поняли, взаимодействие внешнего приложения или подключаемого модуля с системой КОМПАС (с функциями моделирования, математическими функциями ядра системы и пр.) осуществляется посредством программных интерфейсов, называемых API. В КОМПАС на данный момент существуют API двух версий: API 5 и API 7. Сразу предостерегаю вас от ошибочного мнения, что API 7 – это усовершенствованный и более новый вариант программных интерфейсов пятой версии. На самом деле обе версии реализуют различные функции системы и взаимно дополняют друг друга. Отсюда, полагаю, очевидно, что обе версии программных интерфейсов в равной мере поддерживаются и развиваются с учетом самих изменений в системе.

В основном, для создания полноценных подключаемых модулей достаточно методов и свойств интерфейсов API 5.

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

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

Таблица 6.1. Методы интерфейса KompasObjectКак сделать макроэлемент в компасе
Как сделать макроэлемент в компасе

Описание прототипов всех приведенных функций, а также других методов, составляющих интерфейс KompasObject, вы найдете в справке по API КОМПАС. Файл этой справки размещается в каталоге SDK, находящейся в папке, в которой установлен КОМПАС (например, по умолчанию это C:\Program Files\ASCON\KOMPAS-3D V10\SDK).

Другой важный интерфейс API 5 – интерфейс документа модели ksDocument3D.

Получить его можно с помощью методов интерфейса KompasObject:

• ActiveDocument3D – для уже существующего и активного в данный момент документа;

• Document3D – если вы планируете создавать новый трехмерный документ.

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

Свойства (члены данных) этого интерфейса позволяют динамически управлять настройками любого трехмерного документа системы из вашего модуля. Наиболее используемые из них приведены в табл. 6.2.

Таблица 6.2. Свойства интерфейса ksDocument3DКак сделать макроэлемент в компасе

Методы этого интерфейса позволяют программно управлять трехмерным документом, как сборкой и ее компонентами, так и отдельной деталью. Обратите внимание: именно управлять самим документом, но не выполнять в нем трехмерные операции! Методы, которые могут пригодиться вам при программировании подключаемых модулей, собраны в табл. 6.3.

Таблица 6.3. Методы интерфейса ksDocument3DКак сделать макроэлемент в компасе

Важнейший из перечисленных в табл. 6.3 методов – ksDocument3D::GetPart. Входящим параметром этой функции является целочисленная переменная type_, которая определяет, интерфейс какого именно компонента сборки возвращать. Данная переменная имеет несколько предопределенных значений (констант):

• plnPlace_Part (равняется –4) – метод возвращает указатель на компонент, который находится в режиме контекстного редактирования (то есть редактирования «на месте»);

• pNew_Part (–3) – создает в модели новый компонент и возвращает указатель на него;

• pEdit_Part (–2) – возвращает указатель на редактируемый компонент (с помощью библиотеки);

• pTop_Part (–1) – верхний компонент, в состав которого входит или новый, или редактируемый, или указанный компонент;

• все остальные значения (от 0 и выше) отвечают номеру компонента в дереве построения, то есть возвращается указатель на существующий в сборке компонент.

Метод ksDocument3D::GetPart возвращает указатель на интерфейс детали или компонента сборки – ksPart. Свойства и методы этого интерфейса (часть из которых приведена в табл. 6.4 и табл. 6.5) управляют состоянием компонентов сборки, они почти полностью дублируют команды контекстного меню и панели свойств, доступные пользователю при работе с тем или иным компонентом.

Таблица 6.4. Свойства интерфейса ksPartКак сделать макроэлемент в компасе

Как видите, все эти методы лишь управляют состоянием компонента (задают видимость, размещение, определяют, запущено ли редактирование компонента), но не дают возможность ничего создавать (выполнять операции).

Для программной реализации всех трехмерных операций, которые пользователи выполняют в трехмерных документах системы КОМПАС-3D, в API реализован единый интерфейс ksEntity – интерфейс элемента модели. Этот интерфейс можно получить с помощью метода ksPart::NewEntity, которому необходимо передать тип создаваемого элемента. Типов элементов в системе, как и в API системы, большое множество. Каждому из них отвечает своя целочисленная константа и свой собственный интерфейс параметров. Именно с помощью настроек (свойств и методов) этих интерфейсов и создаются любые возможные объекты в деталях и сборках КОМПАС-3D. Некоторые константы с описанием типа элемента и интерфейса, к которому они относятся, приведены в табл. 6.6. Сведения об остальных вы можете почерпнуть из файла справки SDK.hlp, поставляемого вместе с системой КОМПАС.

Таблица 6.5. Методы интерфейса ksPartКак сделать макроэлемент в компасе
Таблица 6.6. Типы объектов трехмерного документаКак сделать макроэлемент в компасе
Как сделать макроэлемент в компасе

Члены данных интерфейса ksEntity соответствуют свойствам трехмерных элементов модели (о свойствах трехмерной модели читайте в подразд. «Свойства трехмерных объектов» разд. «Твердотельное моделирование в КОМПАС-3D» гл. 3).

Среди методов наиболее важными являются три следующих:

• Create – создает трехмерную операцию или объект вспомогательной геометрии по заданным настройкам;

• ColorParam – возвращает указатель на интерфейс настроек цвета и оптических свойств элемента;

• GetDefinition – получает указатель на интерфейс параметров объекта определенного типа (параметры данного трехмерного элемента). Именно с помощью этого метода можно получить указатель на любой интерфейс, приведенный в столбце «Интерфейс параметров» табл. 6.6.

Таким образом, создание какой-либо трехмерной операции пользовательской программой сводится к такой последовательности шагов.

1. Инициализация главного интерфейса приложения API – KompasObject. Он инициализируется один раз для всего сеанса работы программы.

2. Инициализация интерфейса трехмерного документ ksDocument3D, с последующим созданием нового документа или получением указателя на активный документ.

3. Создание компонента и получение на него указателя (интерфейс ksPart). Для сборки это может быть готовый компонент, компонент, вставленный из файла или созданный «на месте». Для детали необходимо получить указатель на компонент типа pTop_Part.

4. Создание с помощью метода ksPart::NewEntity интерфейса нужной нам операции. При этом в метод передается соответствующий идентификатор (например, для выдавливания – o3d_bossExtrusion).

5. Получение с помощью метода ksEntity::GetDefinition указателя на интерфейс параметров конкретной операции (для выдавливания этим интерфейсом является ksBossExtrusionDefinition). Настройка этих параметров необходимым пользователю образом.

6. Создание операции с помощью метода ksEntity::Create.

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

Таблица 6.7. Некоторые дополнительные интерфейсы API КОМПАС Как сделать макроэлемент в компасе

Пример программной реализации трехмерной операции

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

Листинг 6.1. Раздел объявлений функции построения операции выдавливания

// интерфейс трехмерного документа

// интерфейс графического документа

// используется для создания изображения в эскизе

// интерфейс плоскости, на которой будет размещен эскиз

// интерфейс параметров эскиза

// интерфейс операции выдавливания

// интерфейс параметров операции выдавливания

// интерфейс параметров цвета операции выдавливания

Предположим, что документ-деталь и эскиз с окружностью радиусом 40 мм на плоскости XY уже созданы (это значит, что объекты doc3, doc2, planeXOY, iSketch, iSketchDef уже созданы и проинициализированы).

Для выполнения операции выдавливания пользователь на панели инструментов Редактирование детали нажимает кнопку Операция выдавливания. При этом на панели свойств, которая по умолчанию закреплена в нижней части окна программы, отображаются вкладки с настройками данной операции (некоторые значения установлены по умолчанию), в результате чего пользователь получает возможность изменять эти настройки (рис. 6.15).

Как сделать макроэлемент в компасе

Рис. 6.15. Настройки операции выдавливания на панели свойств

Программно это все реализуется следующим образом (листинг 6.2).

Листинг 6.2. Получение интерфейсов операции выдавливания и ее параметров

// iPart – указатель на объект класса ksPart,

// верхний элемент дерева построения детали

// создание интерфейса операции выдавливания

// с помощью метода ksPart::NewEntity,

// которому передаем идентификатор o3d_bossExtrusion

if (iBossExtrusion <> nil) then

// если создание прошло успешно

// инициализируем интерфейс настроек операции выдавливания

if (iBossDef <> nil) then

Несколько замечаний. Данный фрагмент кода будет работать лишь в версиях КОМПАС-3D V8 Plus или выше, поскольку в этих версиях появилась возможность многотельного моделирования. При написании программ для более ранних версий КОМПАС, в качестве первой (подчеркиваю – лишь первой) операции выдавливания вместо константы типа o3d_bossExtrusіon следует использовать o3d_baseExtrusіon, то есть базовую операцию выдавливания (так как в КОМПАС-3D V8 и более ранних версиях в детали могло быть лишь одно тело, имеющее общую базовую формообразующую операцию). Для всех следующих операций нужно применять o3d_bossExtrusіon, как и в КОМПАС-3D V8 Plus и более поздних версиях. Еще одно отличие версии КОМПАС-3D V8 Plus от предыдущих состоит в названии класса для получения определения интерфейса (параметров операции). При многотельном моделировании можно сразу использовать ksBossExtrusіonDefіnіtіon, в более ранних версиях КОМПАС первым всегда должен применяться интерфейс ksBaseExtrusіonDefіnіtіon, а все следующие за ним – ksBossExtrusіonDefіnіtіon. Это, тем не менее, не приводит к серьезным усложнениям, так как методы и свойства этих двух классов идентичны.

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

Даже если вы создаете плагин для версии КОМПАС-3D V8 Plus или выше, все равно желательно не забывать о первой операции, как о базовой. Мало ли в какой версии КОМПАС будут работать пользователи с вашей программой.

Теперь рассмотрим параметры операции выдавливания и способы их настройки.

1. Направление выдавливания в КОМПАС выбирается из раскрывающегося списка Направление на панели свойств (рис. 6.16).

Как сделать макроэлемент в компасе

Рис. 6.16. Выбор направления операции выдавливания

Программным аналогом направления является свойство directionType (тип – SmallInt) интерфейса ksBossExtrusіonDefіnіtіon (или ksBaseExtrusіonDefіnіtіon). Для него предопределены четыре значения:

• dtNormal (прямое направление) – направление добавления материала совпадает с направлением нормали к базовой плоскости (то есть плоскости, в которой размещается эскиз выдавливания);

• dtReverse (обратное направление) – направление выдавливания противоположно направлению нормали;

• dtBoth (в оба направления) – величина выдавливания задается отдельно для каждого направления;

• dtMіddlePlane (средняя плоскость) – выдавливание происходит в обе стороны от базовой плоскости на одинаковое расстояние, равное половине от указанной пользователем величины выдавливания.

Направление выдавливания устанавливается очень просто (листинг 6.3).

Листинг 6.3. Задание направления выдавливания

if (iBossExtrusion <> nil) then

if (iBossDef <> nil) then

// задаем направление выдавливания

2. Способ выдавливания (рис. 6.17).

Как сделать макроэлемент в компасе

Рис. 6.17. Выбор способа выдавливания

Для этого типа настроек в API системы также предусмотрены константы:

• etBlіnd (на расстояние) – проводит выдавливание на величину, заданную в поле Расстояние 1 (или Расстояние 2, если задано направление dtReverse или dtBoth);

• etThroughAll (через все) – при наличии другой геометрии (других формообразующих операций) выдавливание происходит через все тело детали; значение величины выдавливания игнорируется;

• etUpToVertexTo, etUpToVertexFrom (до вершины) – система переходит в режим ожидания указания пользователем вершины, до которой будет осуществлено выдавливание. Введенное значение величины выдавливания игнорируется. В программе эту вершину следует задать явно еще на этапе разработки проекта;

• etUpToSurfaceTo, etUpToSurfaceFrom (до поверхности) – аналогично режиму построения до вершины, в данном режиме система ожидает выбора пользователем трехмерной поверхности. Значение величины выдавливания также игнорируется. Как и для вершины, плоскость в программе следует указывать явно;

• etUpToNearSurface (к ближайшей поверхности) – выдавливание проводится к ближайшей поверхности, которую система автоматически определяет в направлении выдавливания.

3. Расстояние выдавливания – вводится пользователем в соответствующем текстовом поле (полях).

4. Угол наклона операции выдавливания. На панели свойств задается направление наклона (внутрь или наружу), а также сам угол наклона.

Параметры операции, описанные в пп. 2–4, устанавливаются с помощью единого метода интерфейса ksBossExtrusіonDefіnіtіon::SetSideParam (листинг 6.4).

Листинг 6.4. Задание способа, величины выдавливания, а также угла наклона

if (iBossExtrusion <> nil) then

if (iBossDef <> nil) then

// Если первый параметр имеет значение true,

// это значит, что все следующие параметры

// задаются для направления выдавливания dtNormal.

// Если установить значение параметра равным false,

// значит все следующие параметры

// определяются для обратного направления.

// Второй параметр задает способ выдавливания (etBlind);

// третий параметр – величина выдавливания (25 мм);

// четвертый параметр false – уклон вглубь (true – наружу)

// последний параметр – величина уклона в градусах

iBossDef.SetSideParam(true, etBlind, 25, false, 10);

5. На вкладке Тонкая стенка пользователь может управлять параметрами толщины и способа формирования тонкой стенки или установить режим выдавливания сплошного тела (рис. 6.18).

Как сделать макроэлемент в компасе

Рис. 6.18. Выбор режима построения тонкой стенки

В программе это задается следующим образом (листинг 6.5). В примере выполняется операция выдавливания без тонкой стенки.

Листинг 6.5. Задание параметров тонкой стенки

if (iBossExtrusion <> nil) then

if (iBossDef <> nil) then

iBossDef.SetSideParam(true, etBlind, 25, false, 10);

// первый параметр false указывает на то,

// надо ли строить тонкую стенку

// второй параметр задает направление выдавливания

// третий и четвертый параметры определяют толщину стенки

// в прямом и обратном направлениях соответственно

iBossDef.SetThinParam(false, dtNormal, 0, 0);

// устанавливаем эскиз операции

В этом фрагменте кода также был задан эскиз операции с помощью метода ksBossExtrusіonDefіnіtіon::SetSketch. Мы приняли, что сам эскиз, как и упоминалось ранее, был создан до начала выполнения операции выдавливания.

На вкладке Свойства можно также настроить цвет и оптические свойства создаваемого элемента. При программном построении элемента для этого сначала необходимо инициализировать еще один дополнительный интерфейс – ksColorParam. С помощью его свойств можно управлять визуальными характеристиками трехмерного элемента. Внесенные в функцию построения изменения показаны в листинге 6.6.

Листинг 6.6. Установка визуальных свойств

if (iBossExtrusion <> nil) then

// присваиваем имя трехмерной операции,

// которое будет отображено в дереве построения

iBossExtrusion.name := “Программная операция выдавливания”;

// получаем указатель на интерфейс параметров цвета

// и оптических свойств

// с помощью макроса RGB задаем цвет – красный

color.color := RGB(255, 0, 0);

// задаем уровень зеркальности (в долях единицы)

if (iBossDef <> nil) then

iBossDef.SetSideParam(true, etBlind, 25, false, 10);

iBossDef.SetThinParam(false, dtNormal, 0, 0);

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

if (iBossExtrusion <> nil) then

iBossExtrusion.name := “Программная операция выдавливания”;

color.color := RGB(255, 0, 0);

if (iBossDef <> nil) then

iBossDef.SetSideParam(true, etBlind, 25, false, 10);

iBossDef.SetThinParam(false, dtNormal, 0, 0);

iBossExtrusion.Create; // создаем операцию

Результат проделанной работы, как «вручную», так и с помощью подключаемого модуля, показан на рис. 6.19. Изображенный трехмерный элемент, как вы только что сами убедились, вполне может быть создан без какого-либо вмешательства пользователя, с помощью API КОМПАС.

Как сделать макроэлемент в компасе

Рис. 6.19. Трехмерный элемент, созданный программно

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

Первая библиотека к КОМПАС-3D

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

Прикладная библиотека для КОМПАС-3D представляет собой обычную DLL (Dynamic Link Library – динамически подключаемая библиотека Windows), только с расширением RTW. Такая библиотека подключается к КОМПАС, как и любая другая, уже известным нам способом: через менеджер библиотек посредством команды контекстного меню Добавить описание > прикладной библиотеки.

Для выполнения примера создайте на жестком диске папку FirstLib, а в ней папку dcu, в которой будут храниться файлы библиотек КОМПАС.

Теперь можно приступить к выполнению проекта.

1. Запустите Delphi и создайте шаблон DLL-библиотеки, который предлагается по умолчанию. Для этого выполните команду File > New > Other. Появится окно New Items (рис. 6.20) со всевозможными шаблонами Windows-приложений и файлами Delphi (исполняемый EXE-файл, консольное приложение, форма или компонент Delphi и пр.). На вкладке New этого окна выберите пункт DLL Wizard и нажмите кнопку OK.

Как сделать макроэлемент в компасе

Рис. 6.20. Диалоговое окно New Items

Если вы хорошо знакомы с Delphi, например не раз выполняли в этой среде динамически подключаемые библиотеки, то для вас будет привычным созданный файл-заготовка проекта, начинающийся со служебного слова library. Сохраните его на жесткий диск в папку FirstLib под именем Hello_KOMPAS.dpr.

2. Теперь нужно связать этот файл с библиотеками типов КОМПАС, чтобы можно было пользоваться интерфейсами API. Выполните команду Project > Import Type Library, затем из списка Import Type Library появившегося окна выберите пункт Kompas6API5 (Version 1.0). При этом в текстовом поле под списком должен отобразиться путь к файлу библиотек типов КОМПАС (например, C:\Program Files\ASCON\KOMPAS-3D V10\Bin\kAPI5.TLB). Выбрав указанный пункт, нажмите кнопку Create Unit (рис. 6.21).

Как сделать макроэлемент в компасе

Рис. 6.21. Подключение библиотеки типов КОМПАС к Delphi

Если в списке Import Type Library нет необходимого пункта, вы можете добавить его вручную, нажав кнопку Add и отыскав файл kAPI5.TLB (он находится в каталоге Bin папки, в которой установлен КОМПАС).

3. За несколько секунд Delphi сгенерирует PAS-файл с именем Kompas6API5-TLB, который будет иметь описание всех интерфейсов API 5. Измените имя (заголовок) скомпилированного модуля (автоматически добавленного в проект библиотеки), с Kompas6API5-TLB на ksTLB и сохраните проект.

4. Закройте окно, в котором был открыт файл Kompas6API5-TLB.pas, в редакторе кода Delphi и измените имя файла на ksTLB.pas. Сгенерированный файл Kompas6API5-TLB.pas с интерфейсами размещается в каталоге Imports папки, в которой установлен Delphi, например C:\Program Files\Borland\Delphi7\Imports.

5. Скопируйте переименованный файл в каталог FirstLib\dcu вашего проекта.

6. Перейдите в главное окно проекта. В разделе uses замените следующую строку: Kompas6API5-TLB in “C:\Program Files\Borland\Delphi7\Imports\Kompas6API5-TLB.pas” на ksTLB. Напомню вам о том, что путь к Kompas6API5-TLB.pas может быть другим (он зависит от того, где установлен Delphi). Однако это не имеет значения, поскольку запись генерируется системой автоматически при компиляции файла библиотек типов. Указывать путь к модулю ksTLB, который был скопирован в папку dcu проекта, нет необходимости.

7. При компиляции прикладной библиотеки будут использованы множество различных файлов с описаниями интерфейсов, констант и пр. В принципе, они могут быть размещены где угодно (при этом в разделе uses следовало бы задавать каждый путь явно), но для удобства работы с проектом рекомендую хранить их в папке dcu, где уже находится файл ksTLB.pas. Где бы все эти файлы ни находились, в Delphi необходимо указать путь к ним. Для этого выполните команду Project > Options, после чего на вкладке Directories/Conditionals открывшегося окна настроек проекта (рис. 6.22) задайте пути к файлам проекта:

Output directory – путь, по которому Delphi будет сохранять скомпилированный файл прикладной библиотеки (в нашем примере подойдет каталог FirstLib);

Unit output directory и Search path – полный путь к каталогу FirstLib\dcu. По этим путям система будет искать необходимые файлы библиотек КОМПАСа, а также сохранять скомпилированные DCU-файлы.

Как сделать макроэлемент в компасе

Рис. 6.22. Задание путей к файлам проекта прикладной библиотеки

8. Перейдите на вкладку Application диалогового окна настроек проекта. В поле Target file extension введите расширение, которое будет применяться для файла будущей библиотеки – RTW. Нажмите OK, чтобы сохранить настройки.

Теперь можете сохранить проект и выполнить компиляцию (для этого воспользуйтесь командой Project > Compile Hello_KOMPAS или сочетанием клавиш Ctrl+F9). В результате в папке FirstLib должна появиться пока еще пустая и бесполезная библиотека, файл которой назван системой Hello_KOMPAS.rtw.

Чтобы RTW-библиотека, написанная на Delphi, могла взаимодействовать с КОМПАС, в ней обязательно должны присутствовать как минимум три функции (для сред программирования на базе языка C или C++ достаточно двух, так как функции LibraryName и LibraryId объединены в одну – unsigned int WINAPI LIBRARYID()):

• LibraryEntry – точка входа в библиотеку;

• LibraryName – возвращает имя библиотеки, отображаемое в менеджере библиотек;

• LibraryId – возвращает идентификатор библиотеки (позже его можно использовать при работе с самой библиотекой, для подключения списка меню ее команд и пр.).

Все эти функции обязательно должны быть экспортными, то есть экспортируемыми из данной DLL, чтобы система КОМПАС могла их видеть и вызывать. По этой причине их обязательно нужно вынести в раздел exports прикладной библиотеки.

Добавьте описание этих функций в вашу библиотеку (листинг 6.8).

Листинг 6.8. Три базовых функции RTW-библиотеки

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *