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

Листинг 2. Текст головной программы

Public Sub Ncircles()

Radius = 10.5 'начальное значение радиуса

NumCir = 2 'начальное значение количества

UserForm1.Show

If NumCir > 0 Then DrawCircles

End Sub

В программе задаются начальные значения для переменных Radius и NumCir. Сим­вол апострофа означает, что дальше в строке идет комментарий. Оператор UserForm1.Show вызывает на экран диалоговое окно формы с именем UserForm1 (это имя получает первая форма проекта по умолчанию; при желании можно имя изменить).

По результатам работы диалогового окна должно формироваться значение NumCir. Если NumCir равно нулю, то в диалоговом окне была нажата кнопка Cancel (Отмена). Если значение NumCir положительно, следует перейти к рисованию окружностей с помощью подпрограммы.

К модулю Module1 необходимо добавить текст подпрограммы DrawCircles, приве­денной в листинге 3.

Листинг 3. Текст подпрограммы DrawCircles

Public Sub DrawCircles()

Dim i As Integer

Dim cpoint As Variant

Dim circleObj As AcadCircle

'выбор точки центра

cpoint = ThisDrawing.Utility.GetPoint(, "точка центра:")

For i = 1 To NumCir

'построение окружностей

Set circleObj = ThisDrawing.ModelSpace.AddCircle(cPoint, i * Radius)

Next i

End Sub

В этой подпрограмме описаны три локальные переменные. Целая переменная i используется как счетчик цикла по числу окружностей, переменная cPoint типа Variant — для координат точки центра окружности, а переменная CircleObj типа AcadCircle — для примитива окружности.

Точку центра концентрических окружностей программа должна запросить интерак­тивно (текст запроса — Точка центра:). Для этого используется метод GetPoint, при­меняемый к объекту Utility активного документа (ThisDrawing). Введенная точка сохраняется в переменной cPoint.

Затем в цикле, границами которого являются операторы For и Next, с переменной цикла i строятся окружности с центром в точке cPoint и радиусом i*Radius. Ис­пользуется метод AddCircle, который добавляет новую окружность к пространству модели (ModelSpace).

Добавление программного кода работы с формой

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

В левом раскрывающемся списке над окном ввода кода выберите элемент UserForm, а в правом — событие Initialize. В окне кода должны появиться строки Private Sub userForm_Initialize() и End Sub. Между ними следует вставить операторы на­чальных значений полей диалогового окна. Аналогичным образом надо запрограм­мировать действия, которые должна выполнить система при нажатии на кнопку Да (имя ее элемента — CommandButton1) и на кнопку Отмена (Cancel) (имя элемента — CommandButton2). Нажатию на кнопку соответствует событие Click. Текст программ­ного кода приведен в листинге 4.

Листинг 4. Программный код работы с формой

Private Sub CommandButton1_Click()

'кнопка "Да"

NumCir = CInt(TextBox1.Text)

Radius = CDbl(TextBox2.Text)

Unload Me

End Sub

Private Sub CommandButton2_Click()

'кнопка "Отмена"

NumCir = 0

Unload Me

End Sub

Private Sub UserForm_Initialize()

'Инициализация формы

TextBox2.Text = CStr(Radius)

TextBox1.Text = CStr(NumCir)

End Sub

Оператор Unload Me закрывает диалоговое окно при нажатии на обе кнопки. Значе­ния полей TextBoxl и TextBox2 переносятся в переменные NumCir и Radius.

Теперь осталось сохранить проект в файле с расширением dvb с помощью кнопки и выполнить макрос Ncircles либо с помощью кнопки, либо с помощью команды AutoCAD VBARUN. Результат работы программы приведен на рис. 7.

Рис.7. Результат выполнения макроса Ncircles