Разработка системы автоматизированного проектирования

 














Разработка системы автоматизированного проектирования

Содержание


Задание

Функциональное описание процесса разработки объекта

Математическая модель

Описание входных/выходных данных

Описание структуры программы

Описание работы программы

Результаты работы программы

Список используемой литературы

Приложение 1


Функциональное описание процесса разработки


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

Составим функциональное описание процесса разработки курсовой работы по курсу «Разработка САПР».


Рис.1. Нулевой функциональный блок IDEF0 диаграммы.


Данный блок представляет собой обобщенную задачу, которую нужно выполнить.

Входными данными для данного блока является задание на курсовую работу. Управлением являются теоретические сведения, которые нужны для решения математической части задания, и задание на КР, которым нужно руководствоваться при её выполнении. На выходе мы создаем отчет и презентацию.

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

Детализируем то, что представлено в блоке А0 (проведем декомпозицию).


Рис.2.IDEF0 - 1 уровень.


Из приведенной диаграммы видно, что, получив задание, мы приступаем к выполнению проекта.

Для начала анализируем, какие данные будут являться входными, а какие выходными.

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

Далее осуществляется математическая постановка задачи. По завершению этапа получаем её математическое решение.

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

На этапе программирования создается программный код. Механизмом исполнения, помимо студента, является среда программирования Delphi7. На выходе данного этапа формируется программа, по результатам проверки которой данные отправляются для создания отчета.

Здесь формируется отчет о проделанной работе, согласно заданию и требованиям, предъявляемым к оформлению отчета. Отчет оформляется с помощью программ MS Word и MS Visio. На выходе этого этапа формируется готовый отчет о проделанной работе.


Рис. 3. Декомпозиция уровня программирования


Математическая модель

система автоматическое проектирование

Рис. 4. Устройство внутренней поверхности емкости

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

Площадь поверхности будет рассчитываться как площадь цилиндрической поверхности и площадь одного из оснований:

Чтобы оставить одно неизвестное в уравнении, выразим высоту h через объем емкости


(1)


Получим зависимость S(R):


(2)


Чтобы найти минимум функции S, найдем её производную и приравняем к нулю:


(3)


Решение уравнения в общем виде: ;

Следовательно, площадь будет минимальна при


(4)


Для построения потребуется высота h, для её расчета используем формулу (1).

Описание входных/выходных данных


Входные данные для расчета параметров цилиндрической емкости:

·Объем V

·минимальный и максимальный радиусы основания

·минимальная и максимальная высота

·минимальный и максимальный объем

Выходные данные:

·высота h

·радиус основания R

·площадь поверхности S

Пользователь вводит значение объема емкости и получает на выходе открытые файл чертежа(*.cdw) и файл 3D-сборки( *.a3d)


Описание структуры программы


Рис.5 Блок-схема процедуры расчета

V - заданный объём

h - высота емкости

S - площадь поверхности

R - радиус основания


Код программы содержится в двух файлах:.pas - содержит стандартные функции взаимодействия с Компас 3D. В этом модуле открываются все детали сборки, переменные R и h передаются в соответствующие внешние переменные сборки и с их использованием сборка перестраивается.

Unit1.pas - обработка событий, процедура расчета calc, построения, вывод результатов расчета.

Кнопка Расчет обрабатывает входной параметр, запускает процедуру расчета calc, делает доступными кнопки Модель и Чертеж.

кнопка Модель вызывает модуль KompasAPI.pas, который запускает установленный Компас3D и выполняет перестроение сборки с измененными параметрами.

кнопка Чертеж вызывает модуль KompasAPI.pas, который выполняет перестроение чертежа на основе ранее построенной сборки с измененными параметрами.


Описание работы программы


Рис. 5. Окно программы при запуске


После получения результата становятся доступны кнопки построений.


Рис. 6. Окно программы после выполнения расчета


После запуска программы от пользователя требуется ввести в поле ввода значение объема (по умолчанию это значение равно 1000), Затем нажать кнопку Расчет. После этого выводится решение задачи. Пользователь может нажать на доступные теперь кнопки Модель и Чертеж, чтобы выполнились все необходимые построения. Компас3D запустится автоматически (в случае его присутствия на машине пользователя) .


Результат работы программы


Рис.7. Окно программы с результатами расчета


Рис.8 Окно «Компас3D» с построенным чертежом

Рис. 9 Окно «Компас3D» с построенной сборкой


Список использованной литературы


1.Конспект лекций по дисциплине «Разработка САПР», проф., доц. Ямникова О.А., 2010г.;

2.Методические указания по выполнению курсовой работы по курсу «Разработка САПР», проф., доц. Ямникова О.А., 2010 г.


Приложение 1


Код модуля Unit1.pasUnit1;


, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ComObj, OleCtrls, ksTLB, ComCtrls, StdCtrls, KompasAPI, DB,, DBGrids, ADODB, ExtCtrls, Buttons, jpeg, XPMan,math;

= class(TForm): TButton;: TLabeledEdit;: TOpenDialog;: TMemo;: TButton;: TButton;: TOpenDialog;Button4Click(Sender: TObject);Button2Click(Sender: TObject);Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;D1 : ksDocument2D ;,v,h,s:real;


{$R *.dfm}



calc;

(v>=990) and (v<=1010 )then:=power((v/pi),1/3) ;:=2*v/r+pi*power(r,2);:=v/(pi*r*r) ;form1.m do

lines.Add('---Результаты вычисления---');

lines.Add('Заданный объем емкости: '+floattostr(v));

lines.Add('Высота: '+floattostr(h));.Add('Радиус вращения: '+floattostr(r));.Add('Площадь поверхности: '+floattostr(s));;

end

else

MessageDlg('Значение объема выходит за допустимые пределы!',mtWarning,[mbOk],0);

end;TForm1.Button4Click(Sender: TObject);:TStringList;:TPartVars;


full(ch:boolean):real;ch then result:=0result:=1;;


OD1.Execute then(OD1.FileName);:=TStringList.Create;(c);:=GetPartVars(c[1]);

('','h',h);('','r',r);

:=GetPartVars(c[1]);

.Free ;.Enabled:=true

;TForm1.Button2Click(Sender: TObject);.Clear ;:=strtofloat(LabeledEdit1.Text);('Некорректный ввод!',mtWarning,[mbOk],0);;;.Enabled:=true;


;

TForm1.Button1Click(Sender: TObject);

OD2.Execute thend(OD2.FileName);

D1 := KompasAPI.doc2d;

;



.




Код модуля KompasAPI.pasKompasAPI;

ComObj, OleCtrls, ksTLB, Classes, SysUtils;

TPartVar=RECORD:STRING;:STRING;:REAL;=ARRAY OF TPartVar;

:KompasObject;:ksDocument3D;:THandle;:TStringList; // список имен деталей:TPartVars;D : ksDocument2D;d:ksDocument2D;StartKompas(filename:string):boolean;StartKompas2d(filename:string):boolean;ReadParts(s:TStringList);GetPartVars(partname:STRING):TPartVars;ChangeVar(partname, varname: STRING; value_:REAL);


StartKompas(filename:string):boolean;ka='Kompas.Application.5';

// подключение к КОМПАС 3D

Result:=true;

try:=KompasObject(GetActiveOleObject(ka)); // если уже запущен:=KompasObject(CreateOleObject(ka)); // если не запущен:=false;;

// получение ссылки на окно КОМПАС:= kompas.ksGetHWindow;

// делаем окно КОМПАСа видимым

kompas.Visible:=true;

// получение ссылки на текущий документ КОМПАСа

Doc := ksDocument3D(kompas.ActiveDocument3D);

// если такой документ есть...

if Assigned(Doc) then

// то закрываем его.close;

// создаем новый документ...:= ksDocument3D(kompas.Document3D);

// и загружаем в него сборку с именем filename

Doc.Open(Trim(filename), False);

// активируем API.ActivateControllerAPI;StartKompas2d(filename:string):boolean;

//var doc2d:ksDocument2D;ka='Kompas.Application.5';

// подключение к КОМПАС 3D

Result:=true;

try:=KompasObject(GetActiveOleObject(ka)); // если уже запущен:=KompasObject(CreateOleObject(ka)); // если не запущен:=false;;

// получение ссылки на окно КОМПАС:= kompas.ksGetHWindow;

// делаем окно КОМПАСа видимым

kompas.Visible:=true;

// получение ссылки на текущий документ КОМПАСа

Doc2d := ksDocument2D(kompas.ActiveDocument2D);

// если такой документ есть...

if Assigned(Doc2d) then

// то закрываем егоd.ksCloseDocument;

// создаем новый документ...


d:=ksDocument2D(Kompas.Document2D);d.ksOpenDocument(FileName, false );

// активируем API.ActivateControllerAPI;


ReadParts(s:TStringList);

i,num:word;:ksPartCollection;:ksPart;

begin

// получение ссылки на список деталей

parts:=ksPartCollection(doc.PartCollection(true));

// число деталей:=parts.GetCount;.Clear;

// деталь с номером -1 есть сама сборка

s.Add(ksPart(doc.GetPart(-1)).name);

// цикл по деталямi:=0 to num-1 do

// получение ссылки на деталь номер i

part:=ksPart(parts.GetByIndex(i));

// помещаем имя детали в список

s.Add(part.name);

end;GetPartVars(partname:STRING):TPartVars;vr:ksVariableCollection;:ksPartCollection; // сборка:ksPart;:ksVariable;, numpart:INTEGER;

:=ksPartCollection(doc.PartCollection(true));

// ссылка на деталь с именем partname

if partname='' then:=ksPart(doc.GetPart(-1)) // сборка:=ksPart(parts.GetByName(partname,True,True));

// ссылка на список переменных детали:=ksVariableCollection(part.VariableCollection);

// цикл по переменным детали

numpart:=vr.GetCount;

SetLength(result,numpart);j:=0 to numpart-1 do

// ссылка на отдельную переменную:=ksVariable(vr.GetByIndex(j));result[j] do:=univar.name;:=univar.note;:=univar.value;ChangeVar(partname, varname: STRING; value_:REAL);vr:ksVariableCollection;:ksPartCollection;:ksPart;:ksVariable;:ksFeature;


// Список деталей:=ksPartCollection(doc.PartCollection(true));

// Ищем деталь или сборку

if partname='' then

begin:=ksPart(Doc.GetPart(-1));:=ksFeature(Part.GetFeature);:=ksVariableCollection(Feature.VariableCollection);:=kspart(parts.GetByName(partname,true,true));:=ksVariableCollection(part.VariableCollection);

// Ищем переменную по имени:=ksVariable(vr.GetByName(varname,true,true));

// Начинаем редактировать деталь

if partname<>'' then

part.BeginEdit;

// Меняем значение переменной

vvv.value:=value_;

// Обновляем модель

vr.refresh;

part.RebuildModel;

part.Update;

// Завершаем редактирование детали с сохранением изменений

if partname<>'' then.EndEdit(true).RebuildDocument;.UpdateDocumentParam;

// Обновляем сборку.refresh;




begin

// выделение памяти под массивы

prt:=TStringList.Create;

SetLength(partvar,0);





// освобождение памяти(partvar);.Free;




end.


Разработка системы автоматизированного проектирования Содержание Задание Функциональное описани

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ