Форум профессиональных мебельщиков 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..
Просмотров: 425265
Ответить с цитированием Вверх
Старый 10.01.2019, 12:37   #321
fanest
Пользователь
 
Регистрация: 26.09.2014
Сообщений: 46
Сказал(а) спасибо: 55
Поблагодарили 15 раз(а) в 5 сообщениях
Вес репутации: 123
fanest на пути к лучшему
По умолчанию

Некоторые изделия не просчитывает. Ошибок нет, но выдает: Примерный вес изделия: 0 Кг
fanest вне форума   Ответить с цитированием Вверх
Старый 10.01.2019, 14:32   #322
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от fanest Посмотреть сообщение
Некоторые изделия не просчитывает. Ошибок нет, но выдает: Примерный вес изделия: 0 Кг
Попробуйте такой скрипт:

Код

Код:
var Плотность = 0.68;

var weight = 0;
var spam = confirm('Подсвечивать панели в процессе взвешивания?');

Model.forEachPanel(function (panel){
    panel.Selected = true;
    if (panel.AsPanel) {
        weight = weight +
            (panel.GSize.x) *
            (panel.GSize.y) *
            (panel.GSize.z) / 1000 / 1000 * Плотность;
        if (spam) { alert('Панель взвешена'); }
    }
    panel.Selected = false;
})

alert('Примерный вес изделия: ' + Math.round(weight) + 'кг');
[свернуть]
Letos вне форума   Ответить с цитированием Вверх
11 пользователя(ей) сказали cпасибо:
Старый 10.01.2019, 15:16   #323
fanest
Пользователь
 
Регистрация: 26.09.2014
Сообщений: 46
Сказал(а) спасибо: 55
Поблагодарили 15 раз(а) в 5 сообщениях
Вес репутации: 123
fanest на пути к лучшему
По умолчанию

Отлично! Все работает! Спасибо большое!
fanest вне форума   Ответить с цитированием Вверх
Старый 18.01.2019, 17:40   #324
Dima1313
Местный
 
Регистрация: 16.06.2008
Адрес: Подольск Мск Обл
Сообщений: 685
Сказал(а) спасибо: 1,486
Поблагодарили 801 раз(а) в 237 сообщениях
Вес репутации: 421
Dima1313 - просто великолепная личностьDima1313 - просто великолепная личностьDima1313 - просто великолепная личностьDima1313 - просто великолепная личностьDima1313 - просто великолепная личностьDima1313 - просто великолепная личностьDima1313 - просто великолепная личность
По умолчанию

поясните пжл, возможно ли скриптами сделать вычитание одной операцией одного тела из нескольких-многих тел? Т.е. допустим есть сборный фасад с филенкой и штапиками, я делаю прямоугольное тело больше фасада и которое наполовину пересекает фасад, выделяю фасад (целиком несколько деталей) и говорю вычесть прямоугольное тело, получаем пол фасада...,далее я копирую его в буфер вставляю в 2д получаю сечение фасада. Тоже самое допустим для целого шкафа получим его разрез... Скрипты такое могут?
Dima1313 вне форума   Ответить с цитированием Вверх
Старый 18.01.2019, 17:47   #325
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Dima1313 Посмотреть сообщение
поясните пжл, возможно ли скриптами сделать вычитание одной операцией одного тела из нескольких-многих тел? Т.е. допустим есть сборный фасад с филенкой и штапиками, я делаю прямоугольное тело больше фасада и которое наполовину пересекает фасад, выделяю фасад (целиком несколько деталей) и говорю вычесть прямоугольное тело, получаем пол фасада...,далее я копирую его в буфер вставляю в 2д получаю сечение фасада. Тоже самое допустим для целого шкафа получим его разрез... Скрипты такое могут?
Нет. Скриптами сделать вычитание тел не получится.
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Dima1313 (18.01.2019), Ovsyanicov (21.01.2019)
Старый 01.02.2019, 11:39   #326
Ozimko
VIP
 
Аватар для Ozimko
 
Регистрация: 11.07.2008
Сообщений: 1,019
Сказал(а) спасибо: 261
Поблагодарили 314 раз(а) в 143 сообщениях
Вес репутации: 356
Ozimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючек
По умолчанию

Господа, я так понял, эластичные фрагменты установить скриптом пока никак?
Ozimko вне форума   Ответить с цитированием Вверх
Старый 05.02.2019, 17:27   #327
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Ozimko Посмотреть сообщение
Господа, я так понял, эластичные фрагменты установить скриптом пока никак?
Есть способ: загружать их как фурнитуру.
Код:
var frag = OpenFurniture('D:\\Полки.fr3d');
if (frag){
    var obj = frag.Make(0, 0);    
    if (obj){
        obj.ElasticResize({
            x: 800,
            y: 1000,
            z: 400
        });
        obj.Owner = Model.Temp;
    }
}
По порядку, что происходит
1. Загружаем как фурнитуру файл "D:\Полки.fr3d"
2. Если файл загрузился создаём 3д объект (два параметра функции Make для фурнитуры - толщина первой и второй панели - не должны никак влиять на установку фрагмента).
3. Если объект создался, меняем его размеры на (800, 100, 400) и назначаем ему Owner (временная область модели, чтобы по завершении скрипта Базис сам автоматически добавил его в историю).
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
maxgmv (24.03.2019), Ozimko (05.02.2019)
Старый 05.02.2019, 22:24   #328
Ozimko
VIP
 
Аватар для Ozimko
 
Регистрация: 11.07.2008
Сообщений: 1,019
Сказал(а) спасибо: 261
Поблагодарили 314 раз(а) в 143 сообщениях
Вес репутации: 356
Ozimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючек
По умолчанию

Спасибо. Работает. Осталось только заставить фрагмент устанавливать на определенной высоте..... Помогайте.

SetCamera(p3dFront);
Bok1 = GetPanel("Укажите 1-ую вертикальную панель");
Bok2 = GetPanel("Укажите 2-ую вертикальную панель");
SetCamera(p3dTop);
Back = GetEdge('Укажите заднюю границу', AxisX).First.z;
Front = GetEdge('Укажите переднюю границу', AxisX).First.z;
SetCamera(p3dFront);

x1 = Bok1.GabMax.x + 0;
x2 = Bok2.GabMin.x - 0;
z1 = Back;
z2 = Front;
var frag = OpenFurniture('C:\\Bazis 10\\Фрагменты\\35\\11.fr3d');
if (frag){
var obj = frag.Make(0, 0);
if (obj){
obj.ElasticResize({
x: x2,
y: Action.Pos3.y,
z: z2
});
obj.Owner = Model.Temp;
}
}



Упс. И не только высоту.... еще и первая точка фрагмента - начало координат....
Ozimko вне форума   Ответить с цитированием Вверх
Старый 06.02.2019, 09:45   #329
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Ozimko Посмотреть сообщение
Спасибо. Работает. Осталось только заставить фрагмент устанавливать на определенной высоте.
И не только высоту.... еще и первая точка фрагмента - начало координат....
Дополнил ваш код и добавил немного комментариев.
Странно, что вы решили взять для высоты координату "Action.Pos3.y", ведь позиция курсора в этот момент может быть любой. Я решил, что будет логичнее брать границы высоты по границам указанных вертикальных панелей. Также изменил вычисление размера объекта и добавил назначение позиции (трёхмерной точки).

Код


Код:
const filename = 'C:\\Bazis 10\\Фрагменты\\35\\11.fr3d';

SetCamera(p3dFront);
var Bok1 = GetPanel("Укажите 1-ую вертикальную панель");
var Bok2 = GetPanel("Укажите 2-ую вертикальную панель");
SetCamera(p3dTop);
var Back = GetEdge('Укажите заднюю границу', AxisX).First.z;
var Front = GetEdge('Укажите переднюю границу', AxisX).First.z;
SetCamera(p3dFront);

var x1 = Bok1.GabMax.x + 0;
var x2 = Bok2.GabMin.x - 0;
// Максимальная координата по высоте из двух минимальных координат панелей
var y1 = Math.max(Bok1.GabMin.y, Bok2.GabMin.y);
// Минимальная координата по высоте из двух максимальных координат панелей
var y2 = Math.min(Bok1.GabMax.y, Bok2.GabMax.y);
var z1 = Back;
var z2 = Front;
var frag = OpenFurniture(filename);
if (frag) {
    var obj = frag.Make(0, 0);
    if (obj) {
        // размер по оси = максимум - минимум
        obj.ElasticResize({
            x: x2 - x1,
            y: y2 - y1,
            z: z2 - z1
        });
        obj.Owner = Model.Temp;
    }
    // минимальная координата идёт в координату позиции
    obj.Position = {
        x: x1,
        y: y1,
        z: z1
    }
}
[свернуть]
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
AndrianoS (18.01.2021), Ozimko (06.02.2019)
Старый 06.02.2019, 09:58   #330
Ozimko
VIP
 
Аватар для Ozimko
 
Регистрация: 11.07.2008
Сообщений: 1,019
Сказал(а) спасибо: 261
Поблагодарили 314 раз(а) в 143 сообщениях
Вес репутации: 356
Ozimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючек
По умолчанию

Огромное спасибо, все работает. Что бы мы, дилетанты, без вас делали....
А по этому скрипту - нельзя ли сделать точку вставки фрагмента привязанной либо к положению курсора, либо вводом высоты полки в выпадающее окно либо в панели свойств? Добили бы тогда офигенный скрипт.

с вводом высоты справился. А вот с привязкой к курсору мыши не могу....

const filename = 'C:\\Bazis 10\\Фрагменты\\35\\11.fr3d';
pozY = NewNumberInput('высота полки');
pozY.Value = 30;
SetCamera(p3dFront);
var Bok1 = GetPanel("Укажите 1-ую вертикальную панель");
var Bok2 = GetPanel("Укажите 2-ую вертикальную панель");
SetCamera(p3dTop);
var Back = GetEdge('Укажите заднюю границу', AxisX).First.z;
var Front = GetEdge('Укажите переднюю границу', AxisX).First.z;
SetCamera(p3dFront);

var x1 = Bok1.GabMax.x + 0;
var x2 = Bok2.GabMin.x - 0;
// Максимальная координата по высоте из двух минимальных координат панелей
var y1 = Math.max(Bok1.GabMin.y, Bok2.GabMin.y);
// Минимальная координата по высоте из двух максимальных координат панелей
var y2 = Math.min(Bok1.GabMax.y, Bok2.GabMax.y);
var z1 = Back;
var z2 = Front;
var frag = OpenFurniture(filename);
if (frag) {
var obj = frag.Make(0, 0);
if (obj) {
// размер по оси = максимум - минимум
obj.ElasticResize({
x: x2 - x1,
y: y2 - y1,
z: z2 - z1
});
obj.Owner = Model.Temp;
}
// минимальная координата идёт в координату позиции
obj.Position = {
x: x1,
y: y1 + pozY.Value,
z: z1
}
}
Ozimko вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков 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


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


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

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