Показать сообщение отдельно
Старый 15.12.2017, 14:55   #948
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от 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)
Что исправлено:
  1. Сдвиг относительно ГСК
  2. Преобразование оси поворота из глобальной в локальную
Letos вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
maxgmv (15.12.2017), Ovsyanicov (15.12.2017), PravCom (03.03.2022), roollz (15.12.2017)