Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

САПР в машиностроении




End.

Begin

Except

Try

Begin

Begin

Var

Begin

Begin

Begin

Begin

Var

Begin

Begin

par:= ksViewParam(kompas.GetParamStruct(ko_ViewParam));

with par do

Init;

// точка привязки вида

x:= x0;

y:= y0;

scale:= 1;

Angle:= 0;

// цвет вида, когда он активен

Color:= clRed;

state:= stACTIVE;

name:= nm

end;

n:=0;

iDocument2D.ksCreateSheetView(par, n)

end;

//---------------------------------------------------------------------------------------

procedure Stamp(c:byte; t:string);

stamp: ksStamp;

itemParam: ksTextItemParam;

// получаем ссылку на основную надпись

stamp:= ksStamp(iDocument2d.GetStamp);

itemParam:= ksTextItemParam(kompas.GetParamStruct(ko_TextItemParam));

itemParam.Init;

// открываем ее для редактирования

if stamp.ksOpenStamp=0 then

kompas.ksMessage('Текущий документ не является чертежом');

Exit

end;

// Сделать ячейку текущей

Stamp.ksColumnNumber(c);

// Поместить в текущую ячейку одну текстовую строку

ItemParam.s:= t;

Stamp.ksTextLine(ItemParam);

// закрываем основную надпись

stamp.ksCloseStamp

end;

//------------------------------------------------------------------------------------

procedure Contour1;

iDocument2D.ksLineSeg(0,D2-(D2-D1)/2,L,D2-(D2-D1)/2,1);

iDocument2D.ksLineSeg(0,D2-(D2-D1)/2,0,D2,1);

iDocument2D.ksLineSeg(L,D2-(D2-D1)/2,L,D2,1);

iDocument2D.ksLineSeg(0,D2,L,D2,1)

end;

//----------------------------------------------------------------------------------------

procedure Contour2;

iDocument2D.ksLineSeg(0,0,L,0,1);

iDocument2D.ksLineSeg(L,0,L,(D2-D1)/2,1);

iDocument2D.ksLineSeg(L,(D2-D1)/2,0,(D2-D1)/2,1);

iDocument2D.ksLineSeg(0,(D2-D1)/2,0,0,1)

end;

//-----------------------------------------------------------------------------------------

procedure LinDim(x1,y1,x2,y2,dx,dy:DOUBLE; diamsign:boolean; pl1,pl2:boolean);

// простановка линейного размера

// x1,y2,x2,y2 - координаты начал выносных линий

// dx,dy - смещение размерной линии относительно точки x1,x2

// diamsign - проставлять ли знак диаметра

// pl1, pl2 - рисовать ли первую и вторую выносные линии

param: ksLDimParam;

dPar: ksDimDrawingParam;

sPar: ksLDimSourceParam;

tPar: ksDimTextParam;

str: ksChar255;

arrText: ksDynamicArray;

begin

// структура для параметров размера

param:= ksLDimParam(kompas.GetParamStruct(ko_LDimParam));

// параметры отрисовки размера

dPar:= ksDimDrawingParam(param.GetDPar);

// положение размерной линии

sPar:= ksLDimSourceParam(param.GetSPar);

// параметры размерного текста

tPar:= ksDimTextParam (param.GetTPar);

dPar.Init;

dPar.textBase:= 0; // способ размещения текста

dPar.pt1:= 1; // тип первой стрелки (1- внутри, 2 – снаружи)

dPar.pt2:= 1; // тип второй стрелки

//вкл/выкл размерные линии

dPar.pl1:=not(pl1);

dPar.pl2:=not(pl2);

dPar.ang:= 0; // угол наклона выноски

dPar.lenght:= 0; // длина выноски

sPar.Init;

// начало первой выносной линии

sPar.x1:= x1;

sPar.y1:= y1;

// начало второй выносной линии

sPar.x2:= x2;

sPar.y2:= y2;

// смещение размерной линии

sPar.dx:= dx;

sPar.dy:= dy; {20}

// относительно какой точки задается смещение:

// 1 - от 1,y1,

// 2 - от x2,y2

sPar.basePoint:= 1;

tPar.Init(False);

// автопростановка номинала

tPar.SetBitFlagValue(_AUTONOMINAL, true);

if diamsign then

tPar.sign:= 1;

// создаем размер

iDocument2d.ksLinDimension(param)

end;

//---------------------------------------------------------------------------------

// создали вид

MakeView(x0,y0,nm);

// осевая линия

iDocument2D.ksLineSeg(-5,D2/2,L+5,D2/2,3);

Contour1;

// штриховка контура1

iDocument2D.ksHatch(0,45,1,5,5,D2-(D2-D1)/2+5);

Contour1;

iDocument2D.ksEndObj;

Contour2;

// штриховка контура2

iDocument2D.ksHatch(0,45,1,5,0,0);

Contour2;

iDocument2D.ksEndObj;

// внешний контур

iDocument2D.ksLineSeg(0,D2-(D2-D1)/2,0,(D2-D1)/2,1);

iDocument2D.ksLineSeg(L,D2-(D2-D1)/2,L,(D2-D1)/2,1);

// длина

LinDim(0,0,L,0,0,-20,false,true,true);

// наружный диаметр

LinDim(0,0,0,D2,-20,0,true,true,true);

// внутренний диаметр

LinDim(0,(D2-D1)/2,0,(D2-D1)/2+D1,-10,0,true,true,true);

// Основная надпись

Stamp(1,'Втулка');

Stamp(3,'Сталь 40Х');

Stamp(9,'ИМТ');

Stamp(8,'1');

Stamp(110,'Иванов И.И.');

Stamp(130,DateToStr(Now))

end;

//--------------------------------------------------------------------------

procedure TMainForm.Button3Click(Sender: TObject);

var d1,d2,l:double;

d1:=StrToFloat(Edit2.Text);

d2:=StrToFloat(Edit1.Text);

l:=StrToFloat(Edit4.Text)

Kompas.ksMessage('Неверные данные');

abort

end;

if d1>=d2 then

Kompas.ksMessage('Внутренний диаметр больше наружного');

abort

end;

DrawBusher(100,100, 'busher',d1, d2, l)

end;

На рисунке 6.6. показан чертёж с результатами работы библиотеки «Втулка».

Рис.6.6. Чертёж втулки, созданный прикладной библиотекой

 

6.6.Содержание отчёта

1.Титульный лист.

2. Задание.

3. Краткая теоретическая часть.

4. Содержательное описание прикладной библиотеки.

5. Файлы библиотеки с программным кодом.

6. Пример работы с библиотекой.

7. - подготовить отчёт по проделанной работе в текстовом формате KDW с переходом через формат JPG в формат PDF.

6.7. Контрольные вопросы

1.Чем отличается проект прикладной библиотеки от обычного проекта Delphi?

2. Какую папку из ресурсов Компаса нужно подключить к Delphi при создании прикладной библиотеки?

3. Какие модули входят в состав проекта библиотеки в Delphi?

4. Какие задачи решает файла проекта библиотеки?

5. Какие процедуры содержатся в файле формы библиотеки?

6. Какие процедуры содержатся в файла программного модуля библиотеки?

7. Какие процедуры и функции используются библиотекой при создании формы?

8. Какие методы создания сложных графических изображений имеются в API Компас?

9.Какие средства Delphi можно использовать для отладки библиотеки?

10. Какие параметры используются библиотекой при создании вида?

6.8. Библиография

1. Богуславский А.А. Си++ и компьютерная графика. М., Компьютер Пресс,2003,352стр.

2.Карпов Б. Delphi:специальный справочник. СПб, Питер, 2001, 688стр.

3.Троицкий Д.И. Разработка 2D-библиотек для Компас. Тула, ТГУ, 2007, 26стр.


Приложение 6.1. Коды стилей штриховок

0 - металл

1 - неметалл

2 - дерево

3 - камень естественный

4 - керамика

5 - бетон

6 - стекло

7 - жидкость

8 - естественный грунт

9 - насыпной грунт

10 - камень искусственный

11 - железобетон

12 - напряженный железобетон

13 - дерево в продольном сечении

14 – песок

 

Приложение 6.2. Коды свойств текста

Константа – Шестнадцатиричное значение

 

INVARIABLE - 0 (не менять флаги текста)

NUMERATOR - $1 (числитель)

DENOMINATOR - $2 (знаменатель)

END_FRACTION - $3 (конец дроби)

UPPER_DEVIAT - $4 (верхнее отклонение)

LOWER_DEVIAT - $5 (нижнее отклонение)

END_DEVIAT - $6 (конец отклонений)

S_BASE - $7 (основание выражения с под или над строкой)

S_UPPER_INDEX - $8 (верхний индекс выражения с под или над строкой)

S_LOWER_INDEX - $9 (нижний индекс выражения с под или над строкой)

S_END - $10 (конец выражения с под или надстрокой)

SPECIAL_SYMBOL - $11 (спецзнак)

SPECIAL_SYMBOL_END - $12 (конец спецзнака для спецзнаков с текстом)

RETURN_BEGIN - $13 (начало для ввода следующих строк в спецзнаке с текстом, дробях, отклонениях)

RETURN_DOWN - $14 (для ввода следующих строк в спецзнаке с текстом, дробях, отклонениях)

RETURN_RIGHT - $15 (для ввода строк справа в спецзнаке с текстом, дробях, отклонениях)

TAB - $16 (табуляция по текущему стилю)

FONT_SYMBOL - $17 (символ фонта)

ITALIC_ON - $40 (включить наклон)

ITALIC_OFF - $80 (выключить наклон)

BOLD_ON - $100 (включить жирное начертание)

BOLD_OFF - $200 (выключить жирное начертание)

UNDERLINE_ON - $400 (включить подчеркивание)

UNDERLINE_OFF - $800 (выключить подчеркивание)

NEW_LINE - $1000 (новая строка в параграфе)

 

Приложение 6.3. Коды размеров

1.Стрелки (свойства pt1,pt2)

0 - стрелки нет

1 - стрелка внутри

2 - стрелка снаружи

3 - засечка

4 - точка

2.Положение текста (свойство textBase)

0 - в центре

1 - на расстояние (или угол) textPos относительно первой точки

2 - на расстояние (или угол) textPos относительно второй точки

3.Управление размерным текстом (свойство bitFlag)

Константа - Шестнадцатиричное значение

_AUTONOMINAL - $1 (автоматическое определение номинального значения размера)

_RECTTEXT - $2 (текст в рамке)

_PREFIX - $4 (есть текст до номинала)

_NOMINALOFF - $8 (нет номинала)

_TOLERANCE - $10 (проставлять квалитет)

_DEVIATION - $20 (проставлять отклонения)

_UNIT - $40 (единица измерения)

_SUFFIX - $80 (есть текст после номинала)

_DEVIATION_INFORM - $100 (при включенном флаге)

_UNDER_LINE - $200 (размер с подчеркиванием)

_BRACKETS - $400 (размер в скобках)

_SQUARE_BRACKETS - $800 (размер в квадратных скобках,

используется вместе с _BRACKETS)

 

4.Значок перед размерным текстом (свойство Sign)

0 - нет значка

1 - диаметр 

2 - квадрат

3 - радиус R

>3 - код символа из шрифта "Symbol type A"


 

 

Розанов Леонид Николаевич, Донская Марина Михайловна, Гончаров Борис Федорович

 

 

Разработка 2D-библиотек для САПР «Компас»

 

Методические указания для выполнения лабораторных работ

по курсу "САПР в машиностроении"

 

Налоговая льгота – Общероссийский классификатор продукции

ОК 005-93, т.2; 95 3005 – учебная литература

______________________________________________

Подписано в печать 06. 07. 2007 Формат 60×84/16.

Усл.печ.л. 8,0. Уч.-изд.л. 8,0. Тираж 100. Заказ

 

Отпечатано с готового оригинал-макета,

предоставленного автором, в типографию Издательства Политехнического университета.

195251, Санкт-Петербург, Политехническая ул., 29.

 

 




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 619; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.048 сек.