Местный
Регистрация: 22.12.2008
Сообщений: 256
Сказал(а) спасибо: 55
Поблагодарили 231 раз(а) в 164 сообщениях
Вес репутации: 258
|
Доброго времени суток!
Скрипт поворота объектов вокруг осей XYZ на 90 градусов с формой с соответствующими кнопками. Работает в БМ-2021. Возможно будет работать в БМ-11, не проверял). Может кому-то пригодится.
Скрытый текст
PHP код:
if (Model.SelectionCount < 1) { //есть ли выделенные
alert('Нет выделенных объектов!');
Action.Finish();
}
//-- window Window1
Window1 = { Form : NewForm() };
Props = Window1.Form.Properties;
Window1.Form.Width = 200;
Window1.Form.Height = 100;
Window1.Form.Caption = "Поворот";
Window1.Form.MinHeight = 100;
//-- window Window1 properties
Window1.Button1 = Props.NewButton("X");
Window1.Button1.SetLayout(16, 28, 40, 40);
Window1.Button2 = Props.NewButton("Y");
Window1.Button2.SetLayout(81, 28, 40, 40);
Window1.Button3 = Props.NewButton("Z");
Window1.Button3.SetLayout(145, 28, 40, 40);
Window1.Label1 = Props.NewLabel("Выберите ось вращения:");
Window1.Label1.SetLayout(16, 7, 169, 20);
Window1.Label1.Alignment = AlignmentType.Center;
//-- window Window1 events
Window1.Button1.OnClick = function(){
function RotateAroundPoint(obj, pointGCS, axis, angle){
var localPoint = obj.ToObject(pointGCS);
if (obj.Model)
obj.RotateGCS(axis, angle);
}
var pan = Model.Selected;
Undo.Changing(pan);
var OCb = {
x: pan.GabMin.x,
y: pan.GabMin.y,
z: pan.GabMin.z
}
// поворот относительно оси X на 90 градусов
RotateAroundPoint( pan, OCb, AxisX, 90);
}
Window1.Button2.OnClick = function(){
function RotateAroundPoint(obj, pointGCS, axis, angle){
var localPoint = obj.ToObject(pointGCS);
if (obj.Model)
obj.RotateGCS(axis, angle);
}
var pan = Model.Selected;
Undo.Changing(pan);
var OCb = {
x: pan.GabMin.x,
y: pan.GabMin.y,
z: pan.GabMin.z
}
// поворот относительно оси Y на 90 градусов
RotateAroundPoint( pan, OCb, AxisY, 90);
}
Window1.Button3.OnClick = function(){
function RotateAroundPoint(obj, pointGCS, axis, angle){
var localPoint = obj.ToObject(pointGCS);
if (obj.Model)
obj.RotateGCS(axis, angle);
}
var pan = Model.Selected;
Undo.Changing(pan);
var OCb = {
x: pan.GabMin.x,
y: pan.GabMin.y,
z: pan.GabMin.z
}
// поворот относительно оси Z на 90 градусов
RotateAroundPoint( pan, OCb, AxisZ, 90);
}
//-- window Window1 ends
Window1.Form.ShowModal();
[свернуть]
-------------
UPD:
З.Ы. Корректно работает наверное похоже только с недавно установленными объектами. Если открыть старую модель, то что-то сбивается. Поворот осуществляется, но как-то по орбите.
З.Ы.Ы. И конечно это был первый опыт использования форм, внешне вроде красиво, но в то же время как-то топорно.
Последний раз редактировалось skromvit; 26.06.2021 в 20:42.
|