Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Книги_AutoCad_2 / Настройка AutoCAD_Sham_Tickoo-Customizing_2006г

.pdf
Скачиваний:
182
Добавлен:
09.04.2015
Размер:
9.06 Mб
Скачать

Visual Basic для приложений

591

Объект документа

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

1.Свойство Count (Число), которое возвращает количество элементов, содержащихся в коллекции (количество чертежей, открытых во время одного сеанса).

2.Метод Add (Добавить), с помощью которого вы сможете создать объект-член (чертеж) и добавить его в соответствующую коллекцию.

3.Метод Close (Закрыть), который закрывает определенный чертеж или все открытые чертежи. Для обращения к объекту-члену можно использовать метод Items() из коллекции документов, определяя индексы объектов следующим образом:

Application.Documents.Item(1), где 1 — числовой индекс.

Обращаться к нужному чертежу можно также по имени объекта-члена, как показано в следующем примере:

Application.Documents.Item('объект'), где объект — имя объекта (имя файла). Чтобы открыть файл чертежа, можно воспользоваться следующей функцией: Documents.Open(имя_файла), где имя_файла — путевое имя данного объекта.

Чтобы сделать текущий рисунок активным, вызовите метод Activate() из объекта документа:

ThisDrawing.Application.Documents ("piston.dwg").Activate

где piston.dwg — имя файла рисунка, который вы хотите сделать активным.

При выполнении этого оператора чертеж piston.dwg станет активным документом и код Visual Basic сможет обратиться к этому чертежу через объект ThisDrawing. С иерархией объектов вы познакомитесь в следующем разделе.

Иерархия объектов

В программе AutoCAD любой элемент является объектом VBA. Иерархия объектов VBA значительно упрощает их использование.

Например, программа AutoCAD является объектом приложения. Кроме этого, к числу объектов относится чертеж, а также пространство модели и чертежного листа. Для определения объекта, находящегося на чертеже, необходимо:

1)определить приложение;

2)определить чертеж;

3)определить объект на чертеже.

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

Application.ActiveDocument.ModelSpace.AddArc(Start, End, Angle)

Чтобы упростить эту запись, вместо Application.ActiveDocument можно подставить выражение ThisDrawing. При этом ранее приведенный код будет выглядеть следующим образом:

ThisDrawing.ModelSpace.AddArc(Start, End, Angle)

592Глава 17

Кобъектам относятся чертежи или документы, геометрические элементы, такие как линии или окружности, элементы пользовательского интерфейса, используемые для ввода и вывода данных, требуемых для выполнения макроса или программы. К “визуальной” части Visual Basic относятся хорошо знакомые элементы управления пользовательского интерфейса (флаговые кнопки, полосы прокрутки и командные кнопки), используемые для открытия или сохранения файлов в приложениях Windows. Элементы подобного рода представляют собой экранные объекты, которые вы можете перетащить из панели инструментов Toolbox на фоновый объект, называемый пользовательской формой. Примером подобной формы является фоновая часть диалогового окна. При перетаскивании элемента управления из панели инструментов Toolbox на форму, программный код, обеспечивающий выполнение функций указанного элемента, автоматически вводится в объект-форму. Следует заметить, что некоторые положения, используемые в языках объектно-ориентированного программирования (OOP — Object-Oriented Programming), к которым относится, например, С++, отсутствуют в Visual Basic. Это связано с тем, что Visual Basic — в большей степени объектный, чем объектно-ориентированный язык. Отсутствующие аспекты не влияют ни на инструментальные средства, ни на среду разработки, доступные для пользователей.

Функции (или методы) определены в библиотеке объектов AutoCAD для выполнения тех или иных операций с объектами чертежа, например, для построения линии на чертеже. Так, метод AddLine используется для создания линейного объекта. Под свойствами объекта понимаются функции, которые устанавливают или возвращают данные, определяющие его состояние. Например, основными свойствами объекта Line, которые могут использоваться при построении отрезка на чертеже, являются Color (Цвет), Layer (Слой), Linetype (Тип линии) и Start X (Начальная точка).

Метод Add

В основе построения фигуры в блоке, пространстве листа или модели лежит использование метода Add, вариантами которого являются AddCircle, AddLine и AddText. Не рассматривайте черчение как способ построения элементов в модельном пространстве текущего чертежа, а подойдите к нему как к процессу добавления геометрической фигуры. Чтобы объяснить, на какой объект действует тот или иной метод, следует прибегнуть к системе точечных обозначений. В этой системе создается ссылка, которая начинается с определения наиболее глобального объекта, а заканчивается определением объекта, на который будет оказано непосредственное воздействие. Использование системы точечных обозначений практически ничем не отличается от использования свойств объектов.

Построение окружности с помощью метода AddCircle

Для использования метода AddCircle необходимо предварительно определить центральную точку и радиус окружности. Оба этих параметра являются обязательными. В AutoCAD существуют также другие методы построения окружностей, отличающиеся способом ввода необходимых данных, например, построение окружности по трем точкам, по двум точкам, по двум касательным и радиусу. Для использования этих методов необходима дополнительная программа на языке VBA, обеспечивающая вычисление координат центральной точки и радиуса окружности, требуемых для метода AddCircle.

Visual Basic для приложений

593

Метод AddCircle имеет следующий формат:

ThisDrawing.ModelSpace.AddCircle центр, радиус

или

Set Circle1 = ThisDrawing.ModelSpace.AddCircle(центр, радиус)

где

центр — центральная точка, вектор удвоенной точности;

радиус — радиус окружности, число удвоенной точности.

Примеры

ThisDrawing.ModelSpace.AddCircle(cnt1,10)

При выполнении этого кода будет построена окружность с центром в точке cnt1 и радиусом 10. Точка cnt1 предварительно определена в данной программе.

ThisDrawing.ModelSpace.AddCircle(0,1,3, 8)

Этот код позволит вам начертить окружность с центром в точке с координатами (0,1,3) и радиусом 8.

Примечание

Впервом примере аргументы, используемые в методе AddCircle, отделены от названия функции обязательным пробелом. Синтаксис метода добавления, показанный во втором примере (где аргументы находятся в круглых скобках), применяется в том случае, когда объекту “окружность” присваивается имя, необходимое для последующего использования в программе. В следующих примерах point1 и point2 представляют собой предопределенные точки, определяемые вектором универсального типа/двойной точности или значениями координат двойной точности. Определение этих точек выполняется с помощью операторов присваивания, как показано в примере 1 на стр. 19.

Вязыке Basic знак фунта (#) указывает на число двойной точности. Число двойной точности с плавающей запятой представляет собой положительное число в пределах от 4,94065645841247E-324 до 1,79769313486232E308 и отрицательное число в пределах от –1,79769313486232E308 до –4,94065645841247E-324.

Примеры

ThisDrawing.ModelSpace.AddCircle point1, 3#

Set Circle2 = ThisDrawing.ModelSpace.AddCircle(point2, 4#)

Построение отрезка с помощью метода AddLine

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

ThisDrawing.ModelSpace.AddLine точка1, точка2

где

точка1 — первая точка, вектор двойной точности;

точка2 — вторая точка, вектор двойной точности.

Примеры

ThisDrawing.ModelSpace.AddLine(x1,x2)

Выполнение этого кода приведет к построению отрезка, соединяющего точки x1 и x2 (x1 и x2 — точки, ранее определенные в данной программе).

594 Глава 17

ThisDrawing.ModelSpace.AddLine(0,1,1, 5,8,0)

Этот код обеспечивает вычерчивание линии, соединяющей точки с координатами (0,1,1) и (5,8,0).

Примечание

Вторая форма метода Add, в которой аргументы находятся в круглых скобках, применяется для метода AddLine (или какого-нибудь другого метода Add) в том случае, когда объекту присваивается имя, предназначенное для дальнейшего использования в данной программе. Это усложняет использование метода Add, так как определяемый объект должен быть объявлен в операторе Dim в объявлении General.

Примеры

ThisDrawing.ModelSpace.AddLine point1, point2

Set Line = ThisDrawing.ModelSpace.AddLine(point1, point2)

Построение дуги с помощью метода AddArc

Метод AddArc имеет следующий формат:

ThisDrawing.ModelSpace.AddArc центр, радиус, нач_угол, кон_угол

где

центр — центральная точка, вектор двойной точности;

радиус — радиус, число двойной точности;

нач_угол — начальный угол дуги, выраженный в радианах; число двойной точности;

кон_угол — конечный угол дуги, выраженный в радианах; число двойной точности.

Примеры

ThisDrawing.ModelSpace.AddArc point1, 4#, 0#, 1.570796327

ThisDrawing.ModelSpace.AddArc(cnt1, rad, ang1, ang2)

При выполнении этого кода будет построена дуга с центром в точке cnt1 и радиусом rad. Начальный угол этой дуги будет равен ang1, а конечный — ang2. Все указанные параметры должны быть предварительно определены в данной программе.

ThisDrawing.ModelSpace.AddArc(0,0,0, 8, 3.4, 1.453)

Создание надписи с помощью метода AddText

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

ThisDrawing.ModelSpace.AddText текстовая_строка, точка1, высота_текста

где

текстовая_строка — текст, который вы хотите отобразить на чертеже;

точка1 — точка вставки, вектор двойной точности;

высота_текста — высота текста, положительное число двойной точности.

Пример

ThisDrawing.ModelSpace.AddText ".063 TYP, 4 Places", point1, 0.25#

Visual Basic для приложений

595

Получение справки по методам и свойствам

Интегрированная среда разработки (IDE) содержит систему справочной информации, в которой имеется множество примеров, иллюстрирующих применение AddLine, AddCircle и других методов и свойств, требуемых для написания параметрической программы. Для получения необходимой справочной информации откройте редактор Visual Basic, а затем выберите команду Help Microsoft Visual Basic Help.

Программа AutoCAD 2004 позволяет также получить общую информацию по применению различных методов или зарезервированных слов Visual Basic, а также познакомиться с примерами программирования на языке VBA, не имеющего непосредственного отношения к AutoCAD, а взятыми из Excel, Word или PowerPoint. Для этого выберите команду AutoCAD 2004 Developer Help из выпадающего меню Help. На рис. 17.7 показана начальная страница справочной системы с выделенным разделом “ActiveX and VBA Developer’s Guide”.

Рис. 17.7. Страница ActiveX and VBA Developer’s Guide

Для получения необходимой информации можно также использовать справочную систему графического редактора AutoCAD или интегрированной среды разработки Visual Basic Editor. Взгляните, например, на страницу раздела, посвященного VBA и ActiveX Automation. В верхней части страницы расположены ярлычки вкладок Index (Указатель) и Search (Поиск), с помощью которых вы сможете быстро найти нужную

596

Глава 17

информацию. Интегрированная среда разработки VBA обеспечивает еще один способ получения справочной информации, который состоит в использовании диалогового окна Object Browser. Для этого откройте окно редактора Visual Basic и выберите команду View Object Browser. Из раскрывающегося списка выберите опцию AutoCAD, а из окна, расположенного в левой части окна просмотра, выберите объект AcadModelSpace, как показано на рис. 17.8. Щелкнув на кнопке с вопросительным знаком или нажав клавишу <F1>, вы откроете окно ModelSpace Collection, из которого сможете перейти к разделу справочной системы, посвященному тем или иным методам и свойствам и содержащему соответствующие примеры.

Рис. 17.8. Диалоговое окно Object Browser

Сохранение и загрузка проектов VBA

Чтобы запустить или загрузить проект VBA в графическом редакторе AutoCAD, выберите команду Tools Macro Visual Basic Editor (Сервис Макрос Редактор Visual Basic), как показано на рис. 17.9.

Выполнив эту команду, вы перейдете в интегрированную среду разработки (IDE — Integrated Development Environment), состоящую из множества окон, которые могут настраиваться в соответствии с вашими потребностями. С окнами IDE вы познакомились в начале этой главы.

Не забывайте сохранять программы VBA перед их тестированием. Чтобы сохранить проект в интегрированной среде разработки, выберите команду Save (Сохранить) из меню File (Файл). Для получения быстрого доступа к командам меню можно использовать сочетание клавиши <Alt> и буквенной клавиши, которая соответствует подчеркнутой букве, имеющейся в названии элемента меню. В программе AutoCAD проекты VBA имеют файловое расширение .dvb.

Visual Basic для приложений

597

Рис. 17.9. Запуск Visual Basic Editor с помощью меню Tools (Сервис)

Пример 1

Напишите программу, которая построит окружность с центром в точке (5,5,0) и радиусом 2 (рис. 17.10). Интерфейсная форма пользователя показана на рис. 17.11.

Рис. 17.10. Окружность для примера 1

Рис. 17.11. Форма поль-

зователя

Рис. 17.12. Панель инструментов Toolbox, используемая при создании формы пользователя

598Глава 17

1.Запустите программу AutoCAD и откройте новый файл, выбрав режим Start from Scratch (Простейший шаблон) и установив английские единицы измерения (футы и дюймы).

2.Выберите команду Tools Macro Visual Basic Editor (Сервис Макрос Редактор Visual Basic).

3.Выберите команду Insert Module (Вставка Модуль). Если текстовый редактор закрывает весь экран, попробуйте его уменьшить, щелкнув на кнопке Restore Window (Восстановить окно), которая находится в правом верхнем углу.

4.Создайте форму пользователя, выбрав в строке меню команду Insert UserForm (Вставка Форма). Введенным элементам по умолчанию присваиваются имена Module1 и UserForm1.

5.Активизируйте введенную форму, щелкнув на ней мышью. Чтобы ввести в форму элементы управления, например, командную кнопку, выберите соответствующую кнопку на панели инструментов Toolbox. Как показано на рис. 17.12, нужный элемент управления

находится во втором ряду (второй слева).

6. Теперь измените размеры элементов UserForm и CommandButton и отредактируйте надпись на кноп-

ке. Для этого можно использовать окно Properties (Свойства), которое находится в левом нижнем углу экрана. На кнопке должна быть надпись “Draw Circle”, а форма пользователя должна иметь заголовок “First Circle”.

Формы, элементы управления, модули и соответствующий программный код, написанный на языке Visual Basic, называются проектом. Для завершения проекта необходимо написать код, обеспечивающий выполнение функций, назначенных элементам управления. Например, чтобы обеспечить работоспособность командной кнопки, дважды щелкните на указанном элементе и введите в открывшееся окно код события CommandButton1_Click(). Не забывайте, что Visual Basic — язык событийно-управляе- мого программирования. При выборе командной кнопки выполняется код, содержащийся в строках 1–17 приведенного листинга.

Далее представлен листинг программы Visual Basic, написанной для примера 1. Введите этот код между первой и последней строками подпрограммы (точка вставки обозначена мерцающим курсором). Строка под номером 4 создается в окне кода по умолчанию, поэтому вводить ее еще раз нет никакой необходимости. Номера строк, рас-

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

Код командной кнопки

'Код формы UserForm1 для построения окружности с радиусом 2

1

'и центром в точке (5,5,0). Запуск программы выполняется

2

'щелчком мыши на командной кнопке, обозначенной Draw Circle

3

Private Sub CommandButton1_Click()

4

Dim CenterPoint(0 To 2) As Double

5

Dim Radius As Double

6

'Данные

7

8

CenterPoint(0) = 5

9

CenterPoint(1) = 5

10

Visual Basic для приложений

599

CenterPoint(2) = 0

11

Radius = 2

12

'Вызов объекта автоматизации OLE

13

14

ThisDrawing.ModelSpace.AddCircle CenterPoint, Radius

15

Unload Me

16

End Sub

17

Пояснения

Строки 1–3

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

Строка 4

Private Sub CommandButton1_Click()

С этой строки начинается подпрограмма Sub CommandButton1_Click(), выполняемая при выборе кнопки CommandButton1. Эта подпрограмма содержит код, обеспечивающий построение окружности при выборе командной кнопки. Нет никакой необходимости вводить эту строку с клавиатуры, так как при добавлении элемента управления редактор VBA автоматически генерирует соответствующие строки.

Строки 5 и 6

Dim CenterPoint(0 To 2) As Double

Dim Radius As Double

Эти строки определяют тип переменных, которые используются методом AddCircle.

Строки 9–12

CenterPoint(0) = 5

CenterPoint(1) = 5

CenterPoint(2) = 0

Radius = 2

В рассматриваемом примере центр окружности и ее радиус являются заданными значениями. Положение центра окружности определяется координатами X, Y и Z.

Строка 15

ThisDrawing.ModelSpace.AddCircle CenterPoint, Radius

Эта строка применяет метод AddCircle к объекту ModelSpace, который является частью объекта ThisDrawing. Обратите внимание на пробел, отделяющий ключевое слово AddCircle от первого аргумента (CenterPoint).

Примечание

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

600 Глава 17

Строка 16

Unload Me

Этот метод обеспечивает удаление формы UserForm1 из памяти и перемещение фокуса обратно в AutoCAD.

Строка 17

End Sub

Эта строка, так же как и строка 4, генерируется автоматически.

Код Module1

Следующий код введен в окно Module1.

'Общее объявление модуля Module1

1

Sub DrawCircle()

2

UserForm1.Show

3

End Sub

4

Пояснения

Строки 2–4

Sub DrawCircle()

UserForm1.Show

End Sub

Эта функция присваивает макросу имя DrawCircle, которое отображается в текстовом окне Macro name (Имя макроса) диалогового окна Macros (Макрос). Чтобы открыть это диалоговое окно, выберите команду Macro Macros (Макрос Макросы) из меню Tools (Сервис). Эти четыре строки программного кода принадлежат объекту Module1. Для запуска проекта перейдите в окно редактора Visual Basic и выберите команду Run Sub/UserForm из меню Run.

Чтобы выполнить написанную программу, щелкните на кнопке Run Sub/UserForm, которая находится на панели инструментов Standard.

Получение данных, введенных пользователем

Успешное выполнение программы зависит от входных данных, введенных конечным пользователем. Для этой цели в языке VBA существует несколько методов Get, которые могут использоваться в программе для получения исходных данных.

Метод GetPoint

Метод GetPoint позволяет ввести координаты X и Y или X, Y и Z, определяющие положение точки. Координаты точки вводятся пользователем с клавиатуры или определяются с помощью координатно-указательного устройства. При вводе координат на экране появляется линия, проходящая от уже существующей точки до точки, определяющей текущее положение курсора.

Метод GetPoint имеет следующий формат:

P = ThisDrawing.Utility.GetPoint([точка], [подсказка])

Соседние файлы в папке Книги_AutoCad_2