Материал: Автоматизация и управление процессами проектирования в САПР. Юров А.Н., Чижов М.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

А.Н. Юров М.И. Чижов М.В. Паринов

В.А. Рыжков А.С. Левченко

АВТОМАТИЗАЦИЯ И УПРАВЛЕНИЕ ПРОЦЕССАМИ ПРОЕКТИРОВАНИЯ

В САПР

Учебное пособие

Воронеж 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"));»

1. Создание проектов прикладных библиотек

КОМПАС В СРЕДЕ 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;

(*****************************************************)

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