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

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

Меню

Маркет


беспроводные выключатели для мебели
Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
БАЗИС 8 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

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

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
Просмотров: 1496
Размер:	36.4 Кб
ID:	86248

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


Последний раз редактировалось systland; 26.12.2017 в 11:52.. Причина: Добавил объявление.
Просмотров: 1379061
Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 04.04.2019, 14:22   #1111
anb
VIP
 
Регистрация: 01.08.2008
Адрес: Россия
Сообщений: 724
Сказал(а) спасибо: 9,178
Поблагодарили 2,910 раз(а) в 712 сообщениях
Вес репутации: 845
anb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспоримаanb репутация неоспорима
По умолчанию

Цитата:
Сообщение от Vladren Посмотреть сообщение
затестил.
Похоже вы не тот скрипт установили.
anb вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Vladren (04.04.2019)
Старый 04.04.2019, 14:34   #1112
Vladren
Пользователь
 
Аватар для Vladren
 
Регистрация: 14.07.2009
Адрес: Киев
Сообщений: 91
Сказал(а) спасибо: 78
Поблагодарили 47 раз(а) в 19 сообщениях
Вес репутации: 198
Vladren на пути к лучшему
По умолчанию

Разобрался... не то скачал) СПАСИБО!
Vladren вне форума   Ответить с цитированием Вверх
Старый 04.04.2019, 14:36   #1113
Максим Геннадьевич
Местный
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
Максим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личностьМаксим Геннадьевич - весьма и весьма положительная личность
По умолчанию Полки

Цитата:
Сообщение от Vladren Посмотреть сообщение
Ну я затестил. Спрашивает одну боковую панель и одну боковую границу. Крепеж с одной стороны. Но панель рисует если не указать срез прамоугольную. Или я чтото не понял и не разобрался?
PHP код:
SetCamera(p3dFront);
Left GetObject("Укажите левую панель");
Right GetObject("Укажите правую панель");
Top GetEdge('Укажите верхнюю границу'AxisX).First.y;
Bottom GetEdge('Укажите нижнюю границу'AxisX).First.y;
SetCamera(p3dLeft);
SetCamera(p3dFront);

FileOptions 'SaveShelf.xml';
MakeProperties();
Action.Properties.Load(FileOptions);
Action.OnFinish = function() {
    
Action.Properties.Save(FileOptions);
}

NewBtn NewButtonInput('Закончить');
NewBtn.OnChange = function() {
    
Action.Commit();
    
Action.Finish();
}

function 
MakeProperties() {
    
prop Action.Properties;
    
shelfCount prop.NewNumber('Количество полок',0);
    
blockMat shelfCount.NewMaterial('Материал полок');
    
butt shelfCount.NewButt('Кромка полок');
    
shelfSide shelfCount.NewNumber ('Отступ с боков',0);
    
shelfFurn shelfCount.NewFurniture('Полкодержатели');
    
shelfFront =  shelfCount.NewNumber ('Заглубление',10);
    
FurnVis shelfCount.NewCombo('Видимость крепежа','Слева\nСправа\nНа обоих\nНет на обоих');    
    
blockFurn shelfCount.NewFurniture('Крепеж видимый');
    
furnBlock shelfCount.NewFurniture('Крепеж не видимый');
    
inFurnVis shelfCount.NewCombo('Система крепежа','Произвольно\nОт центра 32\nОт края 32');
    
inFurn shelfCount.NewNumber ('Отступ фурнитуры',50);
    
prop.OnChange = function() {
    
MakeShelf();
    }
}
MakeShelf();

function  
MakeShelf(){
    
DeleteNewObjects();
    
blockMat.SetActive();
    
thick ActiveMaterial.Thickness;
    if (
Left.GabMax.Right.GabMax.|| Left.GabMax.== Right.GabMax.z){
        
pan Right;
    }else{
        
pan Left;
    }
    if(
shelfCount.Value ){
        
//формула вычесления растояния полок
        
fshelf Math.round(((Bottom Top) - thick thick shelfCount.Value )/(+shelfCount.Value 1));
        
shelfY Top;
            for (var 
0shelfCount.Valuek++){
                
shelfY += fshelf thick;
                
shelf AddHorizPanel(Left.GabMax.shelfSide.Value ,Left.GabMin.shelfSide.ValueRight.GabMin.shelfSide.Value,pan.GabMax.shelfFront.ValueshelfY );
                
ShelfFurn (shelf);
                
shelf.Build();
            }
    }
}

function 
ShelfFurn (s) {
        
s.TextureOrientation ftoHorizontal;
        if(
inFurnVis.ItemIndex == 0){
            
inFB inFF inFurn.Value;
        }else if(
inFurnVis.ItemIndex == 1){
            
inFB inFF =(s.GabMax.- (Math.floor(Math.floor((s.GabMax.32 inFurn.Value 2)/32))*32))/;
        }else{
            
inFB Math.ceil(inFurn.Value/32)*32;
            
inFF s.GabMax.Math.floor((s.GabMax.inFurn.Value)/32)*32;
        }            
        if (
shelfSide.Value == 0){
            switch(
FurnVis.ItemIndex){
                case 
0:
                    
sFl blockFurn.Value;
                    
sFR furnBlock.Value;                    
                break;
                case 
1:
                    
sFl furnBlock.Value;
                    
sFR blockFurn.Value;
                break;
                case 
2:
                    
sFl blockFurn.Value;
                    
sFR blockFurn.Value;
                break;
                case 
3:
                    
sFl furnBlock.Value;
                    
sFR furnBlock.Value;
                break;
            }
            
            
s.Name 'Полка';
            
s.AddButt(butt2);
        }
        else {
            
sFl sFR shelfFurn.Value;
            
s.Name 'Полка съем';
            
s.AddButt(butt0);
            
s.AddButt(butt1);
            
s.AddButt(butt2);
            
s.AddButt(butt3);
        }
        
sFl.Mount(sLeftLeft.GabMax.s.GabMin.thick/2s.GabMin.inFB );
        
sFl.Mount(sLeftLeft.GabMax.xs.GabMin.thick/2,s.GabMax.inFF);
        
sFR.Mount(sRightRight.GabMin.s.GabMin.thick/2s.GabMin.inFB);
        
sFR.Mount(sRightRight.GabMin.s.GabMin.thick/2,s.GabMax.inFF);

}

Action.Continue(); 
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 13.04.2019, 03:50   #1114
serga22
Новичок
 
Регистрация: 24.06.2010
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
serga22 пока не определено
По умолчанию скрипт экспорта

Всем добрый день. необходима помощь в правке скрипта экспорта в XML за вознаграждение, кому интересно пишите в личку, лучше с приблизительными сроками и суммами
serga22 вне форума   Ответить с цитированием Вверх
Старый 13.04.2019, 14:11   #1115
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 402
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от serga22 Посмотреть сообщение
лучше с приблизительными сроками и суммами
Так Вы бы для начала описали что имеется в виду под "правкой скрипта", какие требования к работе скрипта.
Как исполнитель Вам должен назвать сроки и сумму, не зная, что от него требуется сделать?
Ovsyanicov вне форума   Ответить с цитированием Вверх
Старый 14.04.2019, 10:05   #1116
STORM
Пользователь
 
Аватар для STORM
 
Регистрация: 14.08.2008
Сообщений: 68
Сказал(а) спасибо: 29
Поблагодарили 15 раз(а) в 5 сообщениях
Вес репутации: 200
STORM на пути к лучшему
По умолчанию

Цитата:
Сообщение от Ozimko Посмотреть сообщение
Да, легко.
obj.ArtPos = obj.ArtPos + AdditionalInfo(obj);
А куда это поставить, если возможно, вставьте, СПАСИБО.
STORM вне форума   Ответить с цитированием Вверх
Старый 14.04.2019, 11:47   #1117
Ozimko
VIP
 
Аватар для Ozimko
 
Регистрация: 11.07.2008
Сообщений: 1,019
Сказал(а) спасибо: 261
Поблагодарили 314 раз(а) в 143 сообщениях
Вес репутации: 356
Ozimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючек
По умолчанию

Вот весь скрипт с моей коректировкой
Цитата:
// Разделитель между наименованием и позицией
const separator = '';
const separator1 = '№';

function CheckObject(obj) {
switch (processingType.ItemIndex) {
case 0:
return true;
case 1:
return obj.Selected;
case 2:
return obj.Selected && obj.List;
}
}

// Функция обхода всех объектов в блоке и вызова переданной функции для их
// обработки
function forEachInList(list, func) {
if (!func)
return;
for (var i = 0; i < list.Count; i++) {
var obj = list.Objects[i];
if (CheckObject(obj)) {
func(obj);
if (obj.List) {
forEachInList(obj.AsList(), func);
}
}
}
}

//функция вывода размеров панелей, с учетом заданной точности
function GetObjSize(size){
switch (sizeAccuracy.ItemIndex) {
case 0:
return Math.round(size);
case 1:
return Math.trunc(Math.round(size * 10)) / 10;
case 2:
return Math.trunc(Math.round(size * 100)) / 100;
case 3:
return Math.trunc(Math.round(size * 1000)) / 1000;
}
}

//функция вывода наименования панелей
function GetObjName(name, strLength){
if(!shortenName.Value || strLength >= name.length || strLength == 0){
return name;
} else if(shortenName.Value){
return name.slice(0, strLength);
}
}

function AdditionalInfo(obj){
var result = '';
if (addSize.Value){
result += ' ' + GetObjSize(obj.GSize.x) + 'х' + GetObjSize(obj.GSize.y) + 'х' + GetObjSize(obj.GSize.z);
}
return result;
}

// позиция и размер
function NameToPos(obj) {
obj.ArtPos = separator1 + obj.ArtPos + AdditionalInfo(obj);
}
// поз в имя
function PosToName(obj) {
obj.Name = obj.ArtPos + AdditionalInfo(obj);
}
// имя, позиция, размер
function NameAndPos(obj) {
var value = GetObjName(obj.Name, nameLength.Value) + separator + obj.ArtPos + AdditionalInfo(obj);

obj.ArtPos = value;
}
// вызов продолжения скрипта после того, как весь код отработает.

Action.Continue();
// Комбобокс для выбора типа выполнения скрипта
var combo = Action.Properties.NewCombo('Тип',
'Позиция, размер.\nПоз. в наименование\nИмя, позиция, размер.');
var shortenName = Action.Properties.NewBool('Сократить наименование');
shortenName.OnValueChange = function(){nameLength.Enabled = !nameLength.Enabled}
var nameLength = Action.Properties.NewNumber('Количество символов наименования');
nameLength.Enabled = false;
var addSize = Action.Properties.NewBool('Добавлять размеры');
addSize.OnValueChange = function(){sizeAccuracy.Enabled = !sizeAccuracy.Enabled}
var sizeAccuracy = Action.Properties.NewCombo('Точность размеров', '0\n1\n2\n3');
sizeAccuracy.Enabled = false;
var processingType = Action.Properties.NewCombo('Тип обработки',
'Все объекты\nВыделенные объекты\nВыделенные блоки');
Action.Properties.Load('props.xml');
// Кнопка запуска основного кода скрипта
Action.Properties.NewButton('Применить').OnClick = function () {
// переменная для хранения функции, которая будет обрабатывать объекты
var func;
// Запись в историю, что скрипт собирается менять модель и все объекты,
// находящиеся в ней
Undo.RecursiveChanging(Model);
// В зависимости от выбранного типа назначаем нужную функцию для обработки
// объектов
switch (combo.ItemIndex) {
case 0:
func = NameToPos;
break;
case 1:
func = PosToName;
break;
case 2:
func = NameAndPos;
break;
}
// запускаем обход всех объектов в модели с нужной функцией обработки
forEachInList(Model, func);
// Вызов завершения скрипта
Action.Properties.Save('props.xml');
Action.Finish();
}
Ozimko вне форума   Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 14.04.2019, 18:43   #1118
Olic 71
Новичок
 
Регистрация: 24.03.2016
Сообщений: 11
Сказал(а) спасибо: 4
Поблагодарили 93 раз(а) в 7 сообщениях
Вес репутации: 0
Olic 71 скоро придёт к известности
По умолчанию

Всем Добрый день.Помогите пожалуйста, как в скрипте определить толщину кромки, чтобы потом отнять ее от габарита детали.
Olic 71 вне форума   Ответить с цитированием Вверх
Старый 15.04.2019, 12:06   #1119
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 402
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Olic 71 Посмотреть сообщение
Всем Добрый день.Помогите пожалуйста, как в скрипте определить толщину кромки, чтобы потом отнять ее от габарита детали.
В цикле можно перебрать с помощью Model.Selected.AsPanel.Butts.Butts[i].Thickness, например.
Ovsyanicov вне форума   Ответить с цитированием Вверх
Старый 20.04.2019, 10:17   #1120
STORM
Пользователь
 
Аватар для STORM
 
Регистрация: 14.08.2008
Сообщений: 68
Сказал(а) спасибо: 29
Поблагодарили 15 раз(а) в 5 сообщениях
Вес репутации: 200
STORM на пути к лучшему
По умолчанию

Цитата:
Сообщение от Ozimko Посмотреть сообщение
Вот весь скрипт с моей коректировкой
Спасибо за корректировку, у меня такой вопрос, можно откорректировать размер, например размер детали 2000х100, а выдает 100х2000, спасибо.
STORM вне форума   Ответить с цитированием Вверх
Ответ

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

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

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

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

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

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


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


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

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