Форум профессиональных мебельщиков 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
Просмотров: 1497
Размер:	36.4 Кб
ID:	86248

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


Последний раз редактировалось systland; 26.12.2017 в 11:52.. Причина: Добавил объявление.
Просмотров: 1390220
Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 20.04.2019, 11:18   #1121
Ozimko
VIP
 
Аватар для Ozimko
 
Регистрация: 11.07.2008
Сообщений: 1,019
Сказал(а) спасибо: 261
Поблагодарили 314 раз(а) в 143 сообщениях
Вес репутации: 357
Ozimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючекOzimko как роза среди колючек
По умолчанию

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

Цитата:
Сообщение от Ozimko Посмотреть сообщение
Вот тут мои познания закончились..... Думаю что нет.
Жаль, я тоже в скриптах не силен, возможно кому-то интересно разобраться?
STORM вне форума   Ответить с цитированием Вверх
Старый 22.04.2019, 12:48   #1123
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордится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 вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
bars73 (18.05.2020), Letos (25.04.2019), STORM (22.04.2019), vas64 (16.06.2019)
Старый 22.04.2019, 17:27   #1124
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордится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 в 11:53.
Ovsyanicov вне форума   Ответить с цитированием Вверх
16 пользователя(ей) сказали cпасибо:
Старый 26.04.2019, 21:08   #1125
Olic 71
Новичок
 
Регистрация: 24.03.2016
Сообщений: 11
Сказал(а) спасибо: 4
Поблагодарили 93 раз(а) в 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, 09:52   #1126
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордится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, 12:47   #1127
Sr_Arthur
Пользователь
 
Аватар для Sr_Arthur
 
Регистрация: 17.10.2008
Сообщений: 30
Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 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, 15:39   #1128
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордится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, 09:38   #1129
Sr_Arthur
Пользователь
 
Аватар для Sr_Arthur
 
Регистрация: 17.10.2008
Сообщений: 30
Сказал(а) спасибо: 4
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
Sr_Arthur пока не определено
По умолчанию

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

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

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

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 9 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1442 04.04.2024 11:28
БАЗИС 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


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


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

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