Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Статья: IT-практикум: DELPHI и AutoCAD

Название: IT-практикум: DELPHI и AutoCAD
Раздел: Рефераты по информатике, программированию
Тип: статья Добавлен 02:48:09 01 марта 2008 Похожие работы
Просмотров: 812 Комментариев: 2 Оценило: 1 человек Средний балл: 5 Оценка: неизвестно     Скачать

Андрей Шкрыль

Организация связи двух популярных программных комплексов

Autocad - широко известный графический пакет для построения чертежей. Не секрет, что autocad очень удобен для предприятий, специализирующихся на строительстве, продаже или аренде коммерческих и жилых площадей. В данной статье мы поговорим о ситуации, когда требуется расширить стандартные возможности пакета за счет написания программы на языке delphi. Например, это очень удобно, когда необходимо хранить информацию по чертежу в базе данных, осуществить привязку к чертежу документации, отражающей сдачу в аренду площадей различным организациям или предоставить рядовому пользователю, не владеющему знаниями autocad, простой механизм получения точной информации о размере площади, предоставляемой клиенту, и различные сопутствующие числовые показатели. Объектная модель autocad базируется на visual basic for application, ее использование позволяет получить доступ ко всем элементам как чертежа, так и самой оболочки autocad. В данной статье рассматривается связка delphi 7 и autocad 2004. Если у вас более поздняя версия какого-то из программных продуктов, то это не страшно, так как принцип работы останется тем же самым.

Подготовительный этап

Сначала импортируем библиотеку AutoCAD в Delphi. Для этого выберем пункт меню ProjectMmportType Library, нажмем кнопку Add и добавим файл acax16enu.tlb (найти его можно по адресу C:\Program Files\ Common Files\Autodesk Shared), после чего инсталлируем новый набор ActiveX компонентов в систему (рис. 1).

Нам станет доступно 5 новых компонентов:

1. AcadAcCmColor

2. AcadDataBase

3. AcadSecurityParams

4. AcadLayerStateManager

5. AcadDocument

Простые примеры

Разместим на форме компонент TAcadDocument, далее создадим обработчик события OnCreate для формы. В нем мы проверим, запущен ли на машине AutoCAD или нет (если нет, его придется запускать). Обязательно подключим модуль ComObj.

Подключение к AutoCAD

procedureTForml.Formereate(Sender:

TObject);

var

AutoCAD: OleVariant; begin

//Если AutoCAD запущен, то подсоединяемся к нему

AutoCAD := GetActive01eObject('Aut ~ oCAD. Application');

AcadDocument l.ConnectTo((IDisp atch (AutoCAD) as lAcadApplication). ActiveDocument) ; ZI except

//Иначе запускаем его AcadDocument 1. Connect; end; ZZ end;

Поговорим о следующей строчке кода:

AcadDocumentl.ConnectTo((IDispat

К сведению

Обязательно загляните в модуль AutoCADJLB.pas, который появится после установки новых компонентов: как разработчик, вы сможете почерпнуть из него много полезной информации, а также в файл справки AutoCAD-acad. chm. Особенное внимание уделите разделам ActiveX and VBA Developer's Guide и ActiveX and VBA Reference, где можно найти сведения о методах, свойствах и объектах AutoCAD (рис.2).

ch(AutoCAD) as lAcadApplication). ActiveDocument);

В ней мы приводим переменную AutoCAD к типу lACadApplication, используя для этого специальный интерфейс IDispatch. Теперь разместите на форме кнопку, назовите ее «Имя текущего документа» и напишите для нее в обработчике: ShowMessage('l/ta текущего документа: '+AcadDocument1 .Name); Идем дальше — начертим линию с помощью стандартного метода AutoCAD -AddLine():

АddLine(НачальныеКоординаты, КонечныеКоординаты), где НачальныеКоординаты — массив из трех точек (ось X, Y, I), определяющий координаты начала линии, где КонечныеКоординаты — массив из трех точек (ось X, Y, I), определяющий координаты конца линии.

Прежде чем передать массив в качестве аргумента, воспользуемся функцией VarArrayCreate, которая создаст его:

УаrАrrауСrеаtе([Размерность],Тип данных) Создание массива с заданной размерностью и заданным типом значений его элементов. Пример:

V:= VarArrayCreate([0,2], varDouble) Создание массива, состоящего из трех элементов типа Double.

Итак, необходимо разместить на форме еще одну кнопку. Назовем ее «Линия» и объявим две переменные FirstPoint и SecondPoint типа OleVariant. Теперь нам понадобится следующий код:

FirstPoint:=VarArrayCreate([0, 2],

varDouble); //массив начальной точки SecondPoint:=VarArrayCreate([0, 2],

varDouble); //массив конечной точки

А сейчас можно задать и сами координаты линий, делается это таким образом:

FirstPoint[0]:=10; //начальная X координата

FirstPoint [1] :=10; //начальная Y координата

FirstPoint[2]:=10; //начальная Z координата

Далее нам будет нужна переменная AutoCadLine типа lAcadLine (хотя можно ее сделать и OleVariant, такой вариант тоже будет работать). В ней мы сохраним ссылку на созданную линию, чтобы в дальнейшем обращаться к этой фигуре, внося нужные изменения (о том, как это сделать, вы обязательно узнаете далее). А пока осталось начертить линию с помощью следующей строчки кода:

AutoCadLine:=AcadDocumentl. ModelSpace.AddLine(FirstPoint, SecondPoint);

Стоит отметить, что для работы с графическими объектами я использовал коллекцию ModelSpace, которая позволяет обращаться ко всем графическим объектами чертежа. Можно также воспользоваться коллекцией PaperSpace, правда, в этом случае нам будут доступны только объекты, содержащиеся в активном на данный момент слое. На рисунке 3 вы можете видеть упрощенную схему объектной структуры AutoCAD.

Итак, продолжаем. Линия у нас уже есть, теперь проведем над ней одну манипуляцию: покрасим ее в красный цвет с помощью всего одной строчки кода:

AutoCadLine. color:=acRed;

После того как работа с чертежом окончена, нужно сообщить об этом AutoCAD. Делается это следующим образом:

AcadDocumentl. Application. Update;

Полный листинг для обработчика события OnClick кнопки «Линия» вы найдете в исходнике программы, расположенной на компакт-диске.

Разместим на форме еще одну кнопку, назовем ее «Линия с запросом». С помощью нее мы нарисуем такую же обычную линию, предварительно запросив координаты у пользователя. Для этого используется объект Utility и его метод GetPointQ. Снова зададим две локальные переменные StartPoint и SecondPoint с типом OleVariant. Сделаем для них такие же массивы и напишем код:

FirstPoint :=AcadDocumentl. Utility.

GetPoint(EmptyParam, 'Укажите начальную координату: ');

SecondPoint :=AcadDocumentl. Utility. GetPoint(EmptyParam, 'Укажите конечную координату: ');

Как начертить линию, имея ее координаты, вы уже знаете, и разбирать этот процесс нет смысла, поэтому протестируем готовый код. Запустите программу, нажмите кнопку «Линия с запросом» и переключитесь в окно AutoCAD. Обратите внимание: в командной строке, расположенной в нижней части окна AutoCAD, появился текст «Укажите начальную координату», рис. 4.

Сделаем это, щелкнув мышью в понравившемся нам месте на холсте чертежа. Появится надпись «Укажите конечную координату». В результате из указанных нами точек появится линия. Вот оно, чудо взаимодействия программы и программиста! Однако не будем отступать от главного — перейдем на следующий уровень. На подходе фигура посложнее — полилиния. С помощью нее можно строить всевозможные многоугольники. Для начала построим четырехугольник. Стоит отметить, что в этом случае нам достаточно задать две координаты X и Y. Размещаем на форме кнопку, назовем ее «Четырехугольник», далее создадим вариантный массив Points, рассчитанный на 10 значений, и зададим нужные координаты, например:

Points[0]:= 646.0351;
Points [1]: = 847.318;
Points[2]:= 1167.2274;
Points[3]:= 847.318;
Points[4]:= 1167.2274;
Points[5]: = 542.6844;
Points[6]:= 646.0351;
Points[7]:= 542.6844;
Points[8]:= 646.0351;
Points[9]:= 847.318;

Объявим переменную AutoCADPolyline типа OleVariant и последний штрих:

AutoCADPolyline:= AcadDocumentl.

ModelSpace.AddLightWeightPolyline(Po

ints);

Протестируем программу и нарисуем новую фигуру. Пришло время поговорить немного и о самом AutoCAD. Кликнем по только что сформированному прямоугольнику (в чертеже), он станет активным и на экране появиться окно свойств, рис.5. Обратите внимание на содержимое выпадающего списка, расположенного в самом верху. В нем мы имеем честь наблюдать тип своей фигуры: в данном случае это polyline, т.е. что мы и рисовали. Если кликнуть мышкой по свойству Vertex, в нем появятся две стрелки, с помощью которых вы можете переключаться между отдельными вершинами фигуры. Соответственно, в этот момент будут меняться свойства VertexX и VertexY, отвечающие за координаты. А вот в свойстве Area можно получить значение площади созданной вами фигуры, удобно, не так ли? Я думаю, имеет смысл вывести эту информацию в окне нашей программы:

ShowMessage('Площадь фигуры: :'+FloatT oStr(AutoCADPolyline.Area));

Добавим еще одну кнопку на форму, назовем ее «Круг». Для работы с этой фигурой надо задать три точки — координаты центра круга и его радиус, а затем использовать следующий метод:

AddCircle (КоординатыЦентра, Радиус) ;

Разнообразим чертеж текстом, добавляющимся с помощью процедуры AddText():

AddText(Teкст, Координаты, Высота), где Текст— выводимый текст, заключенный в кавычки, где Координаты — это две точки: X и Y, в которых начнется вывод текста, где Высота — высота текста.

Слои

При работе с чертежом может возникнуть необходимость присвоения имени отдельным объектам или их группам, что позволит быстро обращаться к ним в дальнейшем. Этот механизм реализован в AutoCAD посредством слоев. Итак, создайте новый чертеж, нарисуйте в нем два прямоугольника и многогранник (с помощью полилинии), а в каждой фигуре проставьте текст «Комната1», «Комната2», «Комната 3» (вы можете найти чертеж в исходниках программы, он называется Планировка.dwg), рис. 6.

Выберите пункт меню Format\l_ayer, появится окно Layer Property Manager. Нажмите кнопку New и введите текст FirstRoom, рис. 7. Точно таким же образом создаются слои SecondRoom и ThirdRoom. После двойного клика на первой комнате появится окно PROPERTIES. В свойстве Layer установим для выбранной фигуры слой FirstRoom, назначим остальным фигурам одноименные слои. Последний штрих —в целях эксперимента начертим простую линию и круг. Все, подготовительные действия выполнены, приступаем к кодингу— нашей задачей будет получение в программе данных столько что созданном чертеже. Разместим на форме TListBox и кнопку «Прочитать чертеж» (полный листинг обработчика— в исходниках, здесь мы рассмотрим только самые важные моменты). Сначала нужно организовать цикл, перебирающий все графические объекты, принадлежащие чертежу:

for i:=0 to AcadDocumentl.ModelSpace. Count-1 do

Проверяя название фигуры, мы будем осуществлять необходимые действия. Так как отдельные фигуры имеют разный набор свойств и количество координат, например, линия задается двумя точками, каждая из которых проецируется в трехмерной системе (ось X,Y,Z), а вот каждая точка полилинии позиционируется лишь в оси X и Y, то эти моменты обязательно надо учитывать. Поэтому для каждой фигуры придется писать свой собственный обработчик. Я рассмотрю описанный выше момент на следующем примере:

if AutoCadObject.

EntityName='AcDbCircle' then begin

//Координаты центра круга

t:=(AutoCadObject as lAcadCircle). Center;

ListBoxl.Items.Add('06beKT — Круг');

Li stBoxl. Items. Add ('Координаты центра X-'+IntToStr(t[0])+' Y-'+IntToStr (t [1]) +' Z-'+IntToStr (t [2])) ;

t:=(AutoCadObject as lAcadCircle). Radius;

ListBoxl.Items.АсШСРадиус круга R='+IntToStr(t)); end;

Круг по понятиям AutoCAD называется AcDBCircle. Чтобы обратиться к его свойствам, нужно привести объект AutoCADObject, который ссылается на обрабатываемую в данный момент фигуру к типу lAcadCircle, а далее все просто: из свойства Center вытаскиваем координаты центра, из свойства Radius — длину радиуса. Обратите внимание, в процессе обработки полилинии перед нами встанет практически философский вопрос: «Как узнать количество точек, из которых она состоит?». Дело в том, что это может быть обычный прямоугольник, который будет содержать 4 точки или ломаная фигура, состоящая из 10. Способ решения прост — для вариантного массива есть специальная функция VarArrayHighBoundQ, которой в качестве первого параметра передаем имя массива, а в качестве второго — единицу.

Полезные возможности

Предлагаю не останавливаться на достигнутом. Нарисуем круг и заштрихуем его. Для этого служит метод AddHatch(), принадлежащий коллекции ModelSpace. Итак, разместим на форме кнопку, назовем ее

«Штриховка» и впишем в ее обработчик следующий код:

AutoCADHatch, Zalivka: OleVariant;

TypeColorl, TypeColor2: OleVariant;

Points:01eVariant; begin

Points:= VarArrayCreate([0, 2], VarDouble);

Points[0]:= 400; Points[l]:= 700; Points[2]:= 500;

//Задаем границы штриховки

Zalivka:= VarArrayCreate([0, 0], varDispatch);

Zalivka[0]:= AcadDocumentl. ModelSpace.AddCircle(Points,500);

//Задаем параметры штриховки

AutoCADHatch:= AcadDocumentl. ModelSpace. AddHatch (acPreDefinedGradie nt, 'LINEAR', True, acGradientObject);

//Задаем цвета заливки

TypeColorl:= AutoCADHatch. GradientColorl;

TypeColorl.SetRGB(200, 50, 200);

AutoCADHatch.GradientColorl:= TypeColorl;

TypeColor2:= AutoCADHatch. GradientColor2;

TypeColor2.SetRGB(0, 250, 0);

AutoCADHatch.GradientColor2:= TypeColor2;

//Передаем границы заливки

AutoCADHatch. AppendOuterLoop(Zal ivka);

//Осуществляем заливку

AutoCADHatch.Evaluate;

//Сообщаем о совершенных изменениях в AutoCAD

AcadDocumentl.Application.Update; end;

Обратите внимание на второй параметр функции AddHatch(). Он отвечает за шаблон штриховки и может принимать следующие значения:

- LINEAR

- CYLINDER

- INVCYLINDER

- SPHERICAL

- HEMISPHERICAL

- CURVED

- INVSPHERICAL

- INVHEMISPHERICAL

- INVCURVED

Методом RGB() мы задаем два цвета штриховки, которые затем смешаются в соответствии с указанным шаблоном. Рассмотрим создание собственного слоя с возможностью рисования в нем фигуры. В решении этой задачи нам поможет следующая строчка кода:

AcadDo cumentl. Layers. AddTMyLayer');

Вот и все — разве чтоперед рисованием будет нужно его активировать. Для нашего следующего примера понадобится кнопка с названием «Выберите объект», нажатие на нее позволит пользователю простым щелчком мыши указывать фигуру на чертеже, после чего она будет выделена желтым цветом. Необходимый листинг вы найдете в исходниках программы. И на закуску: разместите две кнопки «Проверить наличие изменений» и «Сохранить». С помощью первой мы будем узнавать, был ли изменен текущий чертеж с момента его открытия,используя системную переменную AutoCAD — DBMOD. Если она содержит 0, то чертеж не был изменен, иначе — был. Вторая кнопка позволит нам сохранить чертеж.

Из истории создания AutoCAD

В апреле 1982 года была организованна компания Autodesk - автор ныне популярного программного продукта для автоматизированного проектирования AutoCAD. В то время она состояла всего лишь из 15 программистов. Новый продукт кардинально изменил положение дел в сфере разработки конструкторской документации. В настоящее время AutoCAD используют миллионы людей по всему миру, он переведен более чем на 18 языков. Кстати, одним из факторов популярности, которую AutoCAD приобрел в России, является то обстоятельство, что компания Autodesk перевела свой продукт на русский язык еще в начале продвижения первых версий программы.

Версии AutoCAD

Версия 1.0 (Release 1)Декабрь1982г

Версия 1.2 (Release 2) Апрель 1983 г

Версия 1.3 (Release 3)Август1983г

Версия 1.4 (Release 4) Октябрь 1983 г

Версия 2.0 (Release 5) Октябрь 1984 г

Версия 2.1 (Release 6) Май 1985 г

Версия 2.5 (Release 7) Июнь 1986 г

Версия 2.6 (Release 8) Апрель 1987 г

Версия 9 - Сентябрь 1987 г

Версия 10 - Октябрь 1988 г

Версия 11 - Октябрь 1990 г

Версия 12-Июнь 1992 г (последний выпуск для Apple Macintosh)

Версия 13-Ноябрь 1994 г (последний выпуск для Unix, MS-DOS и Windows 3.11)

Версия 14 - Февраль 1997 г

AutoCAD 2000 (R15.0)- Март 1999г

AutoCAD 2000I (R15.1)- Июль 2000г

AutoCAD 2002 (R15.6)- Июнь 2001г

AutoCAD 2004 (R16.0)- Март 2003г

AutoCAD 2005 (R16.1)- Март 2004г

AutoCAD 2006 (R16.2)- Март 2005г

AutoCAD 2007 (R17.0)- Март 2006г

AutoCAD 2008 (R17.1)- Март 2007г

Список литературы

IT спец № 07 ИЮЛЬ 2007

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений22:33:49 18 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
15:57:33 24 ноября 2015

Работы, похожие на Статья: IT-практикум: DELPHI и AutoCAD

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

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



Результаты(151100)
Комментарии (1843)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru