Форум профессиональных мебельщиков 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..
Просмотров: 432783
Ответить с цитированием Вверх
Старый 03.03.2020, 10:10   #501
SUNR1se
Новичок
 
Регистрация: 09.04.2018
Сообщений: 11
Сказал(а) спасибо: 2
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
SUNR1se пока не определено
По умолчанию

Народ, не могу понять как сделать паз с лицевой и обратной стороны панели. Нужно снять фаску с торца радиусом 5 мм к примеру.
Подскажите пожалуйста.
SUNR1se вне форума   Ответить с цитированием Вверх
Старый 03.03.2020, 12:13   #502
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от SUNR1se Посмотреть сообщение
Народ, не могу понять как сделать паз с лицевой и обратной стороны панели. Нужно снять фаску с торца радиусом 5 мм к примеру.
Подскажите пожалуйста.
Шаги следующие:
1. Добавить паз на панель
2. Задать траекторию паза (ориентация осей как у контура - относительно ЛСК панели)
3.Задать контур паза. У контура паза ориентация сложнее:
Ось Y контура сонаправлена оси Z ЛСК панели.
Ось X является векторным произведением оси Y и вектора направления траектории (должна быть ось Y или X в ЛСК панели в зависимости от того, как идёт траектория).

Самым сложным тут будет создание контура паза, поэтому, если есть возможность, лучше понасоздавать фрагментов и их подгружать в контур.

Вот небольшой пример создания паза (если грузить контур паза из фрагмента, то вместо добавления линий нужно просто вызвать cut.Contour.Load(filename))

Код

PHP код:
var panel Model.Selected.AsPanel;
Undo.Changing(panel);
// нижний паз
{
    var 
cut panel.AddCut('Паз1');
    
cut.Trajectory.AddLine(panel.GMin.x0panel.GMax.x0);
    
cut.Contour.AddArc({ x5y},
        { 
x0y},
        { 
x5y});
    
cut.Contour.AddLine({ x0y}, { x0y});
    
cut.Contour.AddLine({ x0y}, { x5y})
}

// верхний паз
{
    var 
panel.Thickness;
    var 
cut panel.AddCut('Паз2');
    
cut.Trajectory.AddLine(panel.GMin.x0panel.GMax.x0);
    
cut.Contour.AddArc({ x0y},
        { 
x5y},
        { 
x5y});
    
cut.Contour.AddLine({ x0y}, { x0y});
    
cut.Contour.AddLine({ x0y}, { x5y})
}


panel.Build(); 
[свернуть]
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
PravCom (30.07.2021), SUNR1se (04.03.2020)
Старый 04.03.2020, 18:51   #503
SUNR1se
Новичок
 
Регистрация: 09.04.2018
Сообщений: 11
Сказал(а) спасибо: 2
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
SUNR1se пока не определено
По умолчанию

Ребят, можно еще один вопросик и просьбу помочь=)
Есть проем,длина которого переменная, в этом проеме должно быть неизвестное кол-во деталей с известной шириной и зазором между собой. Расположения деталей относительно проема должно быть по центру, то есть зазор между первой и последней деталью относительно края проема, должны быть одинаковыми. А при изменении длины проема должно меняться количество деталей входящих в него.
Я так понимаю это нужно делать каким то циклом, но как это сделать не могу понять.
Точнее понимаю, но как написать это в скрипте, хз.
Если я правильно понял, то будет выглядеть что то типа:
Если сумма ширины панелей входящих в проем и сумма ширины зазоров между ними будут меньше чем ширина проема, то добавляется еще одна панель с началом отсчета координат от последней панели входящей в проем и цикл проверят условия по новой.
SUNR1se вне форума   Ответить с цитированием Вверх
Старый 05.03.2020, 11:03   #504
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от SUNR1se Посмотреть сообщение
Ребят, можно еще один вопросик и просьбу помочь=)
Есть проем,длина которого переменная, в этом проеме должно быть неизвестное кол-во деталей с известной шириной и зазором между собой. Расположения деталей относительно проема должно быть по центру, то есть зазор между первой и последней деталью относительно края проема, должны быть одинаковыми. А при изменении длины проема должно меняться количество деталей входящих в него.
Я так понимаю это нужно делать каким то циклом, но как это сделать не могу понять.
Точнее понимаю, но как написать это в скрипте, хз.
Если я правильно понял, то будет выглядеть что то типа:
Если сумма ширины панелей входящих в проем и сумма ширины зазоров между ними будут меньше чем ширина проема, то добавляется еще одна панель с началом отсчета координат от последней панели входящей в проем и цикл проверят условия по новой.
Примерно такой алгоритм по размещению панелей внутри проёма:

Код

PHP код:
// Начало проёма
var min 0;
// Конец проёма
var max 600;

// "Ширина панели". Если между панелями есть зазор, то он добавляется в эту
// переменную. По сути, это расттояние между началом одной панели и началом следующей.
var panelw 16;

// Ширина проёма
var width max min;

// кол-во панелей, умещающихсяя в проёме
var panelCount Math.trunc(width panelw);

// Отступ от края проёма = Ширина проёма - "Ширина панели" * кол-во панелей
var ident width - (panelw panelCount);

// Точка установки.
var pos ident;

for (var 
0panelCounti++){
    
// Какая-то функция по добавлению новой панели в точку
    
AddNewPanel(pos);
    
// Добавление "ширины панели" к точке установки, получение 
    // точки установки для следующей панели
    
pos += panelw;

[свернуть]



Цитата:
А при изменении длины проема должно меняться количество деталей входящих в него.
Если вы меняете длину проёма вручную вне скрипта (растяжение блока, например), то скрипт на это событие не повесить, соответственно нужно либо создавать парам. блок и вызывать его редактирование после каждого изменения длины проёма, либо реализовать всё это через парам. секции вместо скриптов.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
SUNR1se (05.03.2020)
Старый 05.03.2020, 11:22   #505
SUNR1se
Новичок
 
Регистрация: 09.04.2018
Сообщений: 11
Сказал(а) спасибо: 2
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
SUNR1se пока не определено
По умолчанию

Изделие строится только скриптом и все корректировки его размеров производятся именно скриптом. После завершения работы скрипта, готовую модель сразу можно отправлять в работу.
Есть форма с полями для изменения размера ширины изделия, соответственно при изменении этого параметра нужно понять сколько деталей поместится в этот проем.

Добавлено через 6 минут
И ещё оговорка у меня была. Детали которые находятся в проёме должны быть заключены в блок. У меня не получается получить количество деталей входящих в этот блок. Постоянно выдает ноль.

Добавлено через 3 минуты
То есть, нужно получить ширину проема, задать ширину создаваемого блока равной ширине проема, далее узнать количество деталей входящих в состав этого блока и если сумма ширины детали и зазора между ними меньше ширины блока, то добавить ещё деталь.
SUNR1se вне форума   Ответить с цитированием Вверх
Старый 06.03.2020, 03:13   #506
SUNR1se
Новичок
 
Регистрация: 09.04.2018
Сообщений: 11
Сказал(а) спасибо: 2
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
SUNR1se пока не определено
По умолчанию

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


// Начало проёма
var proem_Min = bpm.x + thick_Opora;

// Конец проёма
var proem_Max = bpm.x + x1_Rasp_Lamel;

// Ширина проёма
var w_proem = proem_Max - proem_Min;

// "Ширина панели".
var lamel_w = w_Lamel.Value;

// кол-во панелей и зазоров между ними, умещающихся в проёме
var countLamel = Math.round(w_proem / (lamel_w + w_zazor_Lamel.Value));

// Отступ от края проёма = (Ширина проёма - ((("Ширина панели" + Зазор между ламелями) * кол-во панелей) - зазор между ламелями)) / 2
var ident = (w_proem - (((lamel_w + w_zazor_Lamel.Value) * countLamel) - w_zazor_Lamel.Value)) / 2;

var pos = ident;
for (i = 0; i < countLamel; i++){
AddLamel(pos);
pos += lamel_w + w_zazor_Lamel.Value;
};

function AddLamel(pos){
m_Lamel.SetActive();
_Lamel = AddHorizPanel(bpm.x + thick_Opora + pos, bpm.z + z1_Lamel, bpm.x + thick_Opora + pos + w_Lamel.Value, bpm.z + z2_Lamel, bpm.y + y_Lamel);
_Lamel.Name = "Ламель";
_Lamel.TextureOrientation = TextureOrientation.Vertical;
_Lamel.AddPlastic(_Color_Lamel, true);
_Lamel.AddPlastic(_Color_Lamel, false);
if (r_Lamel.Value > 0) {
_val = r_Lamel.Value;
_panel = _Lamel;
_thick = m_Lamel.Thickness;
RadiusHorizPanel(_val, _panel, _thick);
};
_Lamel.Build();
};
[свернуть]


Чуть чуть подправил как надо и все работает.

Заменил Math.trunc (Округляет в наименьшую сторону) на Math.round (Округляет к ближайшему целому числу.
Немного доработал расчет отступа от края, теперь все ламели выстраиваются относительно проема по центру.
Спасибо большое за помощь.

Последний раз редактировалось SUNR1se; 06.03.2020 в 03:17. Причина: Дополнения к сообщению.
SUNR1se вне форума   Ответить с цитированием Вверх
Старый 09.03.2020, 11:13   #507
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Здравствуйте, объясните пожалуйста что означает сообщение об ошибке в скрипте, что нужно исправить? Скрипт создавался в 8-ом базисе.

https://yadi.sk/d/oamXtyGt6KWaRQ

Rafael M вне форума   Ответить с цитированием Вверх
Старый 09.03.2020, 20:45   #508
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Rafael M Посмотреть сообщение
Здравствуйте, объясните пожалуйста что означает сообщение об ошибке в скрипте, что нужно исправить? Скрипт создавался в 8-ом базисе.

https://yadi.sk/d/oamXtyGt6KWaRQ

Прочитал о null и undefined. Попробовал поменять "Action.OnMove = undefined" на "Action.OnMove = null". Разницу между ними не понял, но сообщение перестало выходить.
Rafael M вне форума   Ответить с цитированием Вверх
Старый 10.03.2020, 09:40   #509
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Rafael M Посмотреть сообщение
Прочитал о null и undefined. Попробовал поменять "Action.OnMove = undefined" на "Action.OnMove = null". Разницу между ними не понял, но сообщение перестало выходить.
Скорее всего косяк со стороны БМ - он пытался вызвать Action.OnMove(), не проверяя значение Action.OnMove, и получил соответствующую ошибку. Проверял в 11 - старый вариант нормально работает, в 10 - ошибка возникает на каждое движение мыши.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Rafael M (10.03.2020)
Старый 10.03.2020, 17:12   #510
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Здравствуйте, еще один вопрос к этому скрипту, хочу вставлять опоры справа с помощью симметрии, (у передней правой ножки не правильно отображается клипса). Пробую использовать AddSymmetry, не получается...Может нужна другая команда?
Rafael M вне форума   Ответить с цитированием Вверх
Ответ

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


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


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

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