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

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


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

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

Сказал(а) спасибо: 31
Поблагодарили 635 раз(а) в 84 сообщениях
Версия для печати Отправить по электронной почте
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
Просмотров: 1073
Размер:	36.4 Кб
ID:	86248

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


Последний раз редактировалось systland; 26.12.2017 в 11:52.. Причина: Добавил объявление.
Просмотров: 708864
Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
Beard (20.06.2017), female (15.01.2016), Kerby (21.11.2015), v22884 (05.11.2014)
Старый 20.04.2019, 12:18   #1121
Ozimko
VIP
 
Аватар для Ozimko
 
Регистрация: 11.07.2008
Сообщений: 983
Сказал(а) спасибо: 237
Поблагодарили 288 раз(а) в 130 сообщениях
Вес репутации: 297
Ozimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючек
По умолчанию

Вот тут мои познания закончились..... Думаю что нет.
Ozimko вне форума   Ответить с цитированием Вверх
Старый 20.04.2019, 20:48   #1122
STORM
Пользователь
 
Регистрация: 14.08.2008
Адрес: Киев
Сообщений: 56
Сказал(а) спасибо: 21
Поблагодарили 15 раз(а) в 5 сообщениях
Вес репутации: 149
STORM на пути к лучшему
По умолчанию

Цитата:
Сообщение от Ozimko Посмотреть сообщение
Вот тут мои познания закончились..... Думаю что нет.
Жаль, я тоже в скриптах не силен, возможно кому-то интересно разобраться?
STORM вне форума   Ответить с цитированием Вверх
Старый 22.04.2019, 13:48   #1123
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 500
Сказал(а) спасибо: 1,005
Поблагодарили 606 раз(а) в 252 сообщениях
Вес репутации: 273
Ovsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от STORM Посмотреть сообщение
Жаль, я тоже в скриптах не силен, возможно кому-то интересно разобраться?
Добавил учет направления текстуры на панелях в скрипт с корректировками от Ozimko:
PHP код:
// Разделитель между наименованием и позицией
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 
0< list.Counti++) {
        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(namestrLength){
    if(!
shortenName.Value || strLength >= name.length || strLength == 0){
        return 
name;
    } else if(
shortenName.Value){
        return 
name.slice(0strLength);
    }
}

function 
AdditionalInfo(obj){
    var 
result '';
    var 
round sizeAccuracy.ItemIndex;
    if (
addSize.Value){
        switch(
obj.TextureOrientation){
            case 
0:
                
result += ' ' obj.GSize.x.toFixed(round) + '*' obj.GSize.y.toFixed(round) + '*' obj.GSize.z.toFixed(round);
                break;
            case 
1:
                
result += ' ' obj.GSize.x.toFixed(round) + '*' obj.GSize.y.toFixed(round) + '*' obj.GSize.z.toFixed(round);
                break;
            case 
2:
                
result += ' ' obj.GSize.y.toFixed(round) + '*' obj.GSize.x.toFixed(round) + '*' obj.GSize.z.toFixed(round);
                break;
        }
    }
    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.NamenameLength.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('props3.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(Modelfunc);
// Вызов завершения скрипта
Action.Properties.Save('props3.xml');
Action.Finish();

Ovsyanicov вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
Letos (25.04.2019), STORM (22.04.2019), vas64 (16.06.2019)
Старый 22.04.2019, 18:27   #1124
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 500
Сказал(а) спасибо: 1,005
Поблагодарили 606 раз(а) в 252 сообщениях
Вес репутации: 273
Ovsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личность
По умолчанию

Более свежая версия, в которой:
// - оптимизировано отображение пунктов на панели свойств в зависимости от выбранного режима работы скрипта и активированных чекбоксов
// - функция AdditionalInfo переименована в SizesInfo
// - добавлен учет направления текстуры панели
// - добавлен вариант Имя, Позиция, Размер от Ozimko
// - добавлена возможность отключения отображения толщины панели в размерах
// - добавлена константа prefix в которой можно задать символ перед позицией (задается в коде скрипта)
// - доработана функция "Поз. в наименование": если позиция не задана, то наименование не перезаписывается
// - оптимизировано использование префикса перед позицией: если позиция не задана, то префикс тоже не появляется

PHP код:
// Разделитель между наименованием и позицией
const separator ' ';
// Префикс перед позицией
const prefix '№';

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 
0< list.Counti++) {
        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(namestrLength){
    if(!
shortenName.Value || strLength >= name.length || strLength == 0){
        return 
name;
    } else if(
shortenName.Value){
        return 
name.slice(0strLength);
    }
}

//функция вывода размеров панелей
function SizesInfo(obj){
    var 
result '';
    var 
round sizeAccuracy.ItemIndex;
    if (
addSize.Value){
        switch(
obj.TextureOrientation){
            case 
0:
                
result += ' ' obj.GSize.x.toFixed(round) + '*' obj.GSize.y.toFixed(round);
                break;
            case 
1:
                
result += ' ' obj.GSize.x.toFixed(round) + '*' obj.GSize.y.toFixed(round);
                break;
            case 
2:
                
result += ' ' obj.GSize.y.toFixed(round) + '*' obj.GSize.x.toFixed(round);
                break;
        }
        if (
result.length && showThickness.Value){
            
result += '*' obj.GSize.z.toFixed(round);
        }
    }
    return 
result;
}

// имя в поз
function NameToPos(obj) {
    
obj.ArtPos GetObjName(obj.NamenameLength.Value) + SizesInfo(obj);
}
// поз в имя
function PosToName(obj) {
    
obj.Name = (obj.ArtPos.length obj.ArtPos SizesInfo(obj) : obj.Name);
}
// имя и поз
function NameAndPos(obj) {
    var 
value GetObjName(obj.NamenameLength.Value) + (obj.ArtPos.length separator prefix obj.ArtPos '') + SizesInfo(obj);
    
obj.Name value;
    
obj.ArtPos value;
}
// размеры в поз
function SizeToPos(obj) {
    
obj.ArtPos = (obj.ArtPos.length prefix obj.ArtPos '') + SizesInfo(obj);
}
// имя, позиция, размер
function NameAndPosAndSize(obj) {
    var 
value GetObjName(obj.NamenameLength.Value) + (obj.ArtPos.length separator prefix obj.ArtPos '') + SizesInfo(obj);
    
obj.ArtPos value;
}
// вызов продолжения скрипта после того, как весь код отработает.

Action.Continue();
// Комбобокс для выбора типа выполнения скрипта
var combo Action.Properties.NewCombo('Тип',
'Наименование в поз.\nПоз. в наименование\nОбъединить наименование и поз.\nРазмеры в поз.\nИмя, позиция, размер');
var 
shortenName Action.Properties.NewBool('Сократить наименование');
    
shortenName.OnValueChange = function(){
        if(
shortenName.Value == true){
            
nameLength.Enabled true
        
} else if (shortenName.Value == false){
            
nameLength.Enabled false
        
}
    }
var 
nameLength Action.Properties.NewNumber('Количество символов наименования');
    
nameLength.Enabled false;
var 
addSize Action.Properties.NewBool('Добавлять размеры');
    
addSize.OnValueChange = function(){
        if(
addSize.Value == true){
            
sizeAccuracy.Enabled true;
            
showThickness.Visible true;
        } else if (
addSize.Value == false){
            
sizeAccuracy.Enabled false;
            
showThickness.Visible false;
        }
    }
var 
sizeAccuracy Action.Properties.NewCombo('Точность размеров''0\n1\n2\n3');
    
sizeAccuracy.Enabled false;
var 
showThickness Action.Properties.NewBool('Указывать толщину панелей');
    
showThickness.Visible false;
var 
processingType Action.Properties.NewCombo('Тип обработки',
    
'Все объекты\nВыделенные объекты\nВыделенные блоки');
Action.Properties.Load('props4.xml');


combo.OnChange = function () {
    switch(
combo.ItemIndex) {
        case 
0:
            
shortenName.Visible true;
            
shortenName.Enabled true;
            
nameLength.Visible true;
            
nameLength.Enabled false;
            
addSize.Visible true;
            
addSize.Value true;
            
addSize.Enabled true;
            
sizeAccuracy.Enabled true;
            break;
        case 
1:
            
shortenName.Visible true;
            
shortenName.Enabled true;
            
nameLength.Visible true;
            
nameLength.Enabled false;
            
addSize.Visible true;
            
addSize.Value true;
            
addSize.Enabled true;
            
sizeAccuracy.Enabled true;
            break;
        case 
2:
            
shortenName.Visible true;
            
shortenName.Enabled true;
            
nameLength.Visible true;
            
nameLength.Enabled false;
            
addSize.Visible true;
            
addSize.Value true;
            
addSize.Enabled true;
            
sizeAccuracy.Enabled true;
            break;
        case 
3:
            
shortenName.Visible false;
            
nameLength.Visible false;
            
addSize.Value true;
            
addSize.Visible false;
            
sizeAccuracy.Enabled true;
            
showThickness.Visible true;
            break;
        case 
4:
            
shortenName.Visible true;
            
shortenName.Enabled true;
            
nameLength.Visible true;
            
nameLength.Enabled false;
            
addSize.Visible false;
            
addSize.Value true;
            
addSize.Enabled true;
            
sizeAccuracy.Enabled true;
            break;
    }
}

// Кнопка запуска основного кода скрипта
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;
        case 
3:
            
func SizeToPos;
            break;
        case 
4:
            
func NameAndPosAndSize;
            break;
    }
    
// запускаем обход всех объектов в модели с нужной функцией обработки
    
forEachInList(Modelfunc);
    
// Вызов завершения скрипта
    
Action.Properties.Save('props4.xml');
    
Action.Finish();


Последний раз редактировалось Ovsyanicov; 23.04.2019 в 12:53.
Ovsyanicov вне форума   Ответить с цитированием Вверх
14 пользователя(ей) сказали cпасибо:
Старый 26.04.2019, 22:08   #1125
Olic 71
Новичок
 
Регистрация: 24.03.2016
Сообщений: 11
Сказал(а) спасибо: 2
Поблагодарили 50 раз(а) в 7 сообщениях
Вес репутации: 0
Olic 71 скоро придёт к известности
По умолчанию

//Определяем толщину

MatXDF.SetActive();
ThickXDF = ActiveMaterial.Thickness;

MatCokol.SetActive();
ThickCokol = ActiveMaterial.Thickness;

MatStolesn.SetActive();
ThickSt = ActiveMaterial.Thickness;

MatKorp.SetActive();
Thick = ActiveMaterial.Thickness;

Подскажите пожалуйста а как определить толщину кромки.
Olic 71 вне форума   Ответить с цитированием Вверх
Старый 27.04.2019, 10:52   #1126
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 456
Сказал(а) спасибо: 113
Поблагодарили 771 раз(а) в 302 сообщениях
Вес репутации: 232
Letos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личностьLetos - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Olic 71 Посмотреть сообщение
//Определяем толщину

MatXDF.SetActive();
ThickXDF = ActiveMaterial.Thickness;

MatCokol.SetActive();
ThickCokol = ActiveMaterial.Thickness;

MatStolesn.SetActive();
ThickSt = ActiveMaterial.Thickness;

MatKorp.SetActive();
Thick = ActiveMaterial.Thickness;

Подскажите пожалуйста а как определить толщину кромки.
Не нашёл ничего лучше, кроме как создавать временную панель, на неё накатывать кромку и смотреть у кромки толщину. После этого Удалить панель. Ниже пример.
PHP код:
var Action.Properties.NewButt('Название');

var 
AddPanel(100100);
var 
butt p.AddButt(b0);
var 
bThick butt.Thickness;
DeleteObject(p
Letos вне форума   Ответить с цитированием Вверх
Старый 10.05.2019, 13:47   #1127
Sr_Arthur
Новичок
 
Аватар для Sr_Arthur
 
Регистрация: 17.10.2008
Сообщений: 29
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Sr_Arthur пока не определено
По умолчанию Скрипт поиска деталей

Друзья требуется помощь в написании скрипта, точней в его отладке. Сразу скажу что сам в этом полный нуб, просто появилась нужда в поиске деталей определенного размера в изделии, и я открыв несколько стандартных скриптов методом тыка своял свой скрипт:

var a=500
var b=1000
Model.forEachPanel(function(obj) {
if (obj.ContourWidth == a)
(obj.ContourHight == b)
obj.Selected = true;
});

скрипт заработал и тогда решил приделать к нему кнопки и поля ввода, получилось следующее, но теперь ни фига не работает и я в отчаянии

Edit1 = NewFloatInput("Размер 1");
Edit2 = NewFloatInput("Размер 2");

Btn1 = NewButtonInput("Найти");
Btn1.OnChange = (function(obj) {
if (obj.ContourWidth == Edit1.Value)
(obj.ContourHight == Edit2.Value)
obj.Selected = true;
});


Action.Continue();
Sr_Arthur вне форума   Ответить с цитированием Вверх
Старый 10.05.2019, 16:39   #1128
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 500
Сказал(а) спасибо: 1,005
Поблагодарили 606 раз(а) в 252 сообщениях
Вес репутации: 273
Ovsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личностьOvsyanicov - просто великолепная личность
По умолчанию

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

var a=500
var b=1000
Model.forEachPanel(function(obj) {
if (obj.ContourWidth == a)
(obj.ContourHight == b)
obj.Selected = true;
});

скрипт заработал и тогда решил приделать к нему кнопки и поля ввода, получилось следующее, но теперь ни фига не работает и я в отчаянии

Edit1 = NewFloatInput("Размер 1");
Edit2 = NewFloatInput("Размер 2");

Btn1 = NewButtonInput("Найти");
Btn1.OnChange = (function(obj) {
if (obj.ContourWidth == Edit1.Value)
(obj.ContourHight == Edit2.Value)
obj.Selected = true;
});


Action.Continue();
Переделал, но в 10-й версии. Проверьте работу скрипта в 8-ке.

PHP код:
Model.UnSelectAll();
var 
props Action.Properties;
var 
Edit1 props.NewNumber('Размер 1');
var 
Edit2 props.NewNumber('Размер 2');
var 
Btn1 props.NewButton('Найти');
Btn1.OnClick = function(){
    
Model.forEachPanel(function(obj){
    if (
obj.ContourWidth == Edit1.Value && obj.ContourHeight == Edit2.Value){
        
obj.Selected true;
    }
    });
    
Action.Finish();
}

Action.Continue(); 
Ovsyanicov вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Sr_Arthur (11.05.2019)
Старый 11.05.2019, 10:38   #1129
Sr_Arthur
Новичок
 
Аватар для Sr_Arthur
 
Регистрация: 17.10.2008
Сообщений: 29
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Sr_Arthur пока не определено
По умолчанию

Огромнейшее вам спасибо, все работает как часики. Если не затруднит хотел еще задать один вопрос:

Хотел немного модернизировать скрипт, чтобы он еще выдавал сообщение о количестве выделенных объектов, для этого после этого действия obj.Selected = true; дописал "alert (selection.count);" но ничего не сработало, для проверки вместо selection.count написал текст '123', и все сработало ( кстати только почему то странно что сообщение выходит 2 раза). С сайта базиса скачал пдф по скриптам, и там написано что у объекта obj есть функция ColectionCount, но при ее вводе выходит сообщение что команда не идентифицирована.
p.s. и что можете посоветовать чтобы немного разобраться в js
Sr_Arthur вне форума   Ответить с цитированием Вверх
Старый 11.05.2019, 11:29   #1130
MebelitBY
Новичок
 
Регистрация: 09.11.2014
Сообщений: 20
Сказал(а) спасибо: 4
Поблагодарили 4 раз(а) в 4 сообщениях
Вес репутации: 0
MebelitBY пока не определено
По умолчанию

Доброе время суток, уважаемые форумчане. Очень прошу помочь в разработке очень полезного, на мой взгляд, скрипта. Идея в том, чтобы автоматически заменять номер позиции на габаритные размеры заготовки. Взаранее спасибо всем откликнувшимся.
MebelitBY вне форума   Ответить с цитированием Вверх
Ответ

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


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


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