Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


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

Тип Реферат
Предмет Информатика и программирование
Просмотров
1098
Размер файла
22 б
Поделиться

Ознакомительный фрагмент работы:

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

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

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

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 FilesAutodesk 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.

Выберите пункт меню Formatl_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


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
152761
рейтинг
icon
3180
работ сдано
icon
1378
отзывов
avatar
Математика
Физика
История
icon
148352
рейтинг
icon
5974
работ сдано
icon
2702
отзывов
avatar
Химия
Экономика
Биология
icon
105024
рейтинг
icon
2092
работ сдано
icon
1305
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
59 215 оценок star star star star star
среднее 4.9 из 5
ИвГУ
Большое Спасибо! Лилиана, ! реферат по философии выполнен хорошо! Грамотное оформление, ав...
star star star star star
БГТУ
Спасибо огромное , работа выполнена быстро , реферат принят с первого раза преподавателем.
star star star star star
РУДН
Очень общительный исполнитель, все выполнено раньше срока и качественно. Рекомендую!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 2 лабораторных рбот

Лабораторная, физика

Срок сдачи к 16 мар.

1 минуту назад
1 минуту назад

задача расчет вала

Контрольная, Сопротивление материалов

Срок сдачи к 20 мар.

2 минуты назад

Сделать тех описание для логотипа согласно тех заданию

Другое, авторское право

Срок сдачи к 16 мар.

4 минуты назад

тема: Методика обучения физики. Содержание и методика использования в

Курсовая, Методика обучения физике

Срок сдачи к 31 мар.

4 минуты назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени: 15 марта 2025 г. 09:01

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Press the down arrow key to interact with the calendar and select a date. Press the question mark key to get the keyboard shortcuts for changing dates.

Файлы (при наличии)

    это быстро и бесплатно