Показать сообщение отдельно
Старый 25.06.2021, 21:24   #98
skromvit
Местный
 
Аватар для skromvit
 
Регистрация: 22.12.2008
Сообщений: 256
Сказал(а) спасибо: 55
Поблагодарили 231 раз(а) в 164 сообщениях
Вес репутации: 258
skromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личность
По умолчанию

Доброго времени суток!

Скрипт поворота объектов вокруг осей 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(16284040);
Window1.Button2 Props.NewButton("Y");
Window1.Button2.SetLayout(81284040);
Window1.Button3 Props.NewButton("Z");
Window1.Button3.SetLayout(145284040);
Window1.Label1 Props.NewLabel("Выберите ось вращения:");
Window1.Label1.SetLayout(16716920);
Window1.Label1.Alignment AlignmentType.Center;

//-- window Window1 events

Window1.Button1.OnClick = function(){
function 
RotateAroundPoint(objpointGCSaxisangle){
    var 
localPoint obj.ToObject(pointGCS);
    if (
obj.Model)
        
obj.RotateGCS(axisangle);
}
var 
pan Model.Selected;
Undo.Changing(pan);
var 
OCb = {
    
xpan.GabMin.x,
    
ypan.GabMin.y,
    
zpan.GabMin.z
}
// поворот относительно оси X на 90 градусов
RotateAroundPointpanOCbAxisX90);
}
Window1.Button2.OnClick = function(){
function 
RotateAroundPoint(objpointGCSaxisangle){
    var 
localPoint obj.ToObject(pointGCS);
    if (
obj.Model)
        
obj.RotateGCS(axisangle);
}
var 
pan Model.Selected;
Undo.Changing(pan);
var 
OCb = {
    
xpan.GabMin.x,
    
ypan.GabMin.y,
    
zpan.GabMin.z
}
// поворот относительно оси Y на 90 градусов
RotateAroundPointpanOCbAxisY90);
}
Window1.Button3.OnClick = function(){
function 
RotateAroundPoint(objpointGCSaxisangle){
    var 
localPoint obj.ToObject(pointGCS);
    if (
obj.Model)
        
obj.RotateGCS(axisangle);
}
var 
pan Model.Selected;
Undo.Changing(pan);
var 
OCb = {
    
xpan.GabMin.x,
    
ypan.GabMin.y,
    
zpan.GabMin.z
}
// поворот относительно оси Z на 90 градусов
RotateAroundPointpanOCbAxisZ90);
}

//-- window Window1 ends
Window1.Form.ShowModal(); 
[свернуть]


-------------
UPD:

З.Ы. Корректно работает наверное похоже только с недавно установленными объектами. Если открыть старую модель, то что-то сбивается. Поворот осуществляется, но как-то по орбите.

З.Ы.Ы. И конечно это был первый опыт использования форм, внешне вроде красиво, но в то же время как-то топорно.

Последний раз редактировалось skromvit; 26.06.2021 в 20:42.
skromvit вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
demanus (20.07.2021), Oldman (26.06.2021), Ovsyanicov (26.06.2021), Uncle (26.06.2021), ХАВКА (26.06.2021)