У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


словами, події в системі виникають в результаті дій користувача, даної або іншої програми або дій самої операційної системи. На кожну можливу і цікавить нас подію в програмі повинен бути описаний відповідний відгук, інакше програма не зможе відреагувати на дану подію і воно залишається безмовним. В цілому суть програмування на мові VBA полягає в створенні коду програм (методів), які генерують необхідні відгуки на події, що цікавлять нас.

6.3 Редактор Visual Basic

Редактор VBA використовується для створення нових модулів, редагування вже створених модулів, створення і редагування коду макроса, створенню вікон користувача і для рішення багатьох інших задач, які відносяться до написання і обслуговування програм на VBA. Таким чином, щоб подивитися модулі чи код, який вони містять необхідно запустити редактор VBA.

Запустити редактор VBA в більшості підтримуючих дану мову програмування додатків можна кліканням на кнопці редактор Visual Basic(Visual Basic Editor) або вибором команди меню Tools->Macro-> Visual Basic Editor, або натисканням клавіш Allt+F11.

Рис. 2 Загальний вигляд редактора VBA

6 Розробка програми

Для спрощення розробки програми на VBA обєєкт поділемо на елементорні частини. Кожна частина обєєкту будується у окремій процедурі програми. Пізніше звертаючись до цих процедур побудуємо логічні блоки фігури (частини), і кожен із них помістимо у окремий слой згідно завдання.

Для побудови першої частини заданого обєєкта я розділив його на пєять кубів – один основний, а решта додаткові і чотири додоткові циліндри з метою щоб ці додаткові обєєкти відняти від основного і одержати необхідну фігуру.

Оголошення будь-якого тривимірного обєєкту для побудови його у AutoCAD здійснюється наступним чином: Dim <назва обєєкта> As Acad3DSolid.

Щоб побудувати обєєкт використовуємо команду Set. Наприклад для побудови циліндра запишемо такий код програми:

Set cylinderObj = ThisDrawing.ModelSpace.AddCylinder(center, radius, height)

Процедура побудови куба має наступний вигляд:

Sub AddBox2()

Dim length As Double, width As Double, height As Double

Dim center(0 To 2) As Double

center(0) = 17.5: center(1) = 17.5: center(2) = -13.5

length = 15#: width = 15: height = 15#

Set box2Obj = ThisDrawing.ModelSpace.AddBox(center, length, width, height)

End Sub

Команду повороту Rotate3D здійснюємо наступним чином:

Sub AddCylinderRotate()

Dim radius As Double

Dim center(0 To 2) As Double

Dim height As Double

center(0) = -13.5: center(1) = 17.5: center(2) = 0#

radius = 3# height = 50#

Set cylinderObj = ThisDrawing.ModelSpace.AddCylinder(center, radius, height)

Dim rotatePt1(0 To 2) As Double

Dim rotatePt2(0 To 2) As Double

Dim rotateAngle As Double

Dim rotateAngl As Double

rotatePt1(0) = 0: rotatePt1(1) = 4: rotatePt1(2) = 0

rotatePt2(0) = 0: rotatePt2(1) = 0: rotatePt2(2) = 0

rotateAngle = 90: rotateAngl = -90: rotateAng = 180:

rotateAngle = rotateAngle * 3.141592 / 180#

rotateAngl = rotateAngl * 3.141592 / 180#

rotateAng = rotateAng * 3.141592 / 180#

cylinderObj.Rotate3D rotatePt1, rotatePt2, rotateAngle

End Sub

Для віднімання двох обєєктів використаємо команду Subtract. Дана команда програмується наступним чином:

boxObj.Boolean acSubtraction, box2Obj

де boxObj – основний обєєкт, який і буде результатом віднімання, а box2Obj додатковий. Операцію віднімання основного проводимо і з рештою додаткових частин проводимо так само.

Врезультаті провединих операцій отримаємо частину зображену на рис.3.

Рис. 3 Перша частина побудованого обєєкту.

Створюємо окремий слой для нашого побудованого обєєкту:

Dim Blok1_Layer As AcadLayer

Set Blok1_Layer = ThisDrawing.Layers.Add("Blok1")

Зодоємо колір слою:

Dim color As AcadAcCmColor

Set color = AcadApplication.GetInterfaceObject("AutoCAD.AcCmColor.16")

color.ColorIndex = 160

Blok1_Layer.TrueColor = color

Будуємо наступну частину обєєкту. Для її побудови є кілька варіанті, але я обрав на мою думку оптимальний із них.

Для цього потрібно використати команду “витягування” обєєкта, тобто будуємо в площині замкнуту основу за допомогою curves, які обєєднюємо у регіон(команда regionObj = ThisDrawing.ModelSpace.AddRegion(curves)), а потім командою ExtrudedSolid отримаємо потрібний тривимірний обєєкт рис.4:

Dim regionObj As Variant

regionObj = ThisDrawing.ModelSpace.AddRegion(curves)

Dim height As Double

Dim taperAngle As Double

height = 16

taperAngle = 0

Set Part3 = ThisDrawing.ModelSpace.AddExtrudedSolid(regionObj(0), height, taperAngle)

Рис.4 Побудований обєєкт командою ExtrudedSolid

Наступну частинку будуємо шляхом прокручування основи відносно заданої осі командою RevolvedSolid рис.5:

Dim axisPt(0 To 2) As Double

Dim axisDir(0 To 2) As Double

Dim angle As Double

axisPt(0) = 0: axisPt(1) = -1: axisPt(2) = 0

axisDir(0) = 0: axisDir(1) = 0: axisDir(2) = 1

angle = 6.3

Set Part5 = ThisDrawing.ModelSpace.AddRevolvedSolid(regionObj(0), axisPt, axisDir, angle)

Рис.5 Побудований обєєкт командою RevolvedSolid

Висновок

В даній курсовій роботі розроблено програму на Visual Basic for AutoCAD побудови тривимірної моделі у AutoCAD 2004 згідно завдання.

Проведено огляд існуючих програмних продуктів графічного моделювання. Зроблено опис основних принципів роботи AutoCAD 2004. Фігуру побудовану у тривимірному просторі візуалізовано засобами рендерингу PhotoTrace шайдером.

Перелік посилань на джерела

1. Погорелов В. AutoCAD 2005 для начинающих. – Санкт-Петербург: БВХ-Петербург, 2004. – 400с.

2. Полещук Н. Н., Савельева В. А. Самоучитель AutoCAD 2005. – Санкт-Петербург.: БХВ-Петербург, 2004. – 656 с.

3. Соколова Т. AutoCAD 2005 для студента. – Санкт-Петербург: Питер, 2005. – 320 с.

4. Слепцова Л. Д. Программирование на VBA. Самоучитель.: - М.: Издательский дом “Вильямс”, 2004. – 384 с.

5. Ткачев Д. А. AutoCAD 2005. Самоучитель. – Санкт-Петербург; Питер; Киев: Издательськая группа ВНV, 2005. – 462 с.

6. .

7. .

8. .

9. http://www.solid-edge.com.

10. http://www.render.ru.

Додаток В Текст програми

Dim boxObj As Acad3DSolid

Dim cylinderObj As Acad3DSolid

Dim Part As Acad3DSolid

Dim Part1 As Acad3DSolid

Dim Part2 As Acad3DSolid

Sub AddSliceBox()

' This code creates a box in model space.

Dim length As Double, width As Double, height As Double

Dim center(0 To 2) As Double

' Define the box

center(0) = 0#: center(1) = 0#: center(2) = 0#

length = 50#: width = 50: height = 80#

' Create the box (3DSolid) object in model space

Set boxObj = ThisDrawing.ModelSpace.AddBox(center, length, width, height)

' визначення секції

Dim slicePt1(0 To 2) As Double

Dim slicePt2(0 To 2) As


Сторінки: 1 2 3 4 5 6 7 8