Часть полного текста документа: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 Files\Autodesk Shared), после чего инсталлируем новый набор ActiveX компонентов в систему (рис. 1). Нам станет доступно 5 новых компонентов: 1. AcadAcCmColor 2. AcadDataBase 3. AcadSecurityParams 4. AcadLayerStateManager 5. AcadDocument Простые примеры Разместим на форме компонент TAcadDocument, далее создадим обработчик события OnCreate для формы. В нем мы проверим, запущен ли на машине AutoCAD или нет (если нет, его придется запускать). Обязательно подключим модуль ComObj. Подключение к AutoCAD procedure TForml.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е([Размерность],Тип данных) Создание массива с заданной размерностью и заданным типом значений его элементов. ............ |