Цитата:
Сообщение от roollz
Код четко работает с панелями. Но в случае с блоками, при повороте самого блока, ось вращения берется не понятно от куда (мне не понятно). При чем зависит ось поворота от того места где блок был создан.
Поэтому после поворота профильный вид оказывается с лева.
Думаю что тут при повороте нужно использовать не просто Rotate, а Rotate вдоль определенной оси. Только вот беда, как эту ось задать правильно.
|
Скорее всего вращение происходит относительно ЛСК (которая может начинаться и быть направлена как угодно). Попробуйте заменить функцию поворота на
Код:
D.RotateGCS(AxisX, 90)
Где:
- D - объект, который нужно повернуть;
- AxisX/AxisY/AxisZ - ось вращения в ГСК.
Если AxisX/AxisY/AxisZ не объявлен
Если не работает ,то объявлять объект вектора:
Код:
var AxisX = {
x: 1,
y: 0,
z: 0
}
[свернуть]
- 90 - необходимый угол поворота
Добавлено через 12 минут
UPD: вот еще одно решение. Возможно, более грамотное:
Код:
var D = AddCopy(B)
//сдвиг на нужный "вид"
D.TranslateGCS({x: 0,
y: -(selGab.x + offset),
z: 0
})
var axis = D.NToObject(AxisX)
D.Rotate(axis, 90)
Что исправлено:
- Сдвиг относительно ГСК
- Преобразование оси поворота из глобальной в локальную