Цитата:
Сообщение от sergio1982
|
Там только тело вращения было.
Нашёл 8 версию, проверил и итог неутешительный - поворот панели происходит в градусах, а тело вращения поворачивается в радианах. Итоговый скрипт получился такой (добавил только условие в функции):
код
PHP код:
/**
* Повернуть объект вокруг точки
* @param {Object3} obj Объект
* @param {Vector} pointGCS Точка в ГСК
* @param {Vector} axis Ось поворота
* @param {Number} angle Угол поворота
*/
function RotateAroundPoint(obj, pointGCS, axis, angle){
var localPoint = obj.ToObject(pointGCS);
if (obj.AsPanel)
obj.RotateGCS(axis, angle);
else
obj.RotateGCS(axis, angle / 180 * Math.PI);
var newPointGCS = obj.ToGlobal(localPoint);
var diff = {
x: pointGCS.x - newPointGCS.x,
y: pointGCS.y - newPointGCS.y,
z: pointGCS.z - newPointGCS.z,
}
obj.TranslateGCS(diff);
}
var pan = Model.Selected;
Undo.Changing(pan);
var center = {
x: (pan.GabMax.x + pan.GabMin.x) / 2,
y: pan.GabMax.y,
z: (pan.GabMax.z + pan.GabMin.z) / 2
}
// поворот относительно центра панели в нижней точке по оси Y на 90 градусов
RotateAroundPoint(
pan,
center,
AxisY,
90);
[свернуть]