Использование UserForm в VBA (AutoCAD)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Использование UserForm в VBA (AutoCAD)

Использование UserForm в VBA (AutoCAD)

Ответ
Поиск в этой теме
Непрочитано 10.03.2010, 21:49 #1
Использование UserForm в VBA (AutoCAD)
Markiza-2010
 
Студентка
 
Регистрация: 09.03.2010
Сообщений: 16

Уважаемые форумчане, здравствуйте! Буду очень признательна, если Вы поможете найти ответ на следующий вопрос. Что мне нужно записать в программе, чтобы выполнялось]построение объектов , а UserForm не исчезала с экрана и была возможность вводить в неё следующие данные? И чтобы при вводе другого, например, угла поворота или расстояния, объект просто менял своё положение, а не появлялся ещё один под другим углом (в другом положении)?

'Программа для CommandButton
Dim cylinderObj4 As Acad3DSolid
Dim radius4 As Double
Dim center4(0 To 2) As Double
Dim height4 As Double

Dim cylinderObj5 As Acad3DSolid
Dim radius5 As Double
Dim center5(0 To 2) As Double
Dim height5 As Double
Dim k As Double

Dim pt1(0 To 2) As Double
Dim pt2(0 To 2) As Double

Dim Ans1 As Variant
Dim Ans2 As Variant

Dim RotateAngle As Double
Dim a As Double

Public Sub CommandButton1_Click()
a = CDbl(UserForm1.TextBox1.Text) 'Угол поворота, вводимый в UserForm
k = CDbl(UserForm1.TextBox2.Text) ' Расстояние, на которое выдвигается внутренний цилиндр из внешнего (вводится в UserForm)

RotateAngle = a * 3.141592 / 180
Ans2 = Rotation(RotateAngle) 'поворот цилиндров на заданный угол
RotateAngle = RotateAngle - a ' возврат в исх. точку
UserForm1.Hide
End Sub

Public Function Create()
'Построение внешнего цилиндра
center4(0) = 0: center4(1) = 0: center4(2) = 45
radius4 = 5
height4 = 35
Set cylinderObj4 = ThisDrawing.ModelSpace.AddCylinder(center4, radius4, height4)

'Построение внутреннего цилиндра
center5(0) = 0: center5(1) = 0: center5(2) = 45 + k
radius5 = 3.5
height5 = 35
Set cylinderObj5 = ThisDrawing.ModelSpace.AddCylinder(center5, radius5, height5)
'точки для оси поворота
pt1(0) = 0: pt1(1) = 7: pt1(2) = 30
pt2(0) = 0: pt2(1) = 5: pt2(2) = 30
End Function

Public Function Rotation(RotateAngle)
cylinderObj4.Rotate3D pt1, pt2, RotateAngle
cylinderObj5.Rotate3D pt1, pt2, RotateAngle
End Function


'Программный модуль
Option Explicit
Dim Ans1 As Integer
Sub Forma1()
Ans1 = UserForm1.Create()
UserForm1.Show
End Sub

Последний раз редактировалось Markiza-2010, 11.03.2010 в 20:00.
Просмотров: 4030
 
Непрочитано 11.03.2010, 00:23
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Афтар, ошипок, многа, непонятно
Вместо ... UserForm1.Show ... ... UserForm1.Show vbModeless ...
gomer вне форума  
 
Автор темы   Непрочитано 11.03.2010, 17:53
#3
Markiza-2010

Студентка
 
Регистрация: 09.03.2010
Сообщений: 16


А как сделать так, чтобы объект менял своё положение при вводе других данных, а не появлялся ещё один под другим углом?
Код:
[Выделить все]
Sub Manipulyator()
Dim cylinderObj4 As Acad3DSolid
Dim radius4 As Double
Dim center4(0 To 2) As Double
Dim height4 As Double
center4(0) = 0: center4(1) = 0: center4(2) = 45
radius4 = 5
height4 = 35
Set cylinderObj4 = ThisDrawing.ModelSpace.AddCylinder(center4, radius4, height4) 'построение внешнего цилиндра
Dim cylinderObj5 As Acad3DSolid
Dim radius5 As Double
Dim center5(0 To 2) As Double
Dim height5 As Double
Dim k As Double
k = InputBox("Введите расстояние", "Ввод данных", " ") ' к - расстояние, на которое внутренний цилиндр выдвигается из внешнего
center5(0) = 0: center5(1) = 0: center5(2) = 45 + k
radius5 = 3.5
height5 = 35
Set cylinderObj5 = ThisDrawing.ModelSpace.AddCylinder(center5, radius5, height5) 'построение внутреннего цилиндра
 
' поворот объектов на необходимый угол
 
Dim pt1(0 To 2) As Double
Dim pt2(0 To 2) As Double
pt1(0) = 0: pt1(1) = 7: pt1(2) = 30
pt2(0) = 0: pt2(1) = 5: pt2(2) = 30
Dim A As Double
Dim rotateAngle As Double
A = InputBox("Введите угол", "Ввод данных", "")
rotateAngle = A * 3.141592 / 180
cylinderObj4.Rotate3D pt1, pt2, rotateAngle
cylinderObj5.Rotate3D pt1, pt2, rotateAngle
rotateAngle = rotateAngle - A
End Sub

Последний раз редактировалось Markiza-2010, 12.03.2010 в 00:26.
Markiza-2010 вне форума  
 
Непрочитано 11.03.2010, 23:44
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Тэг code придуман для кого?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Использование UserForm в VBA (AutoCAD)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
книги по VBA AutoCAD DY Программирование 30 15.02.2013 16:16
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
Использование в AutoCad 3d модели созданной в AutoCad Архитектор faust23 AutoCAD 25 16.10.2008 00:53
AutoCAD LT 2005 и VBA Macros Vidas Программирование 10 03.05.2005 11:00