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

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


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

искусственный камень Мебель196. Мебельный интернет-магазин в Екатеринбурге.
Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 12:22  
БАЗИС 8 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 145

Сказал(а) спасибо: 31
Поблагодарили 634 раз(а) в 83 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 12:22
Рейтинг: (6 голосов - 5.00 средняя оценка)

ВНИМАНИЕ! Правила выкладывания скриптов.

1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.

2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.


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

__________________________________________________ _______________

Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.

Новое в скриптописании для БМ:

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

while (true)
Вот полный список новшеств, добавленных в скрипты с момента их выхода:

14 декабря 2014

Добавлена поддержка эластичных блоков

List3D : {
IsElastic: new HDefinition("?Boolean:", 'Являетсяли объект эластичным'),
ElasticResize: new HDefinition("?Vector:newSize", 'Растянуть объект до требуемых размеров'),
}

27 ноября 2014

Вспомогательные геометрические алгоритмы, реализованы в глобальном объекте geometry

geometry : new HDefinition("Geometry2D", 'Вспомогательные геометрические функции'),

Geometry2D : {
Intersect: new HDefinition("?Array.<Point>:elem1,elem2", 'Вычислить точки пересечения двухмерных элементов'),
Compare: new HDefinition("?Boolean:elem1,elem2", 'Сравнить элементы'),
Distance: new HDefinition("?Number:elem1,elem2", 'Найти кратчайшее расстояние между элементами'),
Area: new HDefinition("?Number:contour", 'Найти площадь контура')
}

17 ноября 2014

Работа с пользовательскими свойствами

Object3 : {
UserPropCount: new HDefinition("Number", 'Количество пользовательских свойств'),
UserProperty: new HDefinition('Array.<Object>', 'Значение свойства по его имени или индексу'),
UserPropertyName: new HDefinition('Array.<String>', 'Названия свойств')
}

Новые элементы управления на панели свойств

ScriptProperty: {
NewColor: new HDefinition("?ScriptColorProperty:'Название'", 'Создать свойство типа цвет'),
NewSeparator: new HDefinition("?ScriptProperty", 'Создать разделитель')
}

ScriptColorProperty: {
Value: new HDefinition("Number")
},

----------------------------------------------------------------------------------------------------
29 сентября 2014

system.apiVersion = 90 -> Bazis9
system.apiVersion = 85 -> Bazis8

----------------------------------------------------------------------------------------------------
15 сентября 2014

Contour2D : {
Min: new HDefinition("Point", 'Левый нижний угол охватывающего прямоугольника'),
Max: new HDefinition("Point", 'Правый верхний угол охватывающего прямоугольника'),
AddEquidistant : new HDefinition("?undefined:contour,offset,false,false", 'Добавить эквидистанту контура. Последние 2 параметры отвечают за направление и скругление')
}

ScriptProperty: {
OnDeactivate : new HDefinition("Function", 'Обработчик деактивации свойства или меню'),
OnValueValidate : new HDefinition("Function", 'Проверка корректности значения'),
ValueValid: new HDefinition("Boolean", 'Флаг корректности введенного значения, выставляется обработчиком OnValueValidate'),
Validate: new HDefinition("?Boolean:", 'Проверить значение свойства и вложенных свойств')
}

----------------------------------------------------------------------------------------------------
2 сентября 2014

ScriptProperty: {
NameEditable: new HDefinition("Boolean", 'Разрешить редактирование имени (для создания таблиц)'),
NewSeparator: new HDefinition("?ScriptProperty", 'Создать разделитель')
}

----------------------------------------------------------------------------------------------------
9 августа 2014

Добавлены подменю в кнопки

InButton : {
NewSubMenu : new HDefinition('?InButton:"Меню"', 'Создать подменю'),
Combo: new Definition("Boolean", 'Отдельная стрелка для подменю')
},

Добавлены всплывающие меню и цвет фона для всех свойств. Созданы обработчики активации и изменения свойства.
Прежнее событие OnChange срабатывало не только при изменении самого параметра, но и при изменении дочерних свойств.
OnValueChange срабатывает только при изменении значения свойства.

ScriptProperty: {
BackColor: new HDefinition("Number", 'Цвет фона'),
PopupMenu: new HDefinition("ScriptMenu", 'Всплывающее меню'),
OnActivate : new HDefinition("Function", 'Обработчик активации свойства пользователем'),
OnValueChange : new HDefinition("Function", 'Обработчик изменения свойства')
Tag: new HDefinition("Number", 'Пользовательское число'),
}

Добавлено выпадающее меню:

ScriptProperty: {
DropDownMenu: new HDefinition("ScriptMenu", 'Выпадающее меню')
}

----------------------------------------------------------------------------------------------------
21 апреля 2014:

Добавлены свойства и методы:

ScriptMaterialProperty: {
Width: new HDefinition("Number", "Ширина листа"),
}

ScriptButtProperty: {
Thickness: new HDefinition("Number", "Толщина кромки"),
Width: new HDefinition("Number", "Ширина ленты"),
}

Contour2D : {
IsPointInside: new HDefinition("?Boolean:x,y", "Находится ли точка внутри контура?"),
IsInContour: new HDefinition("?Boolean:contour", "Находится ли контур внутри другого?"),
IsClosedContour: new HDefinition("?Boolean:", "Является ли контур замкнутым?"),
IsContourRectangle: new HDefinition("?Boolean:", "Является ли контур прямоугольным?"),
OrderContours: new HDefinition("?Boolean:true", "Упорядочить элементы контура в одном направлении")
}


----------------------------------------------------------------------------------------------------
6 февраля 2014

Реализовано подключение и вызов функций COM и OLE объектов

ScriptProperty : {
Expanded: new HDefinition("Boolean", 'Развернуты ли вложенные свойства')
}

Добавлен метод:
NewCOMObject: new HDefinition("?IDispatch:'CLSID'", 'Создать новый COM объект по его типу')
[свернуть]

Нажмите на изображение для увеличения
Название: Базис.jpg
Просмотров: 1050
Размер:	36.4 Кб
ID:	86248

Обратите внимание на полезные ответы в этой теме!


Последний раз редактировалось systland; 26.12.2017 в 11:52.. Причина: Добавил объявление.
Просмотров: 696376
Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
Beard (20.06.2017), female (15.01.2016), Kerby (21.11.2015), v22884 (05.11.2014)
Старый 10.01.2020, 22:31   #1221
Максим Геннадьевич
Пользователь
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 72
Сказал(а) спасибо: 26
Поблагодарили 55 раз(а) в 15 сообщениях
Вес репутации: 40
Максим Геннадьевич скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Uncle Посмотреть сообщение
Максим Геннадьевич, поделитесь, пожалуйста, почему это делать лучше с помощью скрипта, а не с помощью штатной команды:?
Случай простой.Скрипт кухонный шкафчик и нужны отверстия для сушки 8 шт, но сама сушка не нужна как модель,но нужна она в смете. И с направляющими ящика так же, направляющих две, а в смете один комплект т.е сборка. Может есть другие варианты , решил для себя задачу так.

Добавлено через 8 минут
Цитата:
Сообщение от Letos Посмотреть сообщение
Нужно назначить родителя объекту, который вернула функция установки фурнитуры
Немного изменил, для случая если несколько фурнитур в одну сборку
PHP код:
var pan AddVertPanel(003007000) ;
var 
sborka AddAssembly("Сборка");
var 
oF OpenFurniture('Фурнитура.f3d');
oF.Mount1(pan,50,50,50,0).Owner sborka;
oF.Mount1(pan,150,50,50,0).Owner sborka;
oF.Mount1(pan,50,150,50,0).Owner sborka
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 10.01.2020, 23:22   #1222
cudesnic09
VIP
 
Аватар для cudesnic09
 
Регистрация: 14.07.2009
Адрес: А где придётся!Злые они.....
Сообщений: 6,641
Сказал(а) спасибо: 20,367
Поблагодарили 25,062 раз(а) в 6,120 сообщениях
Вес репутации: 5842
cudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспоримаcudesnic09 репутация неоспорима
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Случай простой.Скрипт кухонный шкафчик и нужны отверстия для сушки 8 шт, но сама сушка не нужна как модель,но нужна она в смете. И с направляющими ящика так же, направляющих две, а в смете один комплект т.е сборка. Может есть другие варианты , решил для себя задачу так.
А именованные отверстия не решили бы вопрос?
Восемь отверстий "обозванных" как сушка.Четыре как направляющая.При чём,насколько я понимаю в "музыке"и то и другое есть возможность установить по типу "направляющие"(между двух вертикальных панелей).В случае с сушкой останется только соблюсти стандартные размеры(450/600/700 и тд)

Извиняюсь,не по теме.Но всегда ли есть надобность лезть в скрипты?
__________________
...Как искали искры в сыром бору.......
cudesnic09 вне форума   Ответить с цитированием Вверх
Старый 11.01.2020, 07:29   #1223
Максим Геннадьевич
Пользователь
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 72
Сказал(а) спасибо: 26
Поблагодарили 55 раз(а) в 15 сообщениях
Вес репутации: 40
Максим Геннадьевич скоро придёт к известности
По умолчанию

Цитата:
Сообщение от cudesnic09 Посмотреть сообщение
Но всегда ли есть надобность лезть в скрипты?
Один раз залез и постоянно пользуешься и не только сам. Скрипты упрощают работу.Потратил 15 мин на написание скрипта, ввел пару параметров и готово. Например.
PHP код:
var Left GetObject("Укажите левую панель");
var 
Right GetObject("Укажите правую панель");
var 
Bottom GetObject('Укажите нижнюю панель');

var 
sborka AddAssembly("Сушка");
var 
oF OpenFurniture('Фурнитура.f3d');//Указать файл
//Параметры Mount1 для примера
oF.Mount1(Left,Left.GabMax.x,Bottom.GabMax.120,Left.GabMin.20 ,0).Owner sborka;
oF.Mount1(Left,Left.GabMax.x,Bottom.GabMax.120,Left.GabMax.20 ,0).Owner sborka;
oF.Mount1(Left,Left.GabMax.x,Bottom.GabMax.420,Left.GabMin.20 ,0).Owner sborka;
oF.Mount1(Left,Left.GabMax.x,Bottom.GabMax.420,Left.GabMax.20 ,0).Owner sborka;
oF.Mount1(Right,Right.GabMin.x,Bottom.GabMax.120,Left.GabMin.20 ,0).Owner sborka;
oF.Mount1(Right,Right.GabMin.x,Bottom.GabMax.120,Left.GabMax.20 ,0).Owner sborka;
oF.Mount1(Right,Right.GabMin.x,Bottom.GabMax.420,Left.GabMin.20 ,0).Owner sborka;
oF.Mount1(Right,Right.GabMin.x,Bottom.GabMax.420,Left.GabMax.20 ,0).Owner sborka
При желании можно еще, что то добавить.
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
cudesnic09 (11.01.2020), Ovsyanicov (11.01.2020)
Старый 12.01.2020, 19:06   #1224
Funman
Новичок
 
Регистрация: 01.01.2020
Сообщений: 4
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Funman пока не определено
По умолчанию

Подскажите, пожалуйста. В панели свойств вывожу кромку Butt1 = GMat1.NewButt('Кромка'); В строке выбираю нужное значение и хочу проверить , что значению Butt1 присвоилось наименовании кромки: "Кромка ПВХ вишня 0,4/19". Смотрю через system.log(Butt1.Name); Получаю КРОМКА, Название объекта, а как получить именно то, что я выбрал. Спасибо.
Funman вне форума   Ответить с цитированием Вверх
Старый 13.01.2020, 09:38   #1225
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 424
Сказал(а) спасибо: 105
Поблагодарили 719 раз(а) в 278 сообщениях
Вес репутации: 218
Letos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Funman Посмотреть сообщение
Подскажите, пожалуйста. В панели свойств вывожу кромку Butt1 = GMat1.NewButt('Кромка'); В строке выбираю нужное значение и хочу проверить , что значению Butt1 присвоилось наименовании кромки: "Кромка ПВХ вишня 0,4/19". Смотрю через system.log(Butt1.Name); Получаю КРОМКА, Название объекта, а как получить именно то, что я выбрал. Спасибо.
Проверял только на 8 версии, свойство Material возвращает null (хотя в нём это должно храниться, по идее), поэтому подошло только
PHP код:
Butt1.ValueToString() 
Но оно возвращает уже отформатированное имя "<наименование> (Артикул <артикул>)"
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Funman (20.01.2020)
Старый 13.01.2020, 19:55   #1226
Funman
Новичок
 
Регистрация: 01.01.2020
Сообщений: 4
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Funman пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Но оно возвращает уже отформатированное имя "<наименование> (Артикул <артикул>)"
Это не важно. Лишнее можно отбросить. Главное что есть наименование кромки, СПАСИБО. Сам бы не догадался.
Funman вне форума   Ответить с цитированием Вверх
Старый 13.01.2020, 22:03   #1227
Funman
Новичок
 
Регистрация: 01.01.2020
Сообщений: 4
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Funman пока не определено
По умолчанию

Скажите, а можно как-то обнулить вывод кромки в панели свойств? Чтобы при запуске скрипта была пустая строка и пользователь был вынужден сделать выбор. Иногда приходится ставить две кромки разные на одну панель я вывожу выбор двух кромок и может получиться, что в одной строке пользователь поменяет значение, а в другой оставит как есть. Тогда в обе переменные попадает значение только одной явно выбранной кромки, а это уже ведет к ошибке.
Funman вне форума   Ответить с цитированием Вверх
Старый 14.01.2020, 09:29   #1228
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 424
Сказал(а) спасибо: 105
Поблагодарили 719 раз(а) в 278 сообщениях
Вес репутации: 218
Letos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Funman Посмотреть сообщение
Скажите, а можно как-то обнулить вывод кромки в панели свойств? Чтобы при запуске скрипта была пустая строка и пользователь был вынужден сделать выбор. Иногда приходится ставить две кромки разные на одну панель я вывожу выбор двух кромок и может получиться, что в одной строке пользователь поменяет значение, а в другой оставит как есть. Тогда в обе переменные попадает значение только одной явно выбранной кромки, а это уже ведет к ошибке.
Можно было бы использовать функцию ClearValue(), но у меня в демке 8 она не хочет работать, а в демке 10 работает нормально.

Если нужно обязательно выбирать кромку, то можно вызвать метод Click(), который имитирует нажатие на кнопку выбора. У этого подхода есть недостаток - после вызова функции показывается окно выбора кромки и без дополнительной информации сложно понять, что нужно выбрать.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Funman (20.01.2020)
Старый 19.01.2020, 14:11   #1229
Funman
Новичок
 
Регистрация: 01.01.2020
Сообщений: 4
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Funman пока не определено
По умолчанию

Скажите, есть ли возможность на модели через скрипт задать лицо панели, чтобы в чертежах лицо всегда располагалось с внешней стороны независимо от кол-ва отверстий и их расположения. Приходится тратить уйму времени чтобы понять как отображен чертеж и периодически зеркалить с переименованием отверстий обр. на лиц. или наоборот, менять линии. Жаль в чертежах скрипты не работают. Такая у нас договоренность на производстве, чтобы рабочие меньше путались.
И еще вопросик. Как поставить кромку на форуме нашел, а как удалить?

Последний раз редактировалось Funman; 19.01.2020 в 14:57.
Funman вне форума   Ответить с цитированием Вверх
Старый 20.01.2020, 11:49   #1230
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 424
Сказал(а) спасибо: 105
Поблагодарили 719 раз(а) в 278 сообщениях
Вес репутации: 218
Letos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Funman Посмотреть сообщение
Скажите, есть ли возможность на модели через скрипт задать лицо панели, чтобы в чертежах лицо всегда располагалось с внешней стороны независимо от кол-ва отверстий и их расположения. Приходится тратить уйму времени чтобы понять как отображен чертеж и периодически зеркалить с переименованием отверстий обр. на лиц. или наоборот, менять линии. Жаль в чертежах скрипты не работают. Такая у нас договоренность на производстве, чтобы рабочие меньше путались.
И еще вопросик. Как поставить кромку на форуме нашел, а как удалить?
Насчёт 8 версии не знаю, но в 11 (а может и в 10) ввели свойство "Лицевая сторона", к которому можно достучаться из скриптов. Вот простой пример по установке лицевой стороной сторону 1 у выделенной панели:
PHP код:
var panel Model.Selected.AsPanel
if (panel){
    
Undo.Changing(panel)
    
// 0 - Сторона 1
    // 1 - Сторона 2
    // 2 - Не задана
    
panel.FrontFace 0;

Для удаления кромки можно использовать метод Delete у списка кромок. Вот пример, который удалит первую кромку в списке кромок выделенной панели (на 8 версии не проверял, но должно сработать):
PHP код:
var panel Model.Selected.AsPanel;
if (
panel){
    
Undo.Changing(panel)
    
panel.Butts.Delete(0);

Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Funman (20.01.2020)
Ответ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 9 nayrogi Базис-мебельщик 9 767 30.10.2019 05:47
БАЗИС 9 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1426 18.03.2019 00:00
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8 119 21.12.2017 22:04
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 15.01.2014 23:37


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


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