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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. 3D. Ориентация блоков (примитивов) в пространстве? Как определить угол поворота?

VBA. 3D. Ориентация блоков (примитивов) в пространстве? Как определить угол поворота?

Ответ
Поиск в этой теме
Непрочитано 15.05.2009, 12:06 #1
VBA. 3D. Ориентация блоков (примитивов) в пространстве? Как определить угол поворота?
shumilovvv
 
Инженер технолог по проектированию магистральных нефтепрводов
 
Тюмень
Регистрация: 07.05.2009
Сообщений: 9

Обнаружил, на мой взгляд нелогичную вещь, при вставке блока через object.InsertBlock(InsertionPoint, Name, Xscale, Yscale, ZScale, Rotation [, Password]) с текущей системой координат (ТСК) совпадающей с мировой или расположенной к ней нормально Rotation представляет угол с осью X текущей системой координат, а ТСК ориентирована в пространстве сложнее, оси систем координат не коллинеарны то при вставке блока нужно вводить поправку к Rotation. Как её определить?

Последний раз редактировалось shumilovvv, 15.05.2009 в 12:13.
Просмотров: 3475
 
Непрочитано 15.05.2009, 12:12
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй сначала вставлять с Rotation = 0, потом меняешь Normal, следом - Rotation.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.05.2009, 12:18
#3
shumilovvv

Инженер технолог по проектированию магистральных нефтепрводов
 
Регистрация: 07.05.2009
Тюмень
Сообщений: 9


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Попробуй сначала вставлять с Rotation = 0, потом меняешь Normal, следом - Rotation.
а на что Normal менять? обок правильно ориентирован в плоскость XY, просто при угле равном 0 направление не совпадает с осью X.

Отвечаю сам на свой вопрос.
Угол между мнимой осью от которой отсчитывается Rotationи осью X текйщей системой координат можно получить как угол между вектором X взятый из UCSXDIR и точкой начала дуги единичного радиуса построенной в текущей системе координат.
Function угол() As Double
Dim Point0(0 To 2) As Double '
Point0(0) = 0: Point0(1) = 0: Point0(2) = 0 '
Dim retvar As Variant

Dim x1 As Double
Dim x2 As Double
Dim y1 As Double
Dim y2 As Double
Dim z1 As Double
Dim z2 As Double

Point0(0) = 0: Point0(1) = 0: Point0(2) = 0 '
Dim aArc As AcadArc
Set aArc = ThisDrawing.ModelSpace.AddArc(Point0, 1, 0, Rad(90))

retvar = ThisDrawing.GetVariable("UCSXDIR")

x1 = aArc.StartPoint(0)
y1 = aArc.StartPoint(1)
z1 = aArc.StartPoint(2)

x2 = retvar(0)
y2 = retvar(1)
z2 = retvar(2)

aArc.Delete
Dim a As Double
a = (x1 * x2 + y1 * y2 + z1 * z2) / (Sqr(x1 ^ 2 + y1 ^ 2 + z1 ^ 2) * Sqr(x2 ^ 2 + y2 ^ 2 + z2 ^ 2))
If a <> 1 Then угол = Arccos(a)
End Function

Function Arccos(X As Double) As Double
Arccos = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
End Function

Последний раз редактировалось shumilovvv, 15.05.2009 в 14:48.
shumilovvv вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA. 3D. Ориентация блоков (примитивов) в пространстве? Как определить угол поворота?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Как в пространстве редактора блоков запустить редактирование вложенного блока. Supermax Программирование 5 18.12.2007 17:50
Как определить, что точка за пределами видимой области? VBA den001 Программирование 6 20.01.2007 20:48
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
Как изменить угол обзора в 3D? В Autocad'e это возможно? Li2n AutoCAD 17 12.11.2004 23:45