Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 400174.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
2.1 Mб
Скачать

ГОУВПО «Воронежский государственный

технический университет»

Кафедра компьютерных интеллектуальных технологий

проектирования

299-2009

Методические указания

для выполнения курсовой работы

по дисциплине «Компьютерная графика»

для студентов специальности 230104

«Системы автоматизированного проектирования»

заочной формы обучения

Воронеж 2009

Составители: канд. техн. наук А.С. Кольцов,

д-р техн. наук Е.Д. Федорков.

УДК 681.3

Методические указания для выполнения курсовой работы по дисциплине «Компьютерная графика» для студентов специальности 230104 «Системы автоматизированного проектирования» очной формы обучения / ГОУВПО «Воронежский государственный технический университет»; сост. А.С. Кольцов, Е.Д. Федорков. Воронеж, 2009. 46 с.

Методические указания содержат рекомендации по использованию основных возможностей входного языка Visual Lisp системы AutoCAD, автоматизирующих процесс проектирования чертежей деталей и предоставляющих возможности доступа к системным примитивам ввода-вывода. Эти знания необходимы при выполнении курсовой работы по дисциплине «Компьютерная графика». Оформлять курсовую работу согласно требованиям СТП ВГТУ 62-2007.

Методические указания подготовлены на магнитном носителе в текстовом редакторе Microsoft Word 2003 и содержатся в файле KompGraf_KR.doc

Предназначены для студентов 3 курса

Табл.1. Ил. 3. Библиогр.: 5 назв.

Рецензент д-р техн. наук, проф. К.А. Разинкин

Ответственный за выпуск зав. кафедрой д-р техн. наук, проф. Е.Д. Федорков

Издается по решению редакционно-издательского совета Воронежского государственного технического университета

© ГОУВПО «Воронежский

государственный

технический университет», 2009

Содержание

  1. Основные теоретические положения…………………2

  2. Состав и объем курсовой работы…………………….39

  3. Задание на курсовую работу………………………….40

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

Приложение А – Варианты задания………………..…….42

1 Основные теоретические положения

Введение в Visual Lisp

Visual LISP представляет собой интегрированную среду разработки (integrated development environment - IDE), обеспечивающую удобный и простой в использовании интерфейс, который помогает создавать код, отлаживать его и тестировать программы. К числу полезных возможностей Visual LISP можно отнести следующие:

  • средство проверки синтаксиса Syntax Checker и выделение синтаксических ошибок, облегчающее их исправление;

  • компилятор File Compilation, обеспечивающий быстрое выполнение программ;

  • окна Inspect и Walch, в которых можно просматривать значения переменных в процессе выполнения программ;

  • контекстно-зависимая справка;

  • управление с помощью окна проекта приложениями, содержащими несколько файлов;

  • хранение протокола выполнения операций, что позволяет повторно вызвать введенную ранее информацию.

Создание собственных программ на Visual Lisp

Как и все языки программирования, Visual Lisp имеет свой синтаксис и содержит свой набор функций. Разрабатывать программы на Visual Lisp довольно просто, так как они сразу могут быть протестированы.

В языке Visual Lisp первым всегда стоит оператор, за которым следуют команды. Оператор можно считать обозначением функции, которая что-то выполняет, а операнды - данными, которыми оперирует функция.

Язык Visual Lisp можно использовать в AutoCAD в интерактивном режиме, поскольку он является интерпретатируемым. Результат получается немедленно после ввода выражения языка Visual Lisp в командную строку. Интерпретируемый язык - это язык, в котором операторы транслируются в машинные коды и выполняются по очереди. Это дает возможность интерактивного ввода Visual Lisp - программ в AutoCAD .

Чтобы создать новый файл Visual LISP, откройте редактор Visual LISP (команда Tolls  Visual Lisp  Visual LISP Editor) и выберите команду File  New file или щелкните на пиктограмме New File стандартной панели инструментов.

Теперь в новом документе можно начать вводить код. Как только вы приступите к вводу, то сразу же заметите, что ваш код выглядит несколько иначе, чем текст в обычном текстовом редакторе - он выделен цветом! Visual LISP позволяет выделить соответствующим цветом некоторые элементы синтаксиса языка. В табл. 1 приводятся цвета и соответствующие им элементы.

Таблица 1 – Выделение цветом в редакторе Visual LISP

Цвет

Элемент синтаксиса Visual Lisp

Голубой

Встроенные функции и защищенные символы

Пурпурный

Текстовые строки

Зеленый

Целые числа

Цвет морской волны

Действительные числа

Пурпурный на сером фоне

Комментарии

Красный

Скобки

Черный

Нераспознанные элементы, например, созданные вами переменные

Эти цвета можно настроить по-своему. В меню Visual LISP выберите команду Tools  Window Attributes  Configure Current (Сервис  Атрибуты окна  Текущая конфигурация). В диалоговом окне Windows Attributes (Атрибуты окна) выберите из раскрывающегося списка некоторый элемент, а на палитре цветов соответствующий образец. В этом диалоговом окне можно также изменить легкую границу и ширину табуляции.

Программирование на Visual Lisp

Одним из важнейших элементов большинства языков программирования являются переменные. Важным фактором использования переменных является возможность присвоения им значений. Рассмотрим пример, в котором переменной radius присваивается значение 3.

(setq radius 3)

Эту операцию можно выполнить в окне Console Visual LISP. Если вы хотите использовать эту переменную в командной строке AutoCAD, перед ней следует поставить (!):

Command: !radius

3

Восклицательный знак перед переменной заставляет программу вычислить (оценить) значение, хранящееся в переменной, и вывести его в командную строку. При работе с переменными в окне Console восклицательный знак перед именем переменной не нужен, поскольку предполагается, что любая вводимая в этом окне информация представляет собой выражение Visual Lisp.

Взаимосвязь между строковыми константами и переменными так же проста, как между числовыми константами и переменными.

(setq name "Robin")

"Robin"

Можно также использовать вложенные Visual Lisp-выражения - включать их одно в другое:

(setq radiua (+ 2 1))

3

Как было описано в предыдущей главе, Visual Lisp сначала вычисляет выражения во внутренних скобках (+ 2 1), а затем присваивает результат переменной radius.

Доступность команд AutoCAD из языка Visual Lisp служит мощным средством автоматизации часто выполняемых функций. Комбинируя команды AutoCAD переменными Visual Lisp, как описано в предыдущем разделе, можно достичь высокой степени гибкости программирования.

Функция COMMAND используется в языке Visual Lisp для выполнения команд AutoCAD. Она воспринимает все следующие операнды так, будто они вводятся в командную строку в интерактивном режиме. При программировании функции COMMAND в Visual Lisp нужно в точности дублировать то, что вводилось бы в командную строку.

Например, при использовании переменных startpt и endpt для начальной и конечной точек отрезка обращение к команде LINE из Visual Lisp-выражения осуществляется так:

(command "_line" startpt endpt "")

Использование функций всегда начинается с оператора DEFUN. Можно определить три основные типа функций:

К первому типу относятся функции, определяемые оператором DEFUN, именам которых предшествует C: (до сих пор вы встречались именно с такими функциями). Это позволяет использовать имя функции в командной строке AutoCAD. Такую функцию можно использовать, как любую команду AutoCAD.

Определение функции можно оформить и без префикса C:. Этот тип функций наиболее удобен, если функция вызывается другими Visual Lisp-выражениями. Для обращения к ней из командной строки необходимо заключить имя функции в круглые скобки. Заметим, что в Visual Lisp-выражениях можно также использовать функции с префиксом c:. Для этого в круглые скобки необходимо заключить имя функции вместе с префиксом, например (с:circle3).

Третий тип функций - S::STARTUP. Если функция определена с именем S::STARTUP (обычно именно такое определение вы встретите в файлах acad-doc.lsp), оона будет автоматически выполнена при инициализации нового чертежа или запуске AutoCAD.

При создании функции S::STARTUP необходимо хорошо продумать, в какой файл ее поместить. Ранее кратко упоминались различия между файлами acad.lsp и acaddoc.lsp. Необходимость создания двух файлов автозагрузки в AutoCAD 2000 объясняется тем, что в этой версии появился многооконный интерфейс - MDI, который позволяет открывать несколько чертежей одновременно. Более подробная информация по этому вопросу содержится на врезке Автоматически загружаемые файлы .lsp. Использование функции S::STARTUP значительно повышает производительность, так как позволяет автоматизировать любые стандартные операции, которые обычно выполняются в начале сеанса работы в AutoCAD или при открытии нового чертежа.

AutoCAD автоматически загружает четыре файла Visual Lisp. Два из них, acad2000.lsp и acad2000.lsp, появились лишь в AutoCAD 2000. Компания Autodesk рекомендует зарезервировать эти файлы для нужд разработчиков самой системы AutoCAD. Файл acad2000.lsp загружается один раз при загрузке AutoCAD, а acad2000doc.lsp загружается при открытии каждого нового чертежа.

Два других автоматически загружаемых файла Visual Lisp - acad.lsp и acaddoc.lsp - предназначены для пользователей системы. Файл acad.lsp загружается один раз перед началом сеанса работы в AutoCAD, а файл acaddoc.lsp - перед открытием каждого нового чертежа. Это означает, что в эти файлы можно поместить различные программы инициализации: одну для инициализации AutoCAD (в файл acad.lsp), а другую для каждого нового чертежа. Функции C::STARTUP можно поместить в оба файла. Однако следует помнить, что, помещая различные функции в оба файла, вы, по существу, отключаете функцию S::STARTUP, определенную в файле acad.lsp. Вам необходимо создать оба файла - acad.lsp и acaddoc.lsp. Однажды создав каждую из этих программ Visual Lisp и сохранив ее в одном из вышеназванных файлов, вы впоследствии сможете добавить в этот же файл другие программы. AutoCAD будет автоматически загружать эти файлы до тех пор, пока они будут существовать.

Файлы инициализации загружаются в следующем порядке:

Acad2000.lsp. Загружается в AutoCAD 2000 первым.

Acad.lsp. Этот определенный пользователем файл загружается один раз при загрузке AutoCAD 2000.

Acad2000doc.lsp. Системный файл инициализации документа, загружаемый AutoCAD 2000.

Acaddoc.lsp. Определенный пользователем файл инициализации документа.

Можно создавать функции с аргументами. Аргумент - это значение, которое должно передаваться функции. Функция использует значение аргумента в процессе выполнения. При этом локальные переменные помещаются в круглых скобках после косой черты. Аргументы тоже располагаются в круглых скобках, но только до косой черты. Если локальные переменные в функции отсутствуют, косая черта не ставится. Ниже приводится пример функции с одним аргументом.

(defun chg2red (selected_object)

)

Для обращения к этой программе из AutoCAD или из другой Visual Lisp-программы используется формат (chg2red selected_object). Здесь имя переменной, которая передается программе chg2red в качестве аргумента, находится после имени функции, и все выражение заключается в круглые скобки.

При каждом обращении к функции chg2red в какой-либо программе необходимо задавать значение аргумента. В качестве аргумента можно использовать конкретное значение или имя определенной в программе переменной, значение которой вводится пользователем в процессе работы программы.

Необходимость выполнить какую-либо процедуру при наличии некоторых условий возникает довольно часто. Условное выражение проще всего создать при помощи оператора IF, который выполняет одно действие, если выражение-операнд истинно, и другое, если оно ложно. Иными словами, результат операции зависит от истинности некоторого выражения.

( if условное выражение Если_True Если_False).

Предположим, требуется выбрать окружности с радиусом меньше 0.25. Вот пример оператора IF, в котором radius - переменная с присвоенным ранее значением:

( if (< radius .25)

(princ "Радиус меньше .25")

(princ "Радиус не меньше .25")

)

Здесь используется условное выражение (< radius .25). Выражение Если_True - это (princ "Радиус меньше .25"), а выражением Если_False - (princ "Радиус не меньше .25"). Этот условный оператор эквивалентен следующему утверждению: Если радиус меньше, чем .25, печатать "Радиус меньше .25"< если нет - "Радиус не меньше .25".

Выражение Если_False можно опустить. Тогда Visual Lisp выполнит выражение Если_True, если условное выражение истинно, а если оно ложно, сразу перейдет к выполнению остальной части программы.

Циклы обеспечивают возможность выполнения одного или нескольких операторов программы заданное количество раз. Один из способов организации цикла - использование оператора WHILE.

Формат функции WHILE следующий:

(while условное_выражение Если_True операторы тела цикла, которые выполняются до тех пор, пока условие истинно )

Общий подход к установке условий состоит во включении счетчика в оператор WHILE. Счетчик подсчитывает количество выполненных операций. Условием выхода из цикла может служить достижение счетчиком некоторого значения. Чтобы сформировать счетчик, присвойте переменной значение, с которого вы хотите начать выполнение операции. Затем напишите код (точнее, его фрагмент) для одного прохода. После этого увеличьте значение счетчика, используя выражение типа

(setq counter (+1 counter))

Программа будет повторять выполнение операции до тех пор, пока счетчик (переменная counter) не достигнет установленного вами значения.

Вот простой пример:

(defun c:process (/ counter)

(setq counter 1)

(while (< counter 6)

(princ "Номер цикла обработки ")

(princ counter)

(terpri)

(setq counter (+ 1 counter ) )

))

В этом примере функция PROCESS присваивает переменной counter значение 1. Затем начинается цикл WHILE, условием выполнения которого является то, что значение переменной counter должно быть меньше 6. Внутри оператора WHILE печатается строка "Номер цикла обработки " и затем значение переменной counter. Функция (tepri) обеспечивает печать каждой следующей строковой константы с новой строки. Затем для переменной counter вычисляется новое, большее значение. Каждый раз после выполнения операторов тела цикла значение счетчика увеличивается на 1. Без приращения значения переменной counter условие в строке 3 всегда будет возвращать Т и цикл никогда не закончится.

Если вы случайно создали программу с таким бесконечным циклом, то можете прервать выполнение Visual Lisp-программы, нажав <Esc>, <Ctrl+Break> или выбрав в меню Visual LISP команду Debug  Abort Evaluation.

В приведенном примере цикл WHILE продолжается до тех пор, пока переменная counter меньше 6. Когда значение счетчика станет равным 6, программа остановится. Оператор WHILE возвращает последнее значение программы, так что AutoCAD в последней строке выведет 6.

При работе с оператором WHILE может возникнуть желание объединить несколько операций в один блок. Для этого можно использовать функцию PROGN. Visual Lisp , встретив эту команду, будет рассматривать все, что включено в конструкцию PROGN, как один оператор, например:

(defun c:compare2three (/ entered_num)

(setq entered_num (getint "\nВведите число: ") )

( if ( < enered_num 3)

(princ "\nВведенное число меньше 3.")

(if (= entered_num 3)

(progn

(princ "\nВведенное число равно 3.")

(terpri)

(princ "\nЭто и есть результат эксперимента."))

(princ "\nВведенное число больше 3.")

)

)

(princ)

)

Наиболее эффективен Visual Lisp при работе с объектами чертежей. Любой объект базы данных AutoCAD (или примитив) имеет имя. По этому имени можно получить справку об объекте из любого места собственного Visual Lisp-приложения. Чтобы увидеть пример имени объекта, после создания нового чертежа введите:

(command "_line" "3,3" "5,5" "")

(enylast)

Visual Lisp возвратит Entity name: 2ed0520> (<Имя примитива:2ed0520>).

Возможно, в вашей системе имя примитива будет определяться другим числом. Используя возвращаемое функцией ENYLAST имя примитива, можно программным путем получать или устанавливать набор опций для любого заданного объекта базы данных.

В начале программы включите комментарий с описанием функционального назначения программы. Это поможет другим пользователям вашей программу лучше понять ее логику, а вам самим - быстрее вспомнить собственный замысел несколько месяцев спустя. Строки комментария в Visual Lisp-Программах начинаются с символа "точка с запятой"(;).

Комментарии также следует поместить и в тексте программы. Отсутствие комментариев может испортить даже самый лучший код. Большинство профессиональных программистов очень подробно комментируют и документируют свои программы.

Visual LISP поддерживает несколько типов комментариев. Щелкните на пиктограмме Format Edit Window панели инструментов Tools, и Visual LISP автоматически выровняет комментарии этих типов в вашей программе в процессе форматирования текста:

;;; - три точки с запятой. При использовании такого комментария Visual LISP выравнивает комментарий по левому краю. Этот тип комментария используют в начале программы для описания ее назначения и функционирования.

:: - две точки с запятой. Этот комментарий сдвигается в процессе форматирования на уровень следующих скобок. Такой комментарий используется для пояснения следующей за ним одной или нескольких строк кода.

; - точка с запятой. Комментарий, помеченный этим символом, Visual LISP в процессе форматирования кода по умолчанию сдвигает на 40 символов. Это значение можно изменить в диалоговом окне Format Options (Параметры форматирования), которое открывается при выборе команды ToolsEnvironment OptionsVisual LISP Format Options (СервисПараметры средыПараметры форматирования Visual LISP) . Этот тип комментария обычно используется для текущих пояснений в правой части кода. Благодаря большому отступу такие комментарии хорошо выделяются на фоне кода.

Среда визуального программирования Delphi

Среда Delphi обеспечивает высокоэффективную работу программиста и является одной из популярных систем программирования. Этим объясняется актуальность передачи расчетных параметров из программы созданной с помощью Delphi в AutoCAD. Рассмотрим варианты передачи расчетных данных в графический редактор AutoCAD.

Управляющая программа составляется ввода и/или расчета различных конструктивно-геометрических параметров деталей (различные размеры), которые необходимы для вычерчивания с помощью графического редактора AutoCad.

Ниже приведен укрупненный алгоритм программы организующей взаимосвязь управляющего модуля с примитивами системы AutoCAD:

  • Определение (назначение, ввод) значений основных параметров детали;

  • Расчет основных размеров; вычисление объема и массы;

  • Формирование и пересылка базовых точек в текстовый файл name.txt или базу данных;

  • Определение и запуск AutoCAD;

  • Автоматическая загрузка файла name.lsp и построение чертежа.

Рассмотрим более подробно механизм передачи расчетных параметров в графический редактор AutoCAD. Текстовый файл name.txt формируется программой и представляет собой записанные в определенном порядке расчетные параметры. В конце файла могут быть указаны справочные данные, например, марка материала и масса детали и др.

Для осуществления связи между программой, написанной на языке Delphi и графической системой необходимо указать место нахождения последней. Для этого указывается полный путь к файлу acad.exe, после чего программа проверяет наличие запускающего файла в указанной директории. Для осуществления автоматической загрузки файла name.lsp, предусмотрено наличие файла с расширением *.scr, в котором указанно имя lsp-файла, а так же название функции для прочерчивания детали. Файл acad.exe записывается со специальным ключом. Например: c:\program files\acad200\acad.exe /b name1.scr

В системе программирования Visual Lisp предусмотрены специальные функции для считывания данных из текстового или какого-либо другого файлa (atof (read-line f), где f—файловая переменная), после выполнения которых определенным переменным в программе Visual Lisp присваиваются значения параметров, посчитанных в расчетной программе. Затем, командами, содержащимися в файле name.lsp, осуществляется автоматическое прочерчивание детали.

Ниже представлены основные процедуры и функции, используемые в программе:

  • (setq f (open "name.txt" "r")) – процедура, связывающая файловую переменную f с файлом обмена данных .txt.

  • (command "limits" "0,0" "420,300" ^c) – процедура, устанавливающая пределы чертежа. В дальнейшем команды, указываемые в кавычках, означают стандартные процедедуры ACAD’а, вызываемые Auto LISP’ом.

  • (setq a (atof(read-line f))) – процедура присваивания переменной а, значения первой строки текстового файла, причем функция atof переводит строковую переменную в переменную типа real.

  • (close f) – стандартная процедура, означающая конец работы с файлом.

  • (command "zoom" "180,180" "210,210" ^C) – процедура, увеличивающая окно с координатами, указанными в кавычках (без данного увеленичения не проставляется радиус дуги)

  • (setq pt2 (list x2 y2 )) – процедура, присваивающая списковой переменной pt2 два значения х2 и у2.

  • (command "line" pt0 pt1 ^c) – процедура рисования отрезка от точки pt0, к точке pt1.

  • (command "arc" pt1 pt2 pt3 ^c) – процедура вычерчивания дуги по трем точкам.

  • (command "linetype" "set" "center2" ^c)– процедура ACAD’а, устанавливающая новый тип линии -- "center2". (для линии центра вида сверху).

  • (setq ll( distance pd1 pd2 ) ) – функция, возвращающая в переменную ll расстояние от точки pd1 до точки pd2.

  • (command "dimlinear" pd1 pd9 pdi4 ^c) – процедура проставления вертикального или горизонтального размера от точки pd1, к точке pd9. Выноска размера устанавливается в точку pdi4.

  • (command "dimaligned" pt0 pt1 pdi1 ^c) – процедура проставления размера под углом базовой линии.

  • (command "dimradius" pt2 pdi2 ^c) – процедура проставления радиуса. Выноска осуществляется в точку pdi2.

  • (command "dimangular" "" pt0 pt4 pt1 ^c) – процедура проставления размера угла (по трем точкам pt0 pt4 pt1, в точку pt13).

  • (command "text" "366,10" "5" "0" "ВГТУ АМ-031" ^c)– процедура вставления текста ВГТУ АМ-031 размером 5 мм в точку с координатами 366,10.

В программе можно использовать арифметические функции:

  • (setq xq3 (- x5 10 )) – переменной xq3 присваивается значение разности переменной х5 и 10.

  • (setq xc1 (+ a 15 )), (setq pt16 (list (+( - x4 (/ l 1.2))5) (+ b 7)))– то же самое – сложение, деление и вложенные операции.

Организация доступа к внешним базам данным

AutoCAD предоставляет пользователю возможность соединения с внешними базами данных непосредственно из приложения. Подключение к базам данных— мощное средство связи рисуемых объектов с данными. С помощью подключений можно связывать данные из внешних баз данных с любыми объектами чертежа.

Множество пользователей AutoCAD держат свои базы данных отдельно от чертежей и поступают верно, так как теперь можно непосредственно работать с данными, связав строку из таблицы базы данных с объектом чертежа. Такие объекты достаточно разумны и в состоянии поддерживать постоянную связь с данными, оперативно реагировать на вносимые непосредственно из AutoCAD изменения в данных, будь то цена или номер детали. Внесенные изменения немедленно отразятся на всех других объектах чертежа, связанных с данными. Можно также пометить все связанные объекты чертежа текстовыми ярлыками, содержимое которых соответствует данным из базы.

Использование внешних баз данных для хранения сведений об объектах чертежа может уменьшить его размер, упростить отчетность, сделать данные доступными всем пользователям в сети и позволяет редактировать базу данных непосредственно из AutoCAD. Возможность подключения AutoCAD к базам данных включает настройку источника данных, подключение таблицы к чертежу и создание связей между объектами чертежа и строками в базе данных. Также можно создавать ярлыки, содержащие информацию из базы данных.

Таким образом, работа с внешними данными позволяет организовать внешние ссылки на чертежи; осуществить работу с повторяющимися объектами; организовать и поддерживать чертежное хозяйство (архивация, поиск и обработка ошибок и др.); организовать взаимодействие с другими приложениями (экспорт/импорт в другие форматы данных); использовать Intenet.

Подготовка к работе с базами данных

Связь между чертежами AutoCAD и базами данных называется доступом к внешним базам данных (external database access). Этот доступ предоставляет ряд возможностей:

  • Создавать связи между объектами AutoCAD и внешними данными;

  • Просматривать данные во внешних базах данных;

  • Редактировать данные во внешних базах данных;

  • Выводить данные из внешних баз данных на поле чертежа.

Возможен доступ к внешним базам данных следующих типов:

- Microsoft Access 2000, 97 и 95;

- Microsoft Excel 97 и 95;

  • Microsoft Visual FoxPro 6.0 и 5.0;

  • SQL Server 6.5, 2000.

После настройки базы данных у пользователя появляется доступ к базе данных, несмотря на то, что на компьютере отсутствует программный продукт, с помощью которого база была создана.

Для подготовки к работе с базами данных необходимо выполнить ряд следующих операций:

  • Убедиться, что компонент работы с базами данных установлен в AutoCAD;

  • Проверить, установлена ли программа ODBC Data Source;

  • Разместить таблицы нужной базы данных в каталоге и подкаталогах, соответствующих приложению;

  • Настроить соответствующий драйвер базы данных с помощью программ Microsoft Ш ODBC и OLE DB;

  • Настроить источник данных в AutoCAD;

  • Запустить команду dbCONNECT;

  • Определить имя пользователя и пароль, если того требует система управления базой данных;

  • Подключиться к источнику данных;

  • Открыть окно Data View (Просмотр данных), в котором выводится информация из таблиц источника данных;

  • При необходимости можно редактировать данные;

  • Связать строки базы данных с объектами чертежа;

  • Создать при необходимости ярлыки на основе данных из таблиц.

Подключение к базам данных не входит в типовую конфигурацию установки AutoCAD.

Для обеспечения этой возможности (т.е. установки компонента работы с базами данных) требуется либо полная (Full), либо выборочная (Custom) установка AutoCAD. В случае выборочной установки необходимо выбрать пункт Database в диалоговом окне Custom Components (Выбор компонентов).

Для проверки установки компонента работы с базами данных, нужно открыть меню Тооls (Сервис). Если оно содержит пункт dbConnect (Подключение БД), то компонент работы с базами данных установлен.

Организация связи чертежа и базы данных

Перед подключением к базе данных необходимо продумать систему организации отношений между чертежом и базой данных, а именно:

  • Должны ли данные находиться в одной базе данных с несколькими таблицами или в нескольких отдельных базах данных;

  • Какие именно данные будут связаны с объектами чертежа;

  • Будет ли связано с одной строкой таблицы (записью) несколько объектов или только один;

  • Будет ли связана с одним объектом только одна строка таблицы или несколько;

  • Какой столбец (или столбцы) будет идентифицировать уникальность записей.

Для выполнения всех необходимых действий по подключению используется диалоговое окно dbConnect Manager (Менеджер подключения БД). Окно dbConnect Manager имеет собственную панель инструментов, которая становится активной при выборе источника данных из списка со всеми настроенными источниками данных. В окне dbConnect Manager можно увидеть список открытых чертежей и настроенных источников данных.

Для подключения внешней базы данных к чертежу необходимо следующее:

  • Открыть чертеж, к которому желательно подключить базу данных;

  • Выбрать из меню Tools  dbConnect (Сервис  Подключение БД) для открытия dbConnect Manager;

  • Щелкнуть правой кнопкой мыши на источнике данных, к которому нужно подключиться (список доступных источников данных формируется из настроенных в AutoCAD источников) и выбрать Connect.

AutoCAD перечислит таблицы базы данных, связанные с источником данных. Подключается вся структура базы данных целиком, и теперь можно просматривать и работать с данными непосредственно из AutoCAD.

После подключения базы данных необходимо выбрать таблицу, с которой нужно работать. Чтобы увидеть доступные файлы базы данных, нужно щелкнуть на знаке "плюс" рядом с именем базы данных. Около него также изображается знак "плюс", щелчок на котором позволит узнать, какие именно таблицы базы данных содержатся в этом файле (файл базы данных может содержать одновременно несколько таблиц). Данные в открытой таблице можно просматривать и редактировать в окне Data View(Просмотр данных), в котором представлены данные в виде сетки электронных таблиц.

Если данные не надо изменять, то можно воспользоваться просмотром данных. Для этого нужно щелкнуть правой кнопкой мыши на нужной таблице и выбрать в контекстном меню View Table.

Если нужно внести изменения в данные из AutoCAD, то необходимо щелкнуть правой кнопкой мыши на нужной таблице и выбрать в контекстном меню Edit Table.

Можно также выбрать необходимую таблицу и воспользоваться пиктограммами View Table (Просмотр таблицы) или Edit Table (Правка таблицы), расположенными на панели инструментов dbConnect.

Вид выводимых данных можно временно изменить. Вносимые изменения не сохраняются при закрытии окна и не влияют на данные в базе. Ниже перечислены доступные опции:

  • Resize a column (Изменить размер столбца). В окне можно увидеть не все столбцы, в этом случае нужно щелкнуть на линии сетки справа от заголовка столбца и перетягивать ее влево или вправо. Таким образом, можно целиком изменить размер окна, перетягивая его рамки.

  • Move a column (Перенести столбец). Можно изменить порядок следования столбцов, перемещая их в новое положение.

  • Hide a column (Скрыть столбец). Можно скрыть столбец, с которым пользователь не намерен работать в данный момент. Для этого нужно сначала щелкнуть на его заголовке, чтобы выбрать столбец, а затем, щелкнув на нем правой кнопкой мыши, выбрать из контекстного меню команду Hide. Для восстановления скрытых столбцов щелкнуть правой кнопкой мыши на любом заголовке столбца и выбрать из контекстного меню команду Unhide All.

  • Sort records (Сортировать записи). Можно отсортировать записи в возрастающем или убывающем порядке. Сортировка поможет быстрее находить нужные записи. Щелкнуть на заголовке любого столбца правой кнопкой мыши и выбрать команду Sort для открытия соответствующего диалогового окна Sort (Сортировка).

  • Freeze one or more columns (Заморозить один или более столбцов). "Замораживание" одного или нескольких столбцов перемещает их в левый край окна, где столбцы остаются, несмотря на выполнение горизонтальной прокрутки. Сначала необходимо выбрать предназначенные для замораживания столбцы. Затем щелкнуть правой кнопкой мыши и выбрать из меню Freeze. Для возврата столбца в первоначальное положение щелкнуть правой кнопкой мыши и выбрать из меню Unfreeze АН.

  • Align text (Выровнять текст). Можно выровнять текст в столбцах. Выравнивание по умолчанию, для числовых данных правое, для прочих— левое. Выбрать столбец (столбцы), щелкнуть правой кнопкой мыши и в меню выбрать пункт Align. Теперь можно выбрать следующие варианты выравнивания текста: Standard, Left, Center или Right.

  • Format text (Форматировать текст). Можно форматировать текст, выбирая его шрифт, стиль, размер, подчеркивание или перечеркивание, а также цвет символов в окне Data View. Необходимо помнить, что эти изменения, в отличие от описанных выше, запоминаются и продолжают действовать при повторном открытии окна Data View.

Поиск нужной записи в окне Data View может отнять много времени даже при использовании для доступа к данным механизма прокрутки. Поэтому для ускорения процесса нахождения нужной записи можно использовать следующий механизм:

  • Выбрать любую ячейку в столбце, содержащем атрибут, который требуется найти. Если желательно осуществить поиск по всему столбцу, то нужно выбрать первую или последнюю ячейки;

  • Воспользоваться командой меню Data ViewFind (Просмотр данныхПоиск) для открытия диалогового окна Find (Поиск (можно также просто щелкнуть правой кнопкой мыши и выбрать из контекстного меню Find).

  • В диалоговом окне Find ввести необходимое значение (текст, число или их комбинацию), затем выбрать направление поиска (Up или Down). При необходимости можно отметить поле Match case, которое обеспечивает строгое соответствие образцу— с учетом регистра. Затем щелкнуть на кнопке Find Next для того, чтобы найти очередное вхождение искомого значения.

Открыв данные в режиме редактирования, их можно легко и просто редактировать, изменяя значение любой записи, удаляя и добавляя новые записи для отражения вносимых в чертеж изменений. Изменение записи сводится к выбору соответствующей ячейки и вводу в нее нового значения.

Для добавления новой записи нужно щелкнуть правой кнопкой мыши на любой записи (строке) и выбрать в контекстном меню команду Add New Record. AutoCAD создаст новую запись в конце таблицы и предоставит возможность внести в нее новые значения.

Для удаления записи нужно щелкнуть на ее заголовке, выбрав запись целиком. Затем выбрать в контекстном меню команду Delete и дважды подтвердить намерение удалить запись в появляющемся диалоговом окне.

Пока AutoCAD подключен к базе данных, нельзя использовать СУБД для редакционных данных — это может вызвать повреждение данных и сбой системы в целом. При необходимости работы с базой данных с использованием СУБД вне AutoCAD необходимо сначала убедиться в том, что база данных отсоединена от AutoCAD в окне dbConnect.

AutoCAD не сохраняет в базе данных внесенные изменения до тех пор, пока пользователь явно не потребует этого. Для сохранения изменений необходимо щелкнуть правой кнопкой мыши на заголовке сетки — ячейке в верхнем левом углу окна Data Table — и выбрать в контекстном меню команду Commit. Выбор в том же меню команды Restore приведет к отказу от внесенных изменений и восстановлению оригинальных значений таблиц базы данных.

Организация связи объектов чертежа с данными

Основная цель использования подключения к базе данных — связь данных с объектами чертежа. Строка данных содержит информацию о реальных объектах, которые представлены объектами на чертеже.

Благодаря связыванию объектов чертежа с данными можно выполнить ряд операций:

  • Просмотреть информацию о реальных объектах, представленных на чертеже, их цене, источнике, сроке обслуживания и т.п.;

  • Обновить чертеж на основе данных в базе (и наоборот), тем самым синхронизируя чертеж и базу данных;

  • Вывести ярлыки, содержащие информацию об объекте из базы данных.

При создании связи AutoCAD ассоциирует объект (или объекты) со строкой данных в базе данных. Для того чтобы сделать это, AutoCAD должен знать, какое поле (столбец) следует использовать для идентификации строки данных.

Однако некоторые поля могут иметь одинаковые значения или повторяться. Если пользователь предоставляет AutoCAD поле с неповторяющимися значениями, то приложение всегда находит нужную строку; в случае же повторяющихся значений — AutoCAD выбирает первую из строк с одинаковыми значениями. Именно поэтому, если данные не имеют такого поля с гарантированно различными значениями, большинство СУБД создают такое индексное поле сами, гарантируя, что все значения в нем уникальны.

Шаблон связи (link template), который в версии AutoCAD 14 именовался маршрутом связи (link path/key value}, определяет, какие поля ассоциированы со связями между данными и объектами чертежа. Шаблон связи также определяет используемую базу данных. Создав один раз шаблон связи, пользователь может в дальнейшем открывать данные непосредственно из шаблона. Шаблоны перечислены в окне dbConnect.

Если желательно связать с одним объектом данные более чем из одной таблицы, нужно будет создать несколько шаблонов связи для объекта.

Для создания шаблона необходимо выполнить ряд операций:

  • Воспользоваться командой меню dbConnect  Templates  New Link Template (Подключение БД  Шаблоны  Новый шаблон связи). Если таблица уже открыта, то можно просто выбрать New Link Template (Новый шаблон связи) в окне dbConnect;

  • Если таблица данных к этому моменту не открыта, AutoCAD откроет диалоговое окно Select Data Object (Выбор объекта данных), в котором пользователь может выбрать таблицу;

  • В поле ввода New Link Template Name в диалоговом окне New Link Template необходимо ввести имя шаблона. AutoCAD назначает имена шаблонов автоматически— Linkl, Link2 и т.д. Можно принять автоматически установленное имя или же назначить собственное. Если имеется шаблон, на основе которого желательно создать новый шаблон, то нужно выбрать его в выпадающем списке Start With Template;

  • В диалоговом окне Link Template необходимо пометить ключевое поле. Если оно содержит одинаковые строки, то нужно выбрать также второе ключевое поле;

  • Щелкнуть на кнопке ОК. AutoCAD создаст шаблон связи, который будет добавлен в окно dbConnect под текущим чертежом.

Другими изменениями в структуре базы данных, требующими корректировку шаблона, могут быть изменения имени или размера поля.

Для редактирования шаблона необходимо сначала подключиться к нужной таблице базы данных. Затем воспользоваться командой меню dbConnect  Templates  Edit Link Template (Подключение БД  Шаблоны  Правка шаблона связи). В диалоговом окне Select a Database Object выбрать шаблон связи и щелкнуть на кнопке Continue. Выбрать одно или несколько ключевых полей и щелкнуть на кнопке ОК. Можно также просто удалить шаблон связи командой dbConnect  Templates  Delete Link Template (Подключение БД  Шаблоны  Удалить шаблон связи).

Один объект чертежа можно связать с таким количеством записей в базе данных, которое пользователь сочтет нужным; можно также связать одну запись базы данных с несколькими объектами чертежа. Например, запись, содержащую информацию о номере детали, можно связать с деталью на чертеже.

Однако деталь может включать множество более мелких объектов — линий, дуг, окружностей и т.п. Можно связать запись со всеми этими мелкими объектами, составляющими единое целое.

Связи создаются следующим образом:

  • Открыть окно Data View (Просмотр данных), в котором имеется необходимый шаблон связи, и выбрать его из выпадающего списка Select a Link Template;

  • Выбрать одну или несколько записей, которые желательно связать с чертежом;

  • Воспользоваться командой меню Data View  Link and Label Settings  Create Links (Просмотр данных  Установки связей и ярлыков  Создание связей);

  • Воспользоваться командой меню Data View  Link (Просмотр данных  Связь);

  • AutoCAD вернется к чертежу. Выбрать один или несколько объектов и нажать <Enter> для окончания выбора объектов.

  • AutoCAD выведет сообщение в командной строке, например 1 Record(s) linked with 1 Object (s) (1 запись(и) связана с 1 объектом(ами)). Связь установлена.

Если была создана связь между объектом и строкой, а позднее пользователь редактирует объект без подключения к базе данных, то информация о связи с базой данных может быть повреждена.

Можно удалить связь, выбрав связываемый объект и щелкнув правой кнопкой мыши в области чертежа. После этого нужно воспользоваться командой Link  Delete Link контекстного меню.

После создания связи необходимо просмотреть ее, т.е. выяснить, какие строки и какие объекты связаны друг с другом. AutoCAD предоставляет такую возможность, причем позволяет взглянуть на связь с любой стороны: выбрав объект, увидеть, с какими строками базы данных он связан, или выбрав строку таблицы, узнать, с каким объектом она связана.

В обоих случаях надо воспользоваться командой меню Data View (Просмотр данных).

Для того чтобы найти строки, связанные с объектами, необходимо выбрать один или несколько объектов, а затем воспользоваться командой меню Data View  View Linked Records (Просмотр данных  Просмотр связанных записей). AutoCAD при этом выделит строку или строки, связанные с выбранным набором объектов.

Для того чтобы найти объекты, связанные со строками, нужно выбрать одну или несколько строк и воспользоваться командой меню Data View  View Linked Objects (Просмотр данных  Просмотр связанных объектов). AutoCAD панорамирует чертеж таким образом, чтобы связанные с этими строками объекты оказались в центре экрана, и выделит их.

Для последовательного просмотра связей, если желательно перемещаться по таблице от строки к строке, нужно использовать функцию Auto-View, которая автоматически выделяет объект при выборе записи в окне Data View (и строку— при выборе объекта на чертеже). Однако при этом можно работать только в одном направлении, т.е. выбирать либо только строки, либо только объекты. Используется эта возможность следующим образом:

  1. Для автоматического выбора связанных объектов при выборе строки можно пользоваться командой меню Data View  Auto-View Linked Objects (Просмотр данных  Автопросмотр связанных объектов), после чего нужно выбрать запись (или записи), щелкнув на их заголовках в окне Data View. AutoCAD при этом выделит связанные объекты. Можно продолжать выбирать различные записи для просмотра связанных с ними объектов. Для отключения режима автоматического просмотра вновь воспользуйтесь командой Auto-View Linked Objects;

  2. Для автоматического выбора связанных записей при выборе объекта можно воспользоваться командой меню Data View  Auto-View Linked Records (Просмотр данных  Автопросмотр связанных записей), после чего выбрать объект (или объекты). АutoCAD при этом выделит связанные строки данных. Можно продолжать выбирать различные объекты для просмотра связанных с ними строк. Для отключения режима автоматического просмотра вновь воспользуйтесь командой Auto-View Linked Records.

Находясь в режиме Auto-View, пользователь не может выбирать записи. Если щелкнуть на заготовке записи для создания новой связи, AutoCAD выведет сообщение: 0 Object (s) found latching 0 selected Record (s) (Найдено 0 объектов, соответствующих 0 выбранных записей).

После того как связи в чертеже были созданы, следует быть предельно осторожными при редактировании базы данных из AutoCAD. Пользователю может понадобиться выполнить серьезную операцию с базой данных: например, отредактировать ключевое значение, связанное с определенным объектом. Выправить ситуацию поможет диалоговое окно Link Manager (Менеджер связей):

  • Воспользоваться командой меню dbConnect  Links  Link Manager (Подключение БД  Связи  Менеджер связей), чтобы открыть диалоговое окно Link Manager;

  • В ответ на приглашение Select one object необходимо выбрать объект;

  • В окне Link Manager выбрать из выпадающего списка шаблон, с которым нужно работать

  • В столбце Value ввести новое значение;

  • Щелкнуть на кнопке ОК.

AutoCAD позволяет экспортировать список связей и дескрипторы (handle) ассоциированных со связью объектов. Дескриптор представляет собой уникальное имя, которое AutoCAD присваивает каждому объекту чертежа (чтобы увидеть дескриптор объекта, нужно выбрать объект и щелкнуть на пиктограмме List (Список) панели инструментов Inquiry (Справка). Экспортировать сформированный список можно в том же формате, что и база данных, или в формате с разделителями (пробелами или запятыми). Этот список можно использовать для анализа количества объектов, связанных со записью базы данных.

Для экспорта связей необходимо выполнить ряд операций:

  • Выбрать в меню команду dbConnect  Links  Export Links (Подключение БД  Связи  Экспорт связей);

  • В ответ на приглашение Select objects: выбрать объекты, связи которых необходимо экспортировать. По окончании выбора объектов AutoCAD откроет диалоговое окно Export Links. В этом окне в разделе Include Fields выбрать поля, которые должны быть включены при экспорте;

  • В выпадающем списке Save In выберите папку, в которой будет находиться сохраняемый файл;

  • В выпадающем списке Save as Type выберите один из трех форматов: текстовый с разделителем-запятой, текстовый с разделителем-пробелом или оригинальный формат базы данных;

  • В поле ввода File name укажите имя файла для сохранения данных;

  • Щелкните на кнопке Save. AutoCAD создаст соответствующий файл.

Этот файл можно использовать для создания списка объектов со связями. Для работы текстовый формат с разделителем-запятой предпочтительнее, чем формат с разделителем-пробелом. Если необходимо убрать из файла все дескрипторы объектов, то нужно отредактировать его.

Для этого можно открыть встроенный текстовый редактор и щелкнуть на кнопке Import Text для импорта файла в чертеж. Можно также открыть файл, скопировать его содержимое в буфер обмена и затем вставить его в чертеж. Метод Import Text позволяет отформатировать текст так, как хочет пользователь. Можно импортировать текст также в электронную таблицу и предварительно отформатировать его там. При использовании формата базы данных можно открыть файл в СУБД, отформатировать его и затем импортировать в чертеж.

Технология ActiveX

Технология ActiveX базируется на технологии Microsoft COM (Component Object Model - модель компонентных объектов), позволяющей создавать и использовать программные компоненты, предоставляющие различные сервисы другим приложениям, компонентам и операционной системе/2/. COM представляет собой одну из реализаций концепции распределенных вычислений, базирующейся в общем случае на предоставлении возможности приложениям использовать для расширения своей функциональности готовые компоненты и объекты (иногда они называются сервисами). Технология COM позволяет использовать объектно-ориентированный подход для всей операционной системы. В отличие от стандартных классов, определенных в исходном тексте и реализуемых, как объекты в адресном пространстве одного процесса, эти компоненты могут в общем случае располагаться в адресных пространствах разных процессов и даже на разных компьютерах. Известны следующие типы спецификаций COM:

  • OLE-документы, содержащие внедренные или связанные объекты. Эта спецификация описывает правила создания контейнеров для таких документов с "активацией по месту".

  • OLE Automation - эта спецификация описывает, как создать сервер и контроллер, управляющий его поведением с помощью скриптов или макросов. Она поддерживается Delphi и C++Builder.

Управляющие элементы ActiveX, использующие специальный вариант протокола Automation.

Использование технологии COM (в частности технологии ActiveX) позволяет создать приложения, собираемые из готовых компонентов - элементов управления ActiveX. Это отличается от технологии разработки приложений привычной пользователям Delphi или C++Builder. Такая технология не зависит от того, на каком языке написаны как готовые компоненты, так и использующее их приложение. Необходимо чтобы средство разработки поддерживало использование таких компонентов в разрабатываемом приложении (такое приложение обычно называется контейнером).

Элементы управления ActiveX представляют собой библиотеки, содержащие исполняемый код. Как было сказано выше, эти библиотеки могут быть использованы в различных приложениях как встроенные элементы управления, поэтому они обладают свойствами, событиями и методами, доступными посредством автоматизации. Современные средства разработки, как правило, позволяют включать такие элементы в создаваемые с их помощью приложения. Как любой COM-сервер, элемент управления ActiveX обладает уникальным идентификатором GUID и должен быть зарегистрирован в реестре. На основании этой записи может быть осуществлен поиск местоположения файла с расширением *.ocx, содержащего его реализацию.

Таким образом, создав элемент управления ActiveX, обладающий интересующей нас функциональностью, мы можем в дальнейшем позволить его пользователям встраивать этот элемент в свои приложения (например, написанные на Delphi, C++Builder и др.), при этом мы не обязаны предоставлять исходный текст этого компонента. Управляющие элементы ActiveX создаются в тех случаях, когда функциональность, содержащаяся в таком элементе, уникальна. Нет смысла создавать ActiveX, реализующий функциональность кнопки или текстового редактора - таких элементов управления, в том числе выполненных в виде ActiveX более чем достаточно. Нет смысла также создавать ActiveX, если он будет использоваться только в Delphi - в этом случае проще создать VCL-компонент, который будет работать в использующем его приложении значительно быстрее, чем аналогичный ActiveX. Но создание элемента управления, реализующего, к примеру, часть автоматизированного рабочего места какой-либо категории инженеров предприятия может в ряде случаев оказаться весьма полезным, особенно в следующих двух случаях. Первый случай - использование на предприятии различных средств разработки, например, C++Builder и Delphi; в этом случае разработчик, может встраивать в свои приложения ActiveX, созданный другим разработчиком и реализующий какую-либо функциональность, используемую несколькими различными автоматизированными рабочими местами. Второй случай - широкое использование ActiveX при автоматизации проектирования. Такой подход существенно облегчает решение проблемы обновления версий автоматизированных рабочих мест, так как вместо установки новых версий на рабочих станциях достаточно заменить один экземпляр ActiveX, хранящийся на сервере. Наиболее ярким примером такого подхода может быть выполненный в виде ActiveX "тонкий" клиент, получающий данные от удаленного сервера приложений, являющегося, в свою очередь, клиентом серверной СУБД.

Такой набор преимуществ сделал эту технологию за последние два года весьма популярной, и именно поэтому многие современные средства разработки, такие, как Delphi или С++Builder, позволяют создавать элементы управления ActiveX. Эти средства обычно имеют встроенные механизмы поддержки спецификации ActiveX с помощью автоматической генерации соответствующего кода. Спецификация ActiveX представляет собой набор правил (а именно описание стандартных интерфейсов), с помощью которых следует создавать такие элементы управления.

Delphi позволяет создавать элементы управления ActiveX на основе VCL-компонентов. В коде, связанном с реализацией ActiveX, находится описание этих свойств и методов. Далее следует сохранить и скомпилировать проект и зарегистрировать элемент ActiveX в реестре. Это делается с помощью выбора пункта меню Run/Register ActiveX Server. После этого мы помещаем наш ActiveX на форму и настраиваем его свойства, используя для этой цели окно "Свойства".

Важной частью технологии ActiveX являются активные формы. Активная форма - это элемент управления ActiveX, содержащий несколько VCL-компонентов. Возможность создания таких элементов управления позволяет существенно расширить круг доступных для элементов ActiveX функциональных возможностей. Создание такого ActiveX происходит примерно так же, как и создание обычного приложения. Разделение ActiveX на несколько файлов и выделение отдельных пакетов может быть использовано для того, чтобы уменьшить в целом время загрузки ActiveX. Новые компонентные архитектуры, нашедшие свое отражение в таких технологиях для среды Windows, как СОМ/DCOM, OLE, ActiveX, предлагают способы организации взаимодействия и диктуют требования к использующим их программам. Опирающиеся на стандарты компонентные технологии позволяют заменить сегодняшние уникальные решения стройной архитектурой взаимозаменяемых систем и устройств. Разработчики современных систем предусматривают возможность подключения к ним программных модулей OLE и ActiveX. Компонентная объектная модель Microsoft стала основой многих новых компонентных технологий. ЕстественноТрадиционно приложение состояло из отдельных файлов, модулей или классов, которые компилировались и компоновались вместе. Разработка приложений из компонентов происходит иначе. Единого целого больше нет. Модификация или расширение приложения сводится к замене одного из составляющих его компонентов новой версией.

Один из наиболее многообещающих аспектов компонентной архитектуры – быстрая разработка приложений. Из накапливаемого набора компонентов в библиотеках можно собирать, как из деталей конструктора, требуемые цельные приложения.

Распространение такого «сборочного» процесса началось с созданием управляющих элементов ActiveX.

Компонентная архитектура позволяет упростить процесс разработки распределенных приложений. Переработать обычное приложение в распределенное, безусловно, легче, если приложение это состоит из компонентов. Во-первых, оно уже разделено на функциональные части, которые можно расположить вдали друг от друга. Во-вторых, поскольку компоненты заменяемы, вместо некоторого компонента можно подставить другой, единственной задачей которого будет обеспечивать связь с удаленным компонентом. Так, если некоторый компонент А переносится с локальной машины на удаленную, то на локальной вместо него появляется переадресовщик, который перенаправляет по сети запросы к данному компоненту. При наличии подходящих переадресовщиков приложение может совершенно игнорировать фактическое местоположение своих частей.

Основным преимуществом использования компонентов является их способность подключаться к приложению и отключаться от него. Для этого они должны удовлетворять двум требованиям. Во-первых, они должны компоноваться динамически, во-вторых, должны скрывать (или инкапсулировать) детали своей реализации. Компонент, использующий другой компонент, называется клиентом. Клиент подключается к компоненту через интерфейс. Если компонент изменяется без изменения интерфейса, то изменений в клиенте не требуется. Аналогично, если клиент изменяется без изменения интерфейса, то нет необходимости изменять интерфейс. Чем надежнее интерфейс изолирован от реализации, тем менее вероятно, что он изменится при модификации клиента или компонента.

Как результат подобных требований на компоненты накладывается ряд важных ограничений:

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

  • Компоненты поставляются скомпилированными, скомпонованными и готовыми к использованию.

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

  • Компоненты должны быть перемещаемыми по сети. Клиент должен рассматривать удаленный компонент точно так же, как локальный.

  • COM – спецификация, указывающая, как создавать динамически взаимозаменяемые компоненты. COM определяет стандарт, которому должны следовать компоненты и клиенты, чтобы обеспечить совместную работу. Компоненты COM состоят из исполняемого кода, распространяемого в виде динамически компонуемых библиотек DLL или EXE-файлов Win32. Но сама по себе динамическая компоновка не обеспечивает компонентной архитектуры. Компоненты COM объявляют о своем присутствии стандартным способом. Используя схему объявлений COM, клиенты могут динамически находить нужные компоненты:

  • Интерфейс COM (то есть некоторая структура в памяти, содержащая массив указателей на функции) включает в себя набор функций, реализуемых компонентами и используемых клиентами.

  • OLE Automation (также называемый ActiveX Automation) позволяет приложениям выставлять объекты в другие приложения. OLE Automation делает возможным для объектов не только обмен данными и выполнение команд в другом объекте, но и определение элементов данных и команд в другом объекте.

  • OLE обеспечивает стандартный метод идентификации, отображения и использования объектов, который позволяет разработчикам без знания других приложений создавать объекты, которые могут быть использованы в тех же приложениях.

Многие системы поддерживают OLE технологию для встраивания OLE-объектов, разработанных третьими фирмами и, следовательно, расширяющими функциональные возможности систем, а также для интеграции компонентов пакета.

Так, программный продукт AutoCAD компании Autodesk поддерживает спецификацию OLE, начиная с версии R14. Система управления чертежом снабжена средствами управления, оформленными как сервер OLE Automation. В текущей реализации этот сервер использует СОМ, чтобы выставлять объекты для манипулирования данными. Управляющие приложения могут быть использованы как клиенты для сервера InTrack OLE Automation. Для этого в приложении-клиенте определяются ссылки на объекты сервера OLE Automation. Когда в приложении-клиенте изменяется свойство объекта, то сервер информируется об изменении состояния.

Недостатком этой технологии является ее низкая скорость, возможно это произошло из-за того, что OLE – первая система на основе COM, у нее сложилась репутация сложного, медленного и трудного для программирования аппарата. В OLE была сделана попытка реализовать все возможности без каких-либо ограничений. Вместо обеспечения ограниченной возможности связи между клиентом и компонентом, OLE определяет избыточную связь. Компонент может делать практически все и клиент должен быть к этому готов.

Существуют три основных понятия, определяющих интерфейс и возможности взаимодействия объектов ActiveX с контейнерами: это Properties (данные), Methods (функции) и Events (события) (рисунок 1). Каждый из этих интерфейсов доступен из ActiveX Automation.

Рисунок 1 - Структура объекта ActiveX

Объекты ActiveX предоставляют контейнеру возможность доступа к данным через свойства. Эти данные могут быть использованы приложением. Примером типичных свойств многих объектов являются используемые шрифты для отображения, параметры цвета, размеры объекта. Модификация таких данных приведет к изменению отображения объекта:

  • Methods – это функции, которые объект ActiveX представляет; они оперируют, в основном, на данных этого объекта. Функции являются другим типом интерфейса объекта ActiveX и используются контейнером для управления объектом.

  • Events — это методы, которые объект ActiveX использует, чтобы сообщить контейнеру о том, что произошло некоторое событие. Контейнер может затем информировать об этом пользователя или автоматически реагировать на возникшее событие.

Существует несколько путей, чтобы реализовать объект ActiveX. Такой объект играет роль сервера по отношению к контейнеру, являющемуся клиентом. Объекты ActiveX могут быть реализованы в двух основных формах: как встроенный в процесс (in-process) сервер и как сервер, исполняющийся в отдельном процессе (out-of-process). Этим двум формам соответствуют две реализации объектов ActiveX в виде динамических библиотек и в виде исполняемых модулей.

Объекты автоматизации можно просматривать через объектный проводник, который поставляется вместе с Delphi. Проводник позволяет видеть полный список объектов, доступных в приложении вместе со свойствами и методами.

Для просмотра библиотеки типов объектов Autocad необходимо выполнить следующие шаги:

  • из меню Component выбрать ActiveX control (рисунок 2);

Рисунок 2 - Меню доступных объектов ActiveX в Delphi 7

  • в диалоговом окне выбрать Autodesk Whip, или если же ее нет в списке доступных ссылок, значит неправильно установлен или вообще не установлен программный пакет Autocad;

  • в меню View выбрать Object Browser. Как показано на рисунке. Нажать кнопку Instal;

  • в диалоговом окне File выбрать open, указать файл acad_tlb.pas в каталоге Borland\Delphi\imports;

  • в меню View выбрать Code Explorer.. Как показано на рисунке (рисунок 3) левый столбец проводника содержит список объектов для выбранного приложения, в окне кода содержится описание объектов их свойства и методы, связанные с подсвеченным объектом.

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

Рисунок 3 - Объектный проводник в Delphi 7.

Объект Application, является объектом верхнего уровня. Все другие объекты могут быть достигнуты через методы и свойства объекта Application. Лучшим средством получения справки о иерархии объекта Application является стандартный Help файл AutoCAD. В меню Help Выбераем пункт Contents, а там раздел ActiveX Automation, подраздел ActiveX Automation Reference. Далее выбираем Object Model. Появляется схема, далее выбор любого элемента схемы влечет за собой появление справки с перечислением доступных методов и свойств для данного элемента.

Таким образом, технология ActiveX проста и удобна в освоении и позволяет полностью автоматизировать процесс работы. В AutoCAD2000 ActiveX Automation обеспечивает альтернативу AutoLISP и значительно ускоряется процесс разработки приложений.