КАТЕГОРИИ: Архитектура-(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; Просмотров: 655; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |