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

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


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

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

Сказал(а) спасибо: 31
Поблагодарили 633 раз(а) в 83 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 11: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
Просмотров: 1016
Размер:	36.4 Кб
ID:	86248

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


Последний раз редактировалось systland; 26.12.2017 в 10:52.. Причина: Добавил объявление.
Просмотров: 666305
Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
Beard (20.06.2017), female (15.01.2016), Kerby (21.11.2015), v22884 (04.11.2014)
Старый 07.08.2019, 10:17   #1151
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 338
Сказал(а) спасибо: 92
Поблагодарили 601 раз(а) в 220 сообщениях
Вес репутации: 181
Letos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всем
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Выдает ошибку undefined. Фрагмент во вложении. Планирую написать скрипт с выбором подъемных механизмов и сразу расчет по мощности, но не получается изменить имя фрагмента, чтоб дописать мощность.
На основе вашего фрагмента получился такой код:

Код


PHP код:
// Путь к файлу фрагмента
const filename 'D:\\Газлифт л.fr3d';

// Аналог команды "Разрушить блок"
function DestroyBlock(block){
    
// Если блок - Модель, то ничего не делаем, иначе посыпятся аксессы
    
if (block == Model)
        return;
    
// Флаг, создан ли блок скриптом (находится во временной области модели)
    
var blockIsScript block.IsOwner(Model.Temp);
    
Undo.Changing(block);
    for (var 
0block.Counti++){
        var 
obj block.Objects[i];
        
//Если не скриптовый блок, сохраняем изменения объекта в истории вручную
        
if (!blockIsScript){
            
Undo.Changing(obj);
            
Undo.OwnerChanging(obj);
        }
        
obj.ReTransform(obj.Ownerblock.Owner);
        
obj.Owner block.Owner;
    }
    
DeleteObject(block);
}


var 
panel Model.Objects[1];
var 
furn OpenFurniture(filename);
var 
block furn.Mount1(panel0000);
//block.Objects[0].Name = 'Новое имя';

// Дописываем " Мощность" к текущему имени блока
block.Objects[0].Name += ' Мощность';
// Разрушаем "лишний" блок, в который обёрнут фрагмент.
DestroyBlock(block); 
[свернуть]


Попробуйте у себя (заменив путь к фрагменту, если он отличается, конечно), если не заработает, приложите скрин с ошибкой и, наверное, версию Базиса (хотя, кмк, такой код должен работать во всех версиях).
Я проверял на 8 демо (8.0.7.9649 от 25.08.14)
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Старый 07.08.2019, 17:47   #1152
Максим Геннадьевич
Пользователь
 
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 68
Сказал(а) спасибо: 23
Поблагодарили 51 раз(а) в 14 сообщениях
Вес репутации: 35
Максим Геннадьевич скоро придёт к известности
По умолчанию

Спасибо. Отлично меняет название , но в смету переходит материал, то из чего сделан фрагмент, а не имя. Конечно буду пытаться это решить ,хотя есть функции, с которыми не знаком в этом скрипте.
Можно было фрагмент сделать фурнитурой и там пытаться переименовать, но когда фрагмент становиться фурнитурой, в режиме "невидимые тонкие" цилиндрические детали не видно на модели. Может я не знаю как правильно?
Максим Геннадьевич вне форума   Ответить с цитированием Вверх
Старый 09.08.2019, 11:51   #1153
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 132
Сказал(а) спасибо: 66
Поблагодарили 64 раз(а) в 24 сообщениях
Вес репутации: 127
wizardpnz скоро придёт к известности
По умолчанию

цилиндрические детали не видно на модели

в базис 10 это починили
wizardpnz вне форума   Ответить с цитированием Вверх
Старый 01.09.2019, 05:03   #1154
Golder1973
Новичок
 
Регистрация: 29.07.2008
Сообщений: 11
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Golder1973 пока не определено
По умолчанию

Цитата:
Сообщение от Ovsyanicov Посмотреть сообщение
Проблема возникает из-за неточности чисел с плавающей запятой.
Я предполагал, что такие проблемы возможны, но из-за нехватки времени выложил недоработанный код.

Добавил функцию округления размеров панелей до заданного количества знаков после запятой. По умолчанию 1.
PHP код:
const digits 1//количество знаков после запятой

//функция округления размеров панелей до заданного количества знаков после запятой
function GetSize(size){
    return 
size.toFixed(digits)
}

Model.UnSelectAll();
var 
props Action.Properties;
var 
Length props.NewNumber('Длина');
var 
Width props.NewNumber('Ширина');
var 
Mode props.NewBool('Учитывать текстуру');
var 
Btn1 props.NewButton('Найти');
Btn1.OnClick = function(){
    if(!
Mode.Value){
    
//поиск без учета направления текстуры
        
Model.forEachPanel(function(obj){
            if (
GetSize(obj.ContourWidth) == Length.Value && GetSize(obj.ContourHeight) == Width.Value){
                
obj.Selected true;
            } else if (
GetSize(obj.ContourHeight) == Length.Value && GetSize(obj.ContourWidth) == Width.Value){
                
obj.Selected true;
            }
        }
        );
    } else {
    
//поиск с учетом направления текстуры
        
Model.forEachPanel(function(obj){
            switch(
obj.TextureOrientation){
                case 
1:
                    if(
GetSize(obj.ContourWidth) == Length.Value && GetSize(obj.ContourHeight) == Width.Value)
                    
obj.Selected true;
                    break;
                case 
2:
                    if(
GetSize(obj.ContourHeight) == Length.Value && GetSize(obj.ContourWidth) == Width.Value)
                    
obj.Selected true;
                    break;
                default:
                    if(
GetSize(obj.ContourHeight) == Length.Value && GetSize(obj.ContourWidth) == Width.Value)
                    
obj.Selected true;
                    break;
            }
        }
        );
    }
    
alert('Найдено панелей: ' Model.SelectionCount); //закомментировать строку, если не нужно выводить сообщение
    
Action.Finish();
}

Action.Continue(); 
Очень полезный скрипт но работает как то выборочно. Может потому что Базис 8н ?
Golder1973 вне форума   Ответить с цитированием Вверх
Старый 02.09.2019, 09:30   #1155
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 338
Сказал(а) спасибо: 92
Поблагодарили 601 раз(а) в 220 сообщениях
Вес репутации: 181
Letos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всем
По умолчанию

Цитата:
Сообщение от Golder1973 Посмотреть сообщение
Очень полезный скрипт но работает как то выборочно. Может потому что Базис 8н ?
Можете приложить минимальный пример, на котором этот скрипт работает некорректно? От версии Базиса зависеть не должно.
Letos вне форума   Ответить с цитированием Вверх
Старый 04.09.2019, 23:32   #1156
sergio1982
Новичок
 
Регистрация: 01.09.2019
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
sergio1982 пока не определено
По умолчанию

Здравствуйте. А кто нибудь сможет подсказать новичку, как получить панели, пласти которых прилегают к торцам выделенных панелей? В итоге хочется получить места их стыковки для установки крепежа.

Добавлено через 18 минут
По вопросу в справке нашёл только IsButtVisible, она к сожалению не возвращает панель.
И по ней тоже вопрос:
Цитата:
Входные параметры:
index — индекс кромки,
dist — условие закрытости.

Кромка считается незакрытой, если на расстоянии, превышающем dist от нее
отсутствуют панели.
Почему при значении dist = 0 или даже 0,5 торец считается незакрытым, хотя и прилегает вплотную к пласти.
sergio1982 вне форума   Ответить с цитированием Вверх
Старый 05.09.2019, 09:51   #1157
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 338
Сказал(а) спасибо: 92
Поблагодарили 601 раз(а) в 220 сообщениях
Вес репутации: 181
Letos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всемLetos - это имя известно всем
По умолчанию

Цитата:
Сообщение от sergio1982 Посмотреть сообщение
Здравствуйте. А кто нибудь сможет подсказать новичку, как получить панели, пласти которых прилегают к торцам выделенных панелей? В итоге хочется получить места их стыковки для установки крепежа.

Добавлено через 18 минут
По вопросу в справке нашёл только IsButtVisible, она к сожалению не возвращает панель.
И по ней тоже вопрос:

Почему при значении dist = 0 или даже 0,5 торец считается незакрытым, хотя и прилегает вплотную к пласти.
Добрый день. На данный момент в БМ нет стандартных функций для определения прилегающих панелей.

Насчет IsButtVisible: у меня на расстоянии даже 0.0001 нормально определяет закрытость. Моё предположение: если вы в скрипте написали 0,5 (через запятую), то приходит в функцию всё равно 0, а 5 идёт следующим параметром. Если же вы написали через точку 0.5, то не знаю, в чём может быть причина. Может, тогда скинете пример, где панели прилегают друг к другу, а скрипт считает все торцы открытыми?
Letos вне форума   Ответить с цитированием Вверх
Старый 05.09.2019, 19:37   #1158
sergio1982
Новичок
 
Регистрация: 01.09.2019
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
sergio1982 пока не определено
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Моё предположение: если вы в скрипте написали 0,5 (через запятую)
Да, вы правы, детская ошибка.

Цитата:
Сообщение от Letos Посмотреть сообщение
в БМ нет стандартных функций для определения прилегающих панелей.
Печалька. В общем надо перебирать все панели, и каким то лютым алгоритмом вычислять стыковку по координатам.
sergio1982 вне форума   Ответить с цитированием Вверх
Старый 09.10.2019, 10:15   #1159
ne932s
Новичок
 
Регистрация: 08.10.2019
Сообщений: 11
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
ne932s пока не определено
По умолчанию

Кто может написать скрипт.Отзовитесь!

Добавлено через 11 минут
sborchik, нужно написать скрипт. возможно?

Добавлено через 15 минут
помогите очень нужно!
ne932s вне форума   Ответить с цитированием Вверх
Старый 09.10.2019, 10:20   #1160
Uncle
Модератор
 
Аватар для Uncle
 
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 9,044
Сказал(а) спасибо: 13,845
Поблагодарили 17,425 раз(а) в 5,595 сообщениях
Вес репутации: 4530
Uncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспорима
По умолчанию

Цитата:
Сообщение от ne932s Посмотреть сообщение
Кто может написать скрипт.Отзовитесь!
Оставляйте заявку здесь.
Или воспользуйтесь предложениями
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Uncle вне форума   Ответить с цитированием Вверх
Ответ

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

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

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

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

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

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


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


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