А.Н. Юров М.И. Чижов М.В. Паринов
В.А. Рыжков А.С. Левченко
АВТОМАТИЗАЦИЯ И УПРАВЛЕНИЕ ПРОЦЕССАМИ ПРОЕКТИРОВАНИЯ
В САПР
Учебное пособие
|
Воронеж 2011
ФГБОУВПО «Воронежский государственный технический университет»
А.Н. Юров М.И. Чижов М.В. Паринов
В.А. Рыжков А.С. Левченко
АВТОМАТИЗАЦИЯ И УПРАВЛЕНИЕ ПРОЦЕССАМИ ПРОЕКТИРОВАНИЯ В САПР
Утверждено Редакционно-издательским советом университета
в качестве учебного пособия
В
оронеж
2011
У
ДК
621.9.06.002
Автоматизация и управление процессами проектирования в САПР: учеб. пособие / А.Н. Юров, М.И. Чижов, М.В. Паринов, В.А. Рыжков, А.С. Левченко. Воронеж: ФГБОУВПО «Воронежский государственный технический университет», 2011. 175 с.
В учебном пособии изложены общие положения, связанные с процессом технологий автоматизированного проектирования и разработкой прикладных библиотек под Компас 3D с применением языков высокого уровня. Приведенные методы и процессы позволяют успешно решать производственные задачи по созданию расчетного и инженерного программного обеспечения, используя специфику работы предприятия при решении конструкторских задач на стадии проектирования.
Издание соответствует требованиям Государственного образовательного стандарта высшего профессионального образования по направлению 230100 “Информатика и вычислительная техника”, специальности 230104 «Системы автоматизированного проектирования» и требованиям Федерального государственного образовательного стандарта высшего профессионального образования по направлению 230100.62 “Информатика и вычислительная техника” по дисциплине “Разработка САПР”.
Предназначено для студентов всех форм обучения.
Учебное пособие подготовлено в электронном виде в текстовом редакторе Word и содержится в файле «book_CAD.doc».
Ил. 58. Библиогр.: 14 назв.
Рецензенты: ОАО «РудГорМаш»
(начальник отдела АИТ
В.К. Заботин);
д-р техн. наук, проф. В.Н. Старов
© Юров А.Н., Чижов М.И., Паринов М.В.,
Рыжков В.А., Левченко А.С., 2011
© Оформление. ФГБОУВПО «Воронежский
государственный технический университет», 2011
На данном этапе функционирования производственного комплекса доминирующими факторами развития научно-технического прогресса является повышение качества и сроков изготовления продукции. Высокие темпы научно-технического прогресса должны обеспечиваться разработкой, производством и массовым применением высокоэффективных машин, оборудования, приборов и технологических процессов. Объективным препятствием повышению качества проектов и сокращению сроков их разработки является несоответствие между сложностью объектов конструирования и устаревшими методами и средствами их проектирования. Автоматизация проектирования особенно эффективна, когда от автоматизации выполнения отдельных инженерных расчетов переходят к комплексной автоматизации, создавая для этой цели системы автоматизированного проектирования (САПР).
Как и другие направления автоматизированных систем, САПР технологии являются развивающимися проектами. Технический прогресс в соответствующей отрасли должен сопровождаться непрерывным обновлением в САПР математических моделей, нормативов, данных о материалах комплектующих изделий.
САПР создается и функционирует в проектной организации как самостоятельная система. Она может быть связана с подсистемами и банками данных других автоматизированных систем. Системы автоматизированного проектирования имеют свои специфические особенности, принципы создания и развития, создаются в проектных, конструкторских, технологических организациях в целях:
- повышения качества и технико-экономического уровня проектируемой и выпускаемой продукции;
- повышения эффективности и надежности объектов проектирования, уменьшения затрат на их создание и эксплуатацию;
- сокращения сроков, уменьшения трудоемкости проектирования и повышения качества проектной документации.
Достижение целей создания САПР обеспечивается путем:
- совершенствования систематизации и унификации процессов проектирования на основе применения математических методов и средств вычислительной техники;
- комплексной автоматизации проектных работ в проектной организации с необходимой перестройкой ее структуры и кадрового состава;
- повышения качества управления проектированием;
- применения эффективных математических моделей проектируемых объектов, комплектующих изделий и материалов;
- использования методов многовариантного проектирования и оптимизации;
- автоматизации трудоемких и рутинных проектных работ;
- замены натурных испытаний и макетирования математическим моделированием.
Автоматизация систем твердотельного моделирования заключается посредством создания отдельных модулей в виде программного обеспечения (ПО), расширяющие или позволяющие реализовать новые научно-технические задачи, касающиеся конкретной машиностроительной отрасли.
Комплекс автоматизации системы КОМПАС 3D позволяет решать ряд поставленных задач путем включения в указанный программный продукт набора библиотек готовых элементов и схем, отвечающих требованиям машиностроительных отраслей, а также предоставить азработчикам (пользователям) инструментальные средства проектирования приложений (библиотек элементов, прикладных САПР) на базе КОМПАС.
Под библиотекой в системе КОМПАС понимается законченное приложение, решающее инженерную расчетно-графическую задачу, используя группу команд, предложенную разработчиком данной системы (API). Библиотеки реализуются в виде отдельных файлов, имеющие расширение «.rtw». По своей конструкции, с программной точки зрения, библиотеки идентичны динамически подключаемым компонентам «.dll» в операционных системах MS Windows. Как известно, разрабатывать компоненты для операционной системы можно на любом языке программирования. Разработчики КОМПАС подготовили API и представили ряд примеров на известных языках программирования (Delphi, Visual Basic, C#, C++). Комплект документации с примерами носит название SDK и находится в директории с программой в одноименном каталоге «..\SDK». Система КОМПАС включает в свой состав 2D и 3D API. 2D API обеспечивает доступ к системе КОМПАС для формирования и обработки двумерных графических документов. 3D API обеспечивает доступ к системе КОМПАС для создания и редактирования трехмерных моделей. В пособии будут рассмотрены методы использования и приемы реализации с API 2D и 3D в средах разработки Visual C++ 6.0 SP2, Visual Studio.NET (2003-2010), включая версии Express, Delphi. Среды для подключения библиотек – Компас 3D12 LT и 3D13 LT. Все версии Компас, начиная с 10, используют универсальный набор символов (UNICODE), представленный в виде двухбайтовой конструкции элементов. Такой подход позволяет применять национальные раскладки по набору символов вместо одного байта информации (ASCII), поэтому разработанные библиотеки в версии КОМПАС 9 и более ранних продуктах должны быть скомпонованы с учетом внесения соответствующих изменений в тексте программы прикладной библиотеки. Например, вывод сообщений в средах программирования на языке С++ для версии 9 имеет формат «::Message(buf);» , а для версий 10 -13 – «MessageT(_T("buf"));»
КОМПАС В СРЕДЕ VISUAL C++
Создать прикладную библиотеку и подготовить ее к работе в системах КОМПАС, старше V10, можно двумя способами: воспользоваться мастером создания библиотек Visual C++ 6.0 или изменить имеющиеся в директории «..\SDK\C++\ Visualc» рабочие проекты прикладных библиотек.
Создание шаблона библиотеки при помощи мастера создания библиотек (Wizard), разработанного специалистами системы КОМПАС, производится легко - достаточно следовать инструкциям разработчика. Для подключения мастера создания библиотек необходимо скопировать файл LibraryWizard.awx в директорию «C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Template» или в папку Template аналогичной директории куда установлен MS Visual C++ 6.0.
После подключения мастера создания библиотек в окне нового проекта появиться новый пункт LibraryWizard. Пути к заголовкам библиотек (Include директориям) в опциях нового проекта по умолчанию настроены для папки «..\SDK\C++\Visualc», поэтому при создании проекта необходимо указать этот путь в location, как показано на рисунке 1.
Рис. 1. Мастер создания прикладных библиотек системы КОМПАС в Visual C++ 6.0 |
Используя опции генератора данных, мастер подготовит проект подключаемой для системы КОМПАС динамической библиотеки в среде Visual С++.
Пример кода на Visual С++ динамически подключаемой прикладной библиотеки с именем my_first_library представлен на листинге:
//
My_first_library.cpp - Библиотека
на
Visual C++ #include
"stdafx.h" #include
<afxdllx.h> #include
"my_first_library.h"
#ifdef
_DEBUG #undef
THIS_FILE static
char THIS_FILE[] = __FILE__; #endif //
Специальная структура, используемая
для инициализации DLL //
--- static
AFX_EXTENSION_MODULE My_first_libraryDLL = { NULL, NULL }; HINSTANCE
g_hInstance = NULL; IApplicationPtr
newKompasAPI( NULL );
void
OnProcessDetach();//
Отключение библиотеки //
Стандартная точка входа //
Инициализация и завершение DLL //
--- extern
"C" int APIENTRY DllMain(HINSTANCE
hInstance, DWORD dwReason, LPVOID lpReserved) { g_hInstance
= hInstance;
if
(dwReason == DLL_PROCESS_ATTACH) { TRACE0("MY_FIRST_LIBRARY.AWX
Initializing!\n");
AfxInitExtensionModule(My_first_libraryDLL,
hInstance);
new
CDynLinkLibrary(My_first_libraryDLL); } else
if (dwReason == DLL_PROCESS_DETACH) { TRACE0("MY_FIRST_LIBRARY.AWX
Terminating!\n"); OnProcessDetach(); AfxTermExtensionModule(My_first_libraryDLL); } return
1; // ok }
//
Получить доступ к API void
GetNewKompasAPI()
{ if
( !( IApplication * )newKompasAPI )
{
CString filename; if(
::GetModuleFileName(NULL, filename.GetBuffer(255), 255) )
{ filename.ReleaseBuffer(
255 ); CString
libname; libname
= LoadStr( IDR_API7 ); // kAPI7.dll filename.Replace(
filename.Right(filename.GetLength() - (filename.ReverseFind('\\') +
1)),
libname
); HINSTANCE
hAppAuto = LoadLibrary( filename ); // идентификатор
kAPI7.dll if(
hAppAuto )
{ //
Указатель на функцию возвращающую
интерфейс KompasApplication
typedef
LPDISPATCH ( WINAPI * FCreateKompasApplication )();
FCreateKompasApplication
pCreateKompasApplication =
(FCreateKompasApplication)GetProcAddress(
hAppAuto, "CreateKompasApplication" ); if
( pCreateKompasApplication ) newKompasAPI
= IDispatchPtr ( pCreateKompasApplication(), false ); // Получаем
интерфейс
Application FreeLibrary(
hAppAuto );
}}}} //
Задать
идентификатор
ресурсов unsigned
int WINAPI LIBRARYID() {return
IDR_LIBID;} //
Головная функция библиотеки void
WINAPI LIBRARYENTRY( unsigned int comm ) {
switch ( comm ) { case
1:
{ //
Выдача сообщения пользователю MessageT(
_T("Успешный запуск прикладной
библиотеки!") ); break; }}} //
Завершение приложения void
OnProcessDetach() { newKompasAPI
= NULL; } //
Загрузить строку из ресурса CString
LoadStr( int strID )
{
TCHAR temp[_MAX_PATH]; LoadString(
My_first_libraryDLL.hModule, strID, temp, _MAX_PATH );
return
temp; }
А
library Vtulka;
uses SysUtils, Classes, Forms, Unit1
in 'Unit1.pas' {Form1};
{$E
rtw}
{$R
*.res} procedure
Initialize(); begin try if
Application = nil then //
Если объект приложение удалён, то
создаём заново Application
:= TApplication.Create(nil); if
Application <> nil then begin //
Поизводим его инициализацию Application.Initialize; //
Создаём
форму Application.CreateForm(TForm1,
Form1); //
Запускаем приложение Application.Run; //
После завершения работы приложения
освобождаем Application.Free(); Application
:= nil; end; except if
Application <> nil then begin //
Если есть исключения, то завершаем
приложение Application.Terminate; Application.Free(); Application
:= nil; end; end; end; (*****************************************************) function
LibraryName(): PChar; pascal; begin //
Возвращаем имя приложения Result
:= PChar('Штуцер'); end; (*****************************************************)