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

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


Реклама на портале PROMEBELclub
шкаф-купе со скидкой по акции
Реклама на портале PROMEBELclub

искусственный камень Мебель196. Мебельный интернет-магазин в Екатеринбурге.
Ответ
 
Опции темы Опции просмотра
Старый 21.03.2018, 13:48  
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 215

Сказал(а) спасибо: 44
Поблагодарили 383 раз(а) в 147 сообщениях
Версия для печати Отправить по электронной почте
Letos Letos вне форума 21.03.2018, 13:48
Рейтинг: (3 голосов - 4.00 средняя оценка)

Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Просмотров: 19777
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Старый 12.06.2018, 12:39   #81
Максим Геннадьевич
Новичок
 
Регистрация: 11.04.2018
Сообщений: 28
Сказал(а) спасибо: 10
Поблагодарили 4 раз(а) в 1 сообщении
Вес репутации: 0
Максим Геннадьевич пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Лучше использовать свойство ItemIndex у комбо, которое указывает на индекс выбранной строки. Есть два варианта решения:
Выручайте использую код
Код:
MakeProperties();

Action.Continue();

function MakeProperties() {
Prop = Action.Properties;
combo = Prop.NewCombo('Тип шкафа', 'Тип1\nТип2');

Prop.OnChange = function() {
if (combo.ItemIndex == 0){
    Door = Prop.NewGroup('Дверь');
    // какой-то еще код
}
else if (combo.ItemIndex == 1){
    Box = Prop.NewGroup('ящик');
    // какой-то еще код
}
}
}
Как очистить форму? Выбираю тип1 появляется дверь, выбираю тип2 появляется ящик, но и дверь остается. Подскажите какая функция очищает форму? Спасибо
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 12.06.2018, 20:04   #82
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 215
Сказал(а) спасибо: 44
Поблагодарили 383 раз(а) в 147 сообщениях
Вес репутации: 113
Letos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человек
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Как очистить форму? Выбираю тип1 появляется дверь, выбираю тип2 появляется ящик, но и дверь остается. Подскажите какая функция очищает форму? Спасибо
Вот решение:
Код:
MakeProperties();

Action.Continue();

function MakeProperties() {
    Prop = Action.Properties;
    combo = Prop.NewCombo('Тип шкафа', 'Тип1\nТип2');

    Prop.OnChange = function () {
        if (combo.ItemIndex == 0) {
            if (typeof Box !== 'undefined'){
                Box.DeleteSelf();
            }
            if (typeof Door !== 'undefined'){
                Door.DeleteSelf();
            }
            Door = Prop.NewGroup('Дверь');
            // какой-то еще код
        }
        else if (combo.ItemIndex == 1) {
            if (typeof Box !== 'undefined'){
                Box.DeleteSelf();
            }
            if (typeof Door !== 'undefined'){
                Door.DeleteSelf();
            }
            Box = Prop.NewGroup('ящик');
            // какой-то еще код
        }
    }
}
Но, в зависимости от количества свойств, оно может еще прибавить в размерах. Лучшим вариантом будет создание отдельной группы для изменяемых параметров и создавать эти параметры внутри группы, например:
Код:
MakeProperties();

Action.Continue();

function MakeProperties() {
    var Prop = Action.Properties;
    var combo = Prop.NewCombo('Тип шкафа', 'Тип1\nТип2');
    var params = Prop.NewGroup('Параметры');
    combo.OnChange = function () {
        if (combo.ItemIndex == 0) {
            params.Clear();
            Door = params.NewGroup('Дверь');
            // какой-то еще код
        }
        else if (combo.ItemIndex == 1) {
            params.Clear();
            Box = params.NewGroup('ящик');
            // какой-то еще код
        }
    }
}
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Ovsyanicov (13.06.2018), Максим Геннадьевич (13.06.2018)
Старый 13.06.2018, 07:08   #83
Максим Геннадьевич
Новичок
 
Регистрация: 11.04.2018
Сообщений: 28
Сказал(а) спасибо: 10
Поблагодарили 4 раз(а) в 1 сообщении
Вес репутации: 0
Максим Геннадьевич пока не определено
По умолчанию

В первом случае выдает
Door.DeleteSelf(); - TypeErroroor.DeleteSelf is not function
Во втором случае проблема осталась и форма не очищается от предыдущего выбора. Думаю метод Clear() не срабатывает т.к я его до этого тоже использовал и толку не было.
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 13.06.2018, 11:08   #84
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 215
Сказал(а) спасибо: 44
Поблагодарили 383 раз(а) в 147 сообщениях
Вес репутации: 113
Letos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человек
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
В первом случае выдает
Door.DeleteSelf(); - TypeErroroor.DeleteSelf is not function
Во втором случае проблема осталась и форма не очищается от предыдущего выбора. Думаю метод Clear() не срабатывает т.к я его до этого тоже использовал и толку не было.
Проверил у себя на (вы же вроде про 8 версию пишете) демке версии 8.0.7.9649 - всё работает нормально. Думаю, метод Clear работал всегда. А у вас какая версия (полная)?
Letos вне форума   Ответить с цитированием Вверх
Старый 13.06.2018, 12:13   #85
Максим Геннадьевич
Новичок
 
Регистрация: 11.04.2018
Сообщений: 28
Сказал(а) спасибо: 10
Поблагодарили 4 раз(а) в 1 сообщении
Вес репутации: 0
Максим Геннадьевич пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Проверил у себя на (вы же вроде про 8 версию пишете) демке версии 8.0.7.9649 - всё работает нормально. Думаю, метод Clear работал всегда. А у вас какая версия (полная)?
Извиняюсь за смайлик, случайно нажал.
Версия 8.0.12.12765.
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 13.06.2018, 13:48   #86
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 215
Сказал(а) спасибо: 44
Поблагодарили 383 раз(а) в 147 сообщениях
Вес репутации: 113
Letos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человек
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Версия 8.0.12.12765.
Судя по версии, должно всё работать. Попробуйте запустить у себя такой код:
Код:
Action.Continue();
var btn = Action.Properties.NewButton('123123');
var grp = Action.Properties.NewGroup('group');
var i = 0;
btn.OnClick = function (){
    i++;
    grp.Clear();
    grp.NewBool('item' + i);
}
Должны появиться кнопка и группа. При нажатии на кнопку в группе появляется логическое свойство с именем <"Item" + кол-во нажатий на кнопку>. При этом старых свойств в группе не должно оставаться. У вас так же отработает?
Letos вне форума   Ответить с цитированием Вверх
Старый 13.06.2018, 14:26   #87
Максим Геннадьевич
Новичок
 
Регистрация: 11.04.2018
Сообщений: 28
Сказал(а) спасибо: 10
Поблагодарили 4 раз(а) в 1 сообщении
Вес репутации: 0
Максим Геннадьевич пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Должны появиться кнопка и группа. При нажатии на кнопку в группе появляется логическое свойство с именем <"Item" + кол-во нажатий на кнопку>. При этом старых свойств в группе не должно оставаться. У вас так же отработает?
Появляются свойства один за другим. Т.е шесть нажатий на кнопку и в группе все шесть свойств без удаления предыдущего.
Clear отказывается срабатывать. Буду думать дальше. Спасибо
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 13.06.2018, 21:01   #88
Максим Геннадьевич
Новичок
 
Регистрация: 11.04.2018
Сообщений: 28
Сказал(а) спасибо: 10
Поблагодарили 4 раз(а) в 1 сообщении
Вес репутации: 0
Максим Геннадьевич пока не определено
По умолчанию

Создаю заранее Door.NewBool() и Box.NewBool() и через Visible отображаю в зависимости от типа
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 17.06.2018, 06:59   #89
Guamoko
Новичок
 
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 13
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Guamoko пока не определено
По умолчанию

Добрый день. Запнулся на цикле. Имею функцию:

function HNap(Mater11,Hnap11){
arguments[0].SetActive();
var thick = ActiveMaterial.Thickness;
if(thick == 10){
arguments[1].Value=Window1.Hprm.Value-99;
arguments[1].Layout.Top=arguments[1].Layout.Top;
}
if(thick == 4){
arguments[1].Value=Window1.Hprm.Value-102;
arguments[1].Layout.Top=arguments[1].Layout.Top;
}
}
Если вызываю так:

Window1.Hprm.OnValueChange=function(){
HNap(Window1.Mater11,Window1.Hnap11);
HNap(Window1.Mater21,Window1.Hnap21);
HNap(Window1.Mater31,Window1.Hnap31);
}
то все нормально. Но мне она нужна через цикл. Моя попытка:

var mater = ["Mater11","Mater21","Mater31"];
var hnap = ["HNap11","HNap21","HNap31"];
Window1.Hprm.OnValueChange=function(){
for (var i=0, j=0; i<mater.length, j<hnap.length; i++, j++){
HNap(mater[i],hnap[j]);
}
}
но выдает ошибку:
TypeError: arquments(0).SetActive is not a function at HNap at Function.Window1.Hprm.OnValueChange

или что то другое , еси пробую варианты.Прошу указать на мою ошибку.
Спасибо.
Guamoko вне форума   Ответить с цитированием Вверх
Старый 17.06.2018, 22:56   #90
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 215
Сказал(а) спасибо: 44
Поблагодарили 383 раз(а) в 147 сообщениях
Вес репутации: 113
Letos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человекLetos - очень-очень хороший человек
По умолчанию

Цитата:
Сообщение от Guamoko Посмотреть сообщение
Прошу указать на мою ошибку.
Спасибо.
Ошибка в этой строке:
Код:
HNap(mater[i],hnap[j]);
Вы пытаетесь в свою функцию передать строку вместо объекта (ведь у вас в массиве хранятся строки). Ее можно решить двумя способами (выбирайте понравившийся, который вам удобнее понять):

Вариант 1


Код:
var mater = ["Mater11", "Mater21", "Mater31"];
var hnap = ["HNap11", "HNap21", "HNap31"];
Window1.Hprm.OnValueChange = function () {
    for (var i = 0, j = 0; i < mater.length, j < hnap.length; i++ , j++) {
        HNap(Window1[mater[i]], Window1[hnap[j]]);
    }
}
Здесь перед передачей в функцию у окна запрашиваются свойства по имени из массива.
[свернуть]

Вариант 2


Код:
var mater = [Window1.Mater11, Window1.Mater21, Window1.Mater31];
var hnap = [Window1.HNap11, Window1.HNap21, Window1.HNap31];
Window1.Hprm.OnValueChange = function () {
    for (var i = 0, j = 0; i < mater.length, j < hnap.length; i++ , j++) {
        HNap(mater[i], hnap[j]);
    }
}
Здесь сразу в массив записываются свойства и потом просто передаются в функцию. Я считаю этот вариант наиболее понятным.
[свернуть]

Пока писал варианты придумал еще один "изврат" на основе первого варианта. Используется как "смотрите, что можно сделать", но, по-моему этот вариант сложнее читать, чем первые два.:

"изврат"


Код:
const mater = "Mater"
const hnap = "HNap"
Window1.Hprm.OnValueChange = function () {
    for (var i = 0; i < mater.length; i++) {
        HNap(Window1[mater + i + '1'], Window1[hnap + i + '1']);
    }
}
[свернуть]


P.S. Я писал всё это без проверки, поэтому возможны опечатки.


P.P.S.Из "придраться по поводу кода":
1. почему вы используете "arguments[0]" и "arguments[1]" вместо "Mater11" и "Hnap11"? Имхо, в вашем случае читаемость скрипта хуже.
2. Такой цикл тоже кажется странным:
Код:
for (var i=0, j=0; i<mater.length, j<hnap.length; i++, j++)
Ведь на каждой итерации (в вашем примере) у вас переменные i и j равны, и можно просто использовать лишь одну из них. Но это замечание актуально только если у вас количество mater'ов и hnap'ов одинаково и вы передаёте в функцию элементы массива с одинаковым индексом.
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Briz (18.06.2018), Guamoko (18.06.2018)
Ответ

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

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 8 - общее обсуждение DTioutiou Базис-мебельщик 8.0 1824 14.10.2018 16:14
Обсуждение готовых скриптов Letos Базис-мебельщик. Скрипты 44 06.10.2018 13:33
БАЗИС 8 - Фурнитура, обсуждение nayrogi Базис-мебельщик 8.0 1185 02.10.2018 19:27
Общие вопросы по системе БАЗИС 7.0 COBA Базис-мебельщик 7.0 905 27.09.2016 05:59
MasterBox 7. Работа с ящиками в системе БАЗИС Daddy Базис-мебельщик 7.0 602 25.09.2016 22:45


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


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
© 2007-2018 PROMEBEL