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

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

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

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Не могу понять как редактировать панель через скрипт.
Выделить и определить какую сторону сделал, а как редактировать не пойму. В справке пример брал, но у меня выдает ошибку по функции.
Спасибо
День добрый. Осмелюсь предположить, что редактировать надо контур. Для этого используется свойство Contour у панели. Но все равно не понятно, как в вашем понятии надо редактировать (растянуть, добавить какие-то элементы, сделать вырез или еще что). И еще хотелось бы узнать, какую ошибку выдает.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Старый 13.04.2018, 17:26   #23
Guamoko
Новичок
 
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 13
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Guamoko пока не определено
По умолчанию

Добрый день. В форме имею
Window1.Material1 = Props.NewMaterial("1я ДВЕРЬ");
и числовое окно,значение которого предполагалось будет зависеть от
Window1.Material1.SetActive();
Window1.ThickMaterial1=Window1.AktiveMaterial.Thic kness;
if(Window1.ThickMaterial1.Value==10){
Window1.BNapl1.Value=Window1.LGProf.Value+15;
не получается.(не считает)

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

Цитата:
Сообщение от Guamoko Посмотреть сообщение
Добрый день. В форме имею
Window1.Material1 = Props.NewMaterial("1я ДВЕРЬ");
и числовое окно,значение которого предполагалось будет зависеть от
Window1.Material1.SetActive();
Window1.ThickMaterial1=Window1.AktiveMaterial.Thic kness;
if(Window1.ThickMaterial1.Value==10){
Window1.BNapl1.Value=Window1.LGProf.Value+15;
не получается.(не считает)

Добавлено через 12 минут
Другими словами, для выбора формулы мне нужно привязаться к толщине материала
Спасибо.
Если я вас правильно понял, то ранее это уже обсуждалось. В формах обновление полей работает, мягко говоря, паршиво. Поэтому после того, как изменили значение, нужно вручную заставить компонент обновиться, например так:
Код:
Window1.BNapl1.Layout.Top = Window1.BNapl1.Layout.Top
По сути, строка является бредовой и не меняет ничего, но где-то внутри базиса запускается обновление поля и новое значение должно корректно отобразиться.
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Guamoko (13.04.2018), Ovsyanicov (13.04.2018)
Старый 15.04.2018, 07:03   #25
Guamoko
Новичок
 
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 13
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Guamoko пока не определено
По умолчанию

Прошу прощения, еще раз прошу помощи.
Для выбора формулы мне нужно считать толщину активного материала из таблицы "используемый материал".При смене материала на материал с другой толщиной меняется формула.

Добавлено через 4 минуты
В моем коде
Window1.Material1.OnChange=function(){
Window1.Material1.SetActive();
Window1.ThickMaterial1=Window1.ActiveMaterial.Thic kness;
if(Window1.ThickMaterial1.Value==10){
Window1.BNapl1.Value=Window1.LGProf.Value+15;
Window1.BNapl1.Layout.Top=Window1.BNapl1.Layout.To p;
};
}
указывает на ошибку в 3й строке
Спасибо.

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

Цитата:
Сообщение от Guamoko Посмотреть сообщение
Прошу прощения, еще раз прошу помощи.
Для выбора формулы мне нужно считать толщину активного материала из таблицы "используемый материал".При смене материала на материал с другой толщиной меняется формула.

Добавлено через 4 минуты
В моем коде
Window1.Material1.OnChange=function(){
Window1.Material1.SetActive();
Window1.ThickMaterial1=Window1.ActiveMaterial.Thic kness;
if(Window1.ThickMaterial1.Value==10){
Window1.BNapl1.Value=Window1.LGProf.Value+15;
Window1.BNapl1.Layout.Top=Window1.BNapl1.Layout.To p;
};
}
указывает на ошибку в 3й строке
Спасибо.

Добавлено через 2 минуты
Но, наверное,мой код вообще не то.
У объекта Window1 нет свойства ActiveMaterial (только если вы его не создавали). Если вы хотите получить доступ к текущему активному материалу, строка должна выглядеть так:
Window1.ThickMaterial1 = ActiveMaterial.Thickness;
И еще одна странная вещь в вашем коде. Это как раз то же самое присвоение. Судя по коду, Window1.ThickMaterial1 - это числовое поле. Но в "ошибочной" строке вы пытаетесь записать толщину материала в переменную этого поля, из-за чего скрипт будет работать неверно.

Подробное пояснение, почему


После выполнения присвоения в третьей строке, в переменной Window1.ThickMaterial1 будет находиться число (16, например). Следующим шагом идет проверка на равенство значений Window1.ThickMaterial1.Value (то есть 16.Value) и 10. У переменной Window1.ThickMaterial1 числовое значение, у которого, в свою очередь, свойство Value отсутствует. В итоге Window1.ThickMaterial1.Value вернет undefined и условие будет выглядеть так:
if (undefined == 10).
В итоге, это условие не будет никогда верным, но из-за особенностей JS, оно не является ошибочным, поэтому скрипт продолжит работу.
[свернуть]


Выход из этой ситуации следующий: третью строку необходимо исправить, чтобы она выглядела так:
Window1.ThickMaterial1.Value = ActiveMaterial.Thickness;

P.S На будущее: если скрипт выдает ошибку, связанную с вашим вопросом, неплохо было бы и текст ошибки тоже добавлять, ведь в ней сказано почти все, что нужно для поиска ошибки и причин ее возникновения.
Letos вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
Guamoko (17.04.2018), Ovsyanicov (17.04.2018), volunka (16.04.2018), zorro (16.04.2018)
Старый 17.04.2018, 04:46   #27
Guamoko
Новичок
 
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 13
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Guamoko пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
У объекта Window1 нет свойства ActiveMaterial (только если вы его не создавали). Если вы хотите получить доступ к текущему активному материалу, строка должна выглядеть так:
Window1.ThickMaterial1 = ActiveMaterial.Thickness;
И еще одна странная вещь в вашем коде. Это как раз то же самое присвоение. Судя по коду, Window1.ThickMaterial1 - это числовое поле. Но в "ошибочной" строке вы пытаетесь записать толщину материала в переменную этого поля, из-за чего скрипт будет работать неверно.

Подробное пояснение, почему


После выполнения присвоения в третьей строке, в переменной Window1.ThickMaterial1 будет находиться число (16, например). Следующим шагом идет проверка на равенство значений Window1.ThickMaterial1.Value (то есть 16.Value) и 10. У переменной Window1.ThickMaterial1 числовое значение, у которого, в свою очередь, свойство Value отсутствует. В итоге Window1.ThickMaterial1.Value вернет undefined и условие будет выглядеть так:
if (undefined == 10).
В итоге, это условие не будет никогда верным, но из-за особенностей JS, оно не является ошибочным, поэтому скрипт продолжит работу.
[свернуть]


Выход из этой ситуации следующий: третью строку необходимо исправить, чтобы она выглядела так:
Window1.ThickMaterial1.Value = ActiveMaterial.Thickness;

P.S На будущее: если скрипт выдает ошибку, связанную с вашим вопросом, неплохо было бы и текст ошибки тоже добавлять, ведь в ней сказано почти все, что нужно для поиска ошибки и причин ее возникновения.
Добавлено через 29 минут
Спасибо большое. С Вашими поправками
Цитата:
Сообщение от Guamoko Посмотреть сообщение
Window1.ThickMaterial1.Value = ActiveMaterial.Thickness;
заработало,но только после того,

Цитата:
Сообщение от Guamoko Посмотреть сообщение
И еще одна странная вещь в вашем коде. Это как раз то же самое присвоение. Судя по коду, Window1.ThickMaterial1 - это числовое поле.
как я создал поле и присвоил ему значение Window1.ThickMaterial1.Value= ActiveMaterial.Thickness;
Вообще-то, мне это поле не нужно и в своем варианте
Window1.ThickMaterial1.=ActiveMaterial.Thickness;
я предполагал, что ThickMaterial1-переменная, принимающая значение толщины активного материала.А уже от этой переменной зависило
if(Window1.ThickMaterial1.Value==10){
Window1.BNapl1.Value=Window1.LGProf.Value+15;
Window1.BNapl1.Layout.Top=Window1.BNapl1.Layout.To p;
Возможно ли обойтись без поля? Если нет,я его скрою, присвоив Visible-false
Еще раз позволю себе повторить задачу,которую хотелось бы решить.
1)Объявить переменную,принимающую значение толщины активного материала.
2)при изменении материала,если толщина активного материала=10,запустить формулу
Window1.BNapl1.Value=Window1.LGProf.Value+15;
Window1.BNapl1.Layout.Top=Window1.BNapl1.Layout.To p;
которая выводит результат вычисления в окно BNapl1.

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

Цитата:
Сообщение от Guamoko Посмотреть сообщение
Возможно ли обойтись без поля?
Конечно можно. Но если вам переменная нужна только для этого случая, то лучше и назвать ее покороче и отделить от объекта Window1. Например так:
Код:
var thick = ActiveMaterial.Thickness;
if (thick == 10)
//и дальше по коду
И еще немного теории: если переменную создавать в объекте Window1, то она будет существовать в этом объекте, пока тот не будет уничтожен (предположительно, до завершения скрипта). А если объявить переменную как на примере выше, то она будет существовать в пределах блока, в котором объявлена (то есть, по завершении обработчика события, переменная будет уничтожена, а память освобождена). Применительно к скриптам, это, скорее, "правило хорошего тона". За все время пользования скриптами я еще ни разу не видел скрипта, который бы замедлял работу Базиса из-за использования большого количества переменных. Из ощутимых плюсов я могу назвать наверное только упрощение работы в отладчике - меньше лишних переменных отображается.
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Guamoko (17.04.2018), Ovsyanicov (17.04.2018)
Старый 17.04.2018, 09:45   #29
Guamoko
Новичок
 
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 13
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Guamoko пока не определено
По умолчанию

Спасибо огромное. Все заработало как хотелось.
Теорию я читаю,не просто тупо прошу выдать ответ.Просто доходит не так быстро как хотелось бы. Еще раз спасибо. Удачи.
Guamoko вне форума   Ответить с цитированием Вверх
Старый 18.04.2018, 10:13   #30
Rudolf
Новичок
 
Регистрация: 29.11.2014
Сообщений: 4
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 1 сообщении
Вес репутации: 0
Rudolf пока не определено
По умолчанию

Добрый день.
Есть ли возможность имортировать через скрипт в Базис 8 данные из формата csv, например
артикул1;длина1;ширина1;колво1
артикул2;длина2;ширина2;колво2
...
После импорта будут созданы панели с этими параметрами.
Rudolf вне форума   Ответить с цитированием Вверх
Ответ

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


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


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