Показать сообщение отдельно
Старый 15.12.2017, 14:24   #947
roollz
Пользователь
 
Регистрация: 25.12.2013
Адрес: Глухов
Сообщений: 41
Сказал(а) спасибо: 40
Поблагодарили 45 раз(а) в 15 сообщениях
Вес репутации: 139
roollz на пути к лучшему
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Как-то так:

Код

Код:
var B = Model.Selected;
var selGab = B.NToGlobal(B.GSize);
var offset = 150;

var D = AddCopy(B)
//сдвиг на нужный "вид"
D.Translate({x: 0,
             y: -(selGab.x + offset),
             z: 0
})
D.RotateX(90)

var C = AddCopy(B)
//сдвиг на нужный "вид"
C.Translate({x: selGab.y + offset,
             y: 0,
             z: 0
})
C.RotateY(90)

var U = AddCopy(B)
U.Translate({x: selGab.y + offset,
             y: -(selGab.x + offset),
             z: 0
})
U.RotateY(-20)
U.RotateX(20)

UnSelectAll();
[свернуть]

В чем суть: для получения "видов" Вам нужно еще сдвигать копии на нужное расстояние. В приведенном коде для сдвига используется значение <Глобальный габарит по оси + offset>, где offset - переменная с произвольным сдвигом (чтобы "виды" не сливались). Гарантировать работу скрипта не могу, т.к. восьмерки у меня нет. Надеюсь, что помог, если не кодом, то советом.

Код четко работает с панелями. Но в случае с блоками, при повороте самого блока, ось вращения берется не понятно от куда (мне не понятно). При чем зависит ось поворота от того места где блок был создан.
Поэтому после поворота профильный вид оказывается с лева.
Думаю что тут при повороте нужно использовать не просто Rotate, а Rotate вдоль определенной оси. Только вот беда, как эту ось задать правильно.

Последний раз редактировалось AlexBolton; 16.12.2017 в 11:58. Причина: публиковать - "превью с увеличением по клику"
roollz вне форума   Ответить с цитированием Вверх