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

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

Меню

Маркет


беспроводные выключатели для мебели
Ответ
 
Опции темы Опции просмотра
Старый 21.03.2018, 14:48  
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555

Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Версия для печати Отправить по электронной почте
Letos Letos вне форума 21.03.2018, 14:48
Рейтинг: ()

Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Просмотров: 237656
Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
PravCom (28.07.2021), Максим Геннадьевич (08.06.2018)
Старый 12.06.2018, 12:39   #81
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от 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
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится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
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

В первом случае выдает
Door.DeleteSelf(); - TypeErroroor.DeleteSelf is not function
Во втором случае проблема осталась и форма не очищается от предыдущего выбора. Думаю метод Clear() не срабатывает т.к я его до этого тоже использовал и толку не было.
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 13.06.2018, 11:08   #84
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится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
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Проверил у себя на (вы же вроде про 8 версию пишете) демке версии 8.0.7.9649 - всё работает нормально. Думаю, метод Clear работал всегда. А у вас какая версия (полная)?
Извиняюсь за смайлик, случайно нажал.
Версия 8.0.12.12765.
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 13.06.2018, 13:48   #86
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится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
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию

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

Создаю заранее Door.NewBool() и Box.NewBool() и через Visible отображаю в зависимости от типа
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 17.06.2018, 06:59   #89
Guamoko
Пользователь
 
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 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
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится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 код Выкл.

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждение готовых скриптов Letos Базис-мебельщик. Скрипты 492 04.03.2024 11:42
БАЗИС 8 - общее обсуждение DTioutiou Базис-мебельщик 8 2092 15.08.2023 01:44
БАЗИС 8 - Фурнитура, обсуждение nayrogi Базис-мебельщик 8 1390 16.04.2022 22:47
MasterBox 7. Работа с ящиками в системе БАЗИС Daddy Базис-мебельщик 7 605 13.11.2019 11:13
Общие вопросы по системе БАЗИС 7.0 COBA Базис-мебельщик 7 904 24.08.2016 19:16


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


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

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