| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Многократный ввод данных и изменение положения объектов

VBA. Многократный ввод данных и изменение положения объектов

Ответ
Поиск в этой теме
Непрочитано 12.03.2010, 00:45 #1
VBA. Многократный ввод данных и изменение положения объектов
Markiza-2010
 
Студентка
 
Регистрация: 09.03.2010
Сообщений: 16

Здравствуйте! Помогите, пожалуйста, исправить код программы (VBA, AutoCAD). Мне нужно, чтобы при вводе необходимых мне данных менялось положение объектов! У меня же просто добавляется ещё один такой же объект, но под другим углом!

Код:
[Выделить все]
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

Последний раз редактировалось Кулик Алексей aka kpblc, 12.03.2010 в 00:57.
Просмотров: 5006
 
Непрочитано 12.03.2010, 00:57
#2
Кулик Алексей aka kpblc
Moderator

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


Напоминаю про тэг code
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.03.2010, 00:44
#3
Markiza-2010

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


Алексей, я новичок на форуме, поэтому позволю себе спросить, что такое Тэг code? :-)
Markiza-2010 вне форума  
 
Непрочитано 13.03.2010, 19:46
#4
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,685


Цитата:
Сообщение от Markiza-2010 Посмотреть сообщение
Алексей, я новичок на форуме, поэтому позволю себе спросить, что такое Тэг code? :-)
BB коды..

А по поводу непосредственно вопроса, Markiza-2010, - ты в VBA и в Autocad насколько хорошо разбираешься? В VBA, похоже, не очень.. В коде же есть подсказки:
Код:
[Выделить все]
Set cylinderObj4 = ThisDrawing.ModelSpace.AddCylinder(center4, radius4, height4)'построение внешнего цилиндра
...
Set cylinderObj5 = ThisDrawing.ModelSpace.AddCylinder(center5, radius5, height5)'построение внутреннего цилиндра
То есть при каждом исполнении кода Sub Manipulyator будут создаваться в пространстве модели новые объекты - цилиндры. Которые затем поворачиваются с помощью
Код:
[Выделить все]
cylinderObj4.Rotate3D pt1, pt2, rotateAngle
cylinderObj5.Rotate3D pt1, pt2, rotateAngle
на угол, введенный пользователем
Код:
[Выделить все]
A = InputBox("Введите угол", "Ввод данных", "")
rotateAngle = A * 3.141592 / 180
Что бы поворачивались уже созданные объекты, надо сначала их "передать" в переменную, выбором пользователя, к примеру (- или иначе, не знаю, что вообще за задачи у данной проги)
Код:
[Выделить все]
ThisDrawing.Utility.GetEntity obj, varPnt1, "Укажите объект"
С последующей проверкой, тот ли объект выбран. Повернуть на заданный угол будет несколько сложнее, т.к. изначально угол будет не обязательно нулевой, и надо его будет как-то определять..
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!

Последний раз редактировалось AlexV, 13.03.2010 в 20:02.
AlexV вне форума  
 
Непрочитано 27.06.2010, 23:27
#5
IrinaO


 
Регистрация: 27.05.2009
Сообщений: 36


А макрос в АutoCad 2008 создать сложно? И вообще возможно? В Ехеле это элементарно: записываешь сделанное аккуратно один раз, чуть-чуть причесать и готово. А в Аutocade?
IrinaO вне форума  
 
Непрочитано 28.06.2010, 00:22
1 | #6
Кулик Алексей aka kpblc
Moderator

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


http://forum.dwg.ru/showthread.php?p=530813
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.06.2010, 02:30
#7
gomer

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


гы,
Цитата:
Сообщение от Markiza-2010 Посмотреть сообщение
Sub Manipulyator()
http://forum.dwg.ru/showthread.php?t=52458
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. Многократный ввод данных и изменение положения объектов

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение точек пересечения объектов с заданной погрешностью на VBA helpstud Программирование 3 07.05.2009 17:28
Создание базы данных атрибутов текста чертежа в VBA -still alive- Программирование 4 26.08.2008 15:10
Создание своих объектов и хранение данных в dwg файлах zmaximus Программирование 2 11.04.2008 18:36
Выбор объектов в VBA Бродяга Программирование 19 12.03.2007 09:33
Выделение объектов мышью из под макроса на VBA Автон Программирование 2 30.03.2006 06:45