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

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

Меню

Маркет


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

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

Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Просмотров: 235687
Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
PravCom (28.07.2021), Максим Геннадьевич (08.06.2018)
Старый 13.04.2018, 13:37   #21
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 161
Сказал(а) спасибо: 57
Поблагодарили 241 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию Редактирование контура скриптом

Не могу понять как редактировать панель через скрипт.
Выделить и определить какую сторону сделал, а как редактировать не пойму. В справке пример брал, но у меня выдает ошибку по функции.
Спасибо
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 13.04.2018, 14:57   #22
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Не могу понять как редактировать панель через скрипт.
Выделить и определить какую сторону сделал, а как редактировать не пойму. В справке пример брал, но у меня выдает ошибку по функции.
Спасибо
День добрый. Осмелюсь предположить, что редактировать надо контур. Для этого используется свойство Contour у панели. Но все равно не понятно, как в вашем понятии надо редактировать (растянуть, добавить какие-то элементы, сделать вырез или еще что). И еще хотелось бы узнать, какую ошибку выдает.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Старый 13.04.2018, 17:26   #23
Guamoko
Пользователь
 
Регистрация: 04.04.2018
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 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
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится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
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 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
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится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
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 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
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится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
Адрес: Санкт-Петербург
Сообщений: 34
Сказал(а) спасибо: 18
Поблагодарили 18 раз(а) в 3 сообщениях
Вес репутации: 0
Guamoko на пути к лучшему
По умолчанию

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

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

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


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


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

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