Форум профессиональных мебельщиков 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..
Просмотров: 434259
Ответить с цитированием Вверх
Старый 18.02.2019, 09:43   #351
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Карякин Посмотреть сообщение
Товарищи специалисты! помогите советом. Отверстия одного диаметра глухие и сквозные у нас по одной цене, но для диаметра 5 мм есть еще метка (5*2) В операциях нашел Пользовательские вычисляемые, "придумал" формулу- (все глухие 5мм+все сквозные 5 мм)-отверстия 5*2, а какие команды использовать в скрипте не пойму. беру параметры с модели, просто складываю, использую оператор var, все равно не видит и не считает. Помогите,пожалуйста.
Я так понимаю, вы про скрипты в смете? Тогда конечный результат выполнения скрипта надо записывать в переменную Result.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Карякин (20.02.2019)
Старый 18.02.2019, 09:59   #352
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от IStiv Посмотреть сообщение
это понятно.так же можно и со свойствами. но загвоздка в том что нужно для функций а-ля "для каждой панели сделать то то" - везде проверять видимость для панелей. и для блоков. и для фурнитуры. а я накодил уже кучу и "впихивать" сейчас эти проверки в 15 местах по всему приложению не хочется. а задача простая - исключить из обработки блоки с определенными именами.
идеально было некое свойство" не доступен для скрипта" отключил/включил.и чтобы для блока , это на все дерево вниз распостранялось.
если никакого фокуса нет. буду "городить" с Visible или свойствами
Есть ещё такая заморочка: перед обработкой можно объекты, которые не нужно обрабатывать, запихнуть во временную область модели, тогда перебором по модели они не будут доступны. После обработки их надо будет вернуть на место. В примере ниже берутся объекты из корня модели и если объект невидимый, запоминается положение объекта в иерархии (блок, в который он вложен) и он перемещается во временную область модели. В конце скрипта объекты возвращаются на своё место в иерархии модели.
Код:
// Массив соответствий объекта и блока (или корня модели), в который он вложен
var restore = [];

// Все невидимые объекты в корне модели перемещаем во временную область модели,
// чтобы исключить их из обработки
for (var i = 0; i < Model.Count; i++){
    var obj = Model[i];
    if (!obj.Visible){
        restore.push([obj, obj.Owner]);
        obj.Owner = Model.Temp;
    }
}

// Здесь какой-то основной код

// Восстанавливаем объекты обратно в модель в нужное место по иерархии
for (var i = 0; i < restore.length; i++){
    var item = restore[i];
    item[0].Owner = item[1];
}
Letos вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
IStiv (21.02.2019), maxgmv (25.02.2019), v22884 (09.03.2019)
Старый 21.02.2019, 19:31   #353
IStiv
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
IStiv скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
перед обработкой можно объекты, которые не нужно обрабатывать, запихнуть во временную область модели, тогда перебором по модели они не будут доступны. После обработки их надо будет вернуть на место.
спасибо, интересное решение.
Action.Commit(); - очищает Model.Temp ?

а какое свойство отвечает за порядок Childrens в поддереве относительно Owner?
после восстановления хотелось бы вернуть элемент точно на то место где он был. сейчас он "падает" вниз в поддереве.
IStiv вне форума   Ответить с цитированием Вверх
Старый 21.02.2019, 21:54   #354
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
wizardpnz скоро придёт к известностиwizardpnz скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Я так понимаю, вы про скрипты в смете? Тогда конечный результат выполнения скрипта надо записывать в переменную Result.
Можно результат базис сметы получить в основном скрипте?
wizardpnz вне форума   Ответить с цитированием Вверх
Старый 22.02.2019, 12:47   #355
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от IStiv Посмотреть сообщение
спасибо, интересное решение.
Action.Commit(); - очищает Model.Temp ?

а какое свойство отвечает за порядок Childrens в поддереве относительно Owner?
после восстановления хотелось бы вернуть элемент точно на то место где он был. сейчас он "падает" вниз в поддереве.
Action.Commit() переносит все ВИДИМЫЕ объекты из временной области в корень модели, и очищает временную область.

За порядок расположения в блоке отвечает порядок добавления объектов в блок. Нашёл ещё свойство OwnerIndex, но оно меняет местами текущий объект с тем, индекс которого указан. Например:
Код:
Model[1].OwnerIndex = 2;
Этот код поменяет местами в корне модели второй и третий объекты.

Чтобы вставить на прежнюю позицию объект, можно добавить его как обычно на последнее место, а потом в цикле менять его местами с предыдущим объектом в блоке, пока нужный объект не встанет на своё место. Например:
Код:
var Owner = Model;
var neededIndex = 1;
var ownerCount = Owner.Count;
for (var i = ownerCount - 1; i > neededIndex; i--){
  Owner[i].OwnerIndex = Owner[i].OwnerIndex - 1;
}
Этот код вставит последний объект в корне модели на вторую позицию. Все объекты ниже просто сместятся на одну позицию вниз.
Letos вне форума   Ответить с цитированием Вверх
Старый 22.02.2019, 12:50   #356
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от wizardpnz Посмотреть сообщение
Можно результат базис сметы получить в основном скрипте?
Если под основным скриптом вы имеете в виду скрипт в Мебельщике, то нет.
Letos вне форума   Ответить с цитированием Вверх
Старый 24.02.2019, 09:18   #357
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Каркас привязки 3x3 относительно панели.

Для тех кому знакомы фасады, Арткам, некоторые программы траекторий для станков ЧПУ.

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




pr = Action.Properties
Priviazka = pr.NewSelector('Привязка',"○")
Priviazka.OnClick= function(){
VybratPriviazku()
}

dx = pr.NewNumber('dx')
dy = pr.NewNumber('dy')


Action.Continue()

function VybratPriviazku()
{
//-- window Window1
Window1 = { Form : NewForm() };
Props = Window1.Form.Properties;
Window1.Form.Width = 100;
Window1.Form.Height = 157;
Window1.Form.Caption = "Привязка";
//Window1.Form.MinHeight = 150;
//Window1.Form.MinWidth = 100;
Window1.Form.MinWidth = 100;
Window1.Form.Dockable = false;
Window1.Form.Resizable = true;
//-- window Window1 properties

Window1.LV = Props.NewButton("↖");
Window1.LV.SetLayout(5, 5, 30, 30);
Window1.V = Props.NewButton("↑");
Window1.V.SetLayout(35, 5, 30, 30);
Window1.PV = Props.NewButton("↗");
Window1.PV.SetLayout(65, 5, 30, 30);


Window1.L = Props.NewButton("←");
Window1.L.SetLayout(5, 35, 30, 30);
Window1.C = Props.NewButton("○");
Window1.C.SetLayout(35, 35, 30, 30);
Window1.P = Props.NewButton("→");
Window1.P.SetLayout(65, 35, 30, 30);


Window1.LN = Props.NewButton("↙");
Window1.LN.SetLayout(5, 65, 30, 30);
Window1.N = Props.NewButton("↓");
Window1.N.SetLayout(35, 65, 30, 30);
Window1.PN = Props.NewButton("↘");
Window1.PN.SetLayout(65, 65, 30, 30);
//-- window Window1 events

Window1.LV.OnClick = function(){Priviazka.Value = "↖"; Window1.Form.Close()}
Window1.V.OnClick = function(){Priviazka.Value = "↑"; Window1.Form.Close()}
Window1.PV.OnClick = function(){Priviazka.Value = "↗"; Window1.Form.Close()}

Window1.L.OnClick = function(){Priviazka.Value = "←"; Window1.Form.Close()}
Window1.C.OnClick = function(){Priviazka.Value = "○"; Window1.Form.Close()}
Window1.P.OnClick = function(){Priviazka.Value = "→"; Window1.Form.Close()}

Window1.LN.OnClick = function(){Priviazka.Value = "↙"; Window1.Form.Close()}
Window1.N.OnClick = function(){Priviazka.Value = "↓"; Window1.Form.Close()}
Window1.PN.OnClick = function(){Priviazka.Value = "↘"; Window1.Form.Close()}

//-- window Window1 ends
Window1.Form.ShowModal();
}
[свернуть]
Миниатюры
Снимок.PNG  
v22884 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Ovsyanicov (25.02.2019)
Старый 25.02.2019, 08:58   #358
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
wizardpnz скоро придёт к известностиwizardpnz скоро придёт к известности
По умолчанию

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

Цитата:
Сообщение от wizardpnz Посмотреть сообщение
как узнать что панель погонная а не площадная?
В свойствах материала панели не нашёл такого флага. Хотя у панели есть свойство MaterialWidth - ширина панели. Может я что не так делаю, но я поставил материал столешницы шириной 600 и свойство MaterialWidth возвращает -1 и в самом мебельщике в свойствах панели в подменю материал в поле "погонный" пишет "нет". Либо я косячу, либо Мебельщик. Но я думаю, что при настроенной базе можно по положительному значению MaterialWidth определить, является ли материал погонным.
Letos вне форума   Ответить с цитированием Вверх
Старый 28.02.2019, 19:12   #360
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 367
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
по положительному значению MaterialWidth определить, является ли материал погонным
Так и есть, ранее, в другой ветке упоминал об этом (п.1 сообщения), объекта флага типа материала панели тоже не нашел. Если MaterialWidth <= 0 - это площадной материал, если MaterialWidth > 0 - погонный.
Igor_482 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Letos (31.01.2020)
Ответ

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


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


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

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