Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 08:56  
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 06.06.2017, 08:56
Рейтинг: ()

Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
__________________


Последний раз редактировалось systland; 26.12.2017 в 11:52..
Просмотров: 438723
Ответить с цитированием Вверх
Старый 25.03.2023, 11:47   #681
Артем Валерьевич
Пользователь
 
Регистрация: 03.12.2019
Сообщений: 88
Сказал(а) спасибо: 28
Поблагодарили 115 раз(а) в 34 сообщениях
Вес репутации: 85
Артем Валерьевич скоро придёт к известностиАртем Валерьевич скоро придёт к известности
По умолчанию

Для выбора материала есть NewMaterial() вроде. Зачем комбо? Но если комбо необходим сделайте их 2 вместо 1, или 3 если еще и з/с есть.
Артем Валерьевич вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Ivashka_pnz (26.03.2023)
Старый 19.04.2023, 16:50   #682
Ivashka_pnz
Новичок
 
Регистрация: 22.02.2023
Сообщений: 7
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Ivashka_pnz пока не определено
По умолчанию

Всем привет. Подскажите вот по такому вопросу. Имеем выбор ручек, в названии есть размер, как получить его?
Ivashka_pnz вне форума   Ответить с цитированием Вверх
Старый 19.04.2023, 20:32   #683
Артем Валерьевич
Пользователь
 
Регистрация: 03.12.2019
Сообщений: 88
Сказал(а) спасибо: 28
Поблагодарили 115 раз(а) в 34 сообщениях
Вес репутации: 85
Артем Валерьевич скоро придёт к известностиАртем Валерьевич скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Ivashka_pnz Посмотреть сообщение
Всем привет. Подскажите вот по такому вопросу. Имеем выбор ручек, в названии есть размер, как получить его?
Пример кода в студию
Артем Валерьевич вне форума   Ответить с цитированием Вверх
Старый 19.04.2023, 20:42   #684
Ivashka_pnz
Новичок
 
Регистрация: 22.02.2023
Сообщений: 7
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Ivashka_pnz пока не определено
По умолчанию

В том то и дело, не знаю как написать. Через NewFurniture выбираем ручку из базы, она может быть разного размера, и надо узнать ее размер. Это для расположения ее, или вертикально или горизонтально. Или может как то по другому это сделать можно.
Ivashka_pnz вне форума   Ответить с цитированием Вверх
Старый 19.04.2023, 21:27   #685
skromvit
Местный
 
Аватар для skromvit
 
Регистрация: 22.12.2008
Сообщений: 256
Сказал(а) спасибо: 55
Поблагодарили 231 раз(а) в 164 сообщениях
Вес репутации: 258
skromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от Ivashka_pnz Посмотреть сообщение
В том то и дело, не знаю как написать. Через NewFurniture выбираем ручку из базы, она может быть разного размера, и надо узнать ее размер. Это для расположения ее, или вертикально или горизонтально. Или может как то по другому это сделать можно.
Не уверен в работоспособности. Когда-то откуда-то копирнул. Но руки так и не дошли до тестов.

Скрытый текст


PHP код:
/**

* Имя файла настроек

*/
// @note   Имя файла, переменные
const filename 'settings.xml';
// const filename = process.env.USERPROFILE + "\\Documents\\Bazis\\Scripts\\SettingsRuchki.xml";
var px;
var 
py;
var 
pz;
var 
x1 0;
var 
y1 0;
var 
MinX;
var 
MaxX;
var 
MinY;
var 
MaxY;
var 
MinZ;
var 
MaxZ;
// @note  свойства
var props Action.Properties;
// var settings = props.NewGroup('Настройки');
var Ruchka props.NewFurniture('Ручка').Value;
var 
Ruchkalength props.NewNumber('Длина ручки'96);
var 
OtstupX props.NewNumber('Отступ по горизонтали');
var 
OtstupY props.NewNumber('Отступ по вертикали');
var 
Ugol props.NewNumber('Угол поворота');
Ugol.Visible false;
var 
Ugol_ props.NewBool('Ручка гориз/верт'true);
Ugol_.OnChange = function() {
    if(
Ugol_.Value == true) {
        
Ugol.Value 0;
        
x1 Ruchkalength.Value 2;
        
y1 0;
    } else {
        
Ugol.Value 90;
        
x1 0;
        
y1 Ruchkalength.Value 2;
    }
}
Ruchkalength.OnChange = function() {
    if(
Ugol_.Value == true) {
        
Ugol.Value 0;
        
x1 Ruchkalength.Value 2;
        
y1 0;
    } else {
        
Ugol.Value 90;
        
x1 0;
        
y1 Ruchkalength.Value 2;
    }
}
var 
UstanovkaOtPola props.NewBool('Устанавливать от пола');
var 
OtPola props.NewNumber('Расстояние от пола');
var 
InBlock props.NewBool('Объединять в блок');
props.Load(filename);
var 
finishBtn props.NewButton('Закончить');
finishBtn.OnClick = function() {
        
Action.Finish();
    }
    
//@note   OnCkick
Action.OnClick = function() {
        
//смотрим есть ли в модели слои и какой из них активный
        //если такой имеется то он является активной областью в которой после Action.Commit() и "появится" новый объект
        //который потом нужно перенести в то место иерархии где была указаная панель
        
for(var 0Model.Count; ++i) {
            if((
Model.Objects[i].toString() == '[object TLayer3D]') && (Model.Objects[i].Active)) {
                var 
active_layer Model.Objects[i];
            }
        }
        
//если слоев нет, то активная область это сама модель
        
if(!active_layer) {
            var 
active_layer Model;
        }
        
Action.Commit();
        
//создаем ссылку на новый объект модели - это установленая ручка
        
var new_fast active_layer.Objects[active_layer.Count 1];
        
//если выбрано "создание нового блока"
        
if(InBlock.Value) {
            
//создаем новый блок
            
var new_block AddBlock('фасад с ручкой');
            
new_block.Build();
            
Action.Commit();
            
new_block active_layer.Objects[active_layer.Count 1];
            
//устанавливаем и поворачиваем новый блок в пространстве так же как расположена панель
            
new_block.Translate(panel.ToGlobal(NewVector(000)));
            
new_block.Orient(panel.NToGlobal(AxisZ), panel.NToGlobal(AxisY));
            
//переносим новый блок в тот уровень иерархии  где находится панель
            //с сохранением расположения в глобальном пространстве
            
new_block.ReTransform(new_block.Ownerpanel.Owner);
            
new_block.Owner panel.Owner;
            
//переносим панель в новый блок
            //с сохранением расположения в глобальном пространстве
            
panel.ReTransform(panel.Ownernew_block);
            
panel.Owner new_block;
        }
        
//переносим ручку в тот уровень иерархии  где находится панель
        //с сохранением расположения в глобальном пространстве
        
new_fast.ReTransform(new_fast.Ownerpanel.Owner);
        
new_fast.Owner panel.Owner;
    }
    
//
if(Ugol_.Value == true) {
    
Ugol.Value 0;
    
x1 Ruchkalength.Value 2;
    
y1 0;
} else {
    
Ugol.Value 90;
    
x1 0;
    
y1 Ruchkalength.Value 2;
}
// @note   Фронт панель
function GetKoordFrontPanel() {
    
CenterX = (MaxX MinX) / MinX;
    
CenterY = (MaxY MinY) / MinY;
    if(
Action.Pos3.CenterX 30) {
        
px MinX OtstupX.Value x1;
        if(
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if(
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;
        } else {
            
py CenterY;
        }
    } else if(
Action.Pos3.CenterX 30) {
        
px MaxX OtstupX.Value x1;
        if(
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if(
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;
        } else {
            
py CenterY;
        }
    } else {
        
px CenterX;
        if(
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if(
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;
        } else {
            
py CenterY;
        }
    }
    if(
UstanovkaOtPola.Value) {
        
py OtPola.Value y1;
    }
    
pz MinZ Math.round(panel.Thickness);
}
//@note   Верт панель
function GetKoordVertPanel() {
    
CenterX = (MaxZ MinZ) / MinZ;
    
CenterY = (MaxY MinY) / MinY;
    if(
Action.Pos3.CenterX 30) {
        
pz MinZ OtstupX.Value x1;
        if(
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if(
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;
        } else {
            
py CenterY;
        }
    } else if(
Action.Pos3.CenterX 30) {
        
pz MaxZ OtstupX.Value x1;
        if(
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if(
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;
        } else {
            
py CenterY;
        }
    } else {
        
pz CenterX;
        if(
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if(
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;
        } else {
            
py CenterY;
        }
    }
    if(
UstanovkaOtPola.Value) {
        
py OtPola.Value y1;
    }
    if(
Action.ViewDir.== 1) {
        
px MinX panel.Thickness;
    }
    if(
Action.ViewDir.== -1) {
        
px MinX panel.Thickness;
    }
    if(
Action.ViewDir.!== -&& Action.ViewDir.!== 1) {
        
px Action.Pos3.x;
    }
}
//@note   OnMove
Action.OnMove = function() {
    
DeleteNewObjects();
    
Obj Action.Get3DObject();
    if(
typeof Obj == "undefined") {} else {
        if(
Obj.AsPanel) {
            
panel Obj.AsPanel;
            if(
panel.ToGlobal(panel.GMin).panel.ToGlobal(panel.GMax).x) {
                
MinX panel.ToGlobal(panel.GMin).x;
                
MaxX panel.ToGlobal(panel.GMax).x;
            } else {
                
MinX panel.ToGlobal(panel.GMax).x;
                
MaxX panel.ToGlobal(panel.GMin).x;
            }
            if(
panel.ToGlobal(panel.GMin).panel.ToGlobal(panel.GMax).y) {
                
MinY panel.ToGlobal(panel.GMin).y;
                
MaxY panel.ToGlobal(panel.GMax).y;
            } else {
                
MinY panel.ToGlobal(panel.GMax).y;
                
MaxY panel.ToGlobal(panel.GMin).y;
            }
            if(
panel.ToGlobal(panel.GMin).panel.ToGlobal(panel.GMax).z) {
                
MinZ panel.ToGlobal(panel.GMin).z;
                
MaxZ panel.ToGlobal(panel.GMax).z;
            } else {
                
MinZ panel.ToGlobal(panel.GMax).z;
                
MaxZ panel.ToGlobal(panel.GMin).z;
            }
            if((
MaxX MinX) > (MaxZ MinZ)) {
                
GetKoordFrontPanel();
            } else {
                
GetKoordVertPanel();
            };
            
Ruchka.Mount1(ObjpxpypzUgol.Value);
        }
    }
}
Action.OnFinish = function() {
    
props.Save(filename)
}
Action.Continue(); 
[свернуть]
skromvit вне форума   Ответить с цитированием Вверх
Старый 20.04.2023, 10:16   #686
Артем Валерьевич
Пользователь
 
Регистрация: 03.12.2019
Сообщений: 88
Сказал(а) спасибо: 28
Поблагодарили 115 раз(а) в 34 сообщениях
Вес репутации: 85
Артем Валерьевич скоро придёт к известностиАртем Валерьевич скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Ivashka_pnz Посмотреть сообщение
В том то и дело, не знаю как написать. Через NewFurniture выбираем ручку из базы, она может быть разного размера, и надо узнать ее размер. Это для расположения ее, или вертикально или горизонтально. Или может как то по другому это сделать можно.
у панелей, фрагментов, почти у всего в базисе есть свойства:
GabMax, GabMin, GSize, GCenter, GMin, GMax
прочитайте про них, в документации в скриптах коротенько но есть инфа
Артем Валерьевич вне форума   Ответить с цитированием Вверх
Старый 21.04.2023, 12:43   #687
Ivashka_pnz
Новичок
 
Регистрация: 22.02.2023
Сообщений: 7
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Ivashka_pnz пока не определено
По умолчанию

Может не так, но работает

PHP код:
RuchName Handle.Value.Name;
RuchRazmer RuchName.replace(/\D/g,''); 
Ivashka_pnz вне форума   Ответить с цитированием Вверх
Старый 21.04.2023, 13:46   #688
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Ivashka_pnz Посмотреть сообщение
RuchName.replace(/\D/g,'')
Если в наименовании ручки будет несколько групп с цифрами, то такой подход чреват проблемами. Я бы советовал усложнить регулярное выражение.
Ovsyanicov вне форума   Ответить с цитированием Вверх
Старый 21.04.2023, 14:08   #689
Ivashka_pnz
Новичок
 
Регистрация: 22.02.2023
Сообщений: 7
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Ivashka_pnz пока не определено
По умолчанию

Цитата:
Сообщение от Ovsyanicov Посмотреть сообщение
Если в наименовании ручки будет несколько групп с цифрами, то такой подход чреват проблемами. Я бы советовал усложнить регулярное выражение.
Думал об этом, буду смотреть за именем.
Ivashka_pnz вне форума   Ответить с цитированием Вверх
Старый 02.05.2023, 22:54   #690
Eng_Serg
Новичок
 
Регистрация: 27.11.2022
Сообщений: 16
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Eng_Serg пока не определено
По умолчанию

Подскажите пожалуйста.
При запуске скрипта из VisualStudioCode сообщения alert отображаются нормально. При запуске скрипта путем выбора из выпадающего меню эти сообщения alert отображаются набором символов. Неправильно отображаются только сообщения с кирилицей, латиница отображается правильно. Я понимаю, что наверное где-то кодировка неправильная. Но где ее настроить, чтобы сообщения правильно отображались?
Eng_Serg вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-Мебельщик 10 systland Базис-мебельщик 10 1264 13.03.2024 22:48
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7 2230 29.11.2019 10:37
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 10:08


Текущее время: 02:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL

џндекс.Њетрика