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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 08:56  
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 06.06.2017, 08:56
Рейтинг: ()

Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
__________________


Последний раз редактировалось systland; 26.12.2017 в 11:52..
Просмотров: 434174
Ответить с цитированием Вверх
Старый 06.05.2019, 03:56   #401
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Подскажите, пожалуйста, команду

Цвет необлицованных кромок ?

Задать цвет, цветом материала.

Последний раз редактировалось v22884; 06.05.2019 в 07:17.
v22884 вне форума   Ответить с цитированием Вверх
Старый 06.05.2019, 11:56   #402
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от IStiv Посмотреть сообщение
интресно , попробовал подумать об этой задаче не "в лоб" , прикольно бы было делать какой нибудь HTTP запрос из Базиса, а он бы возвращал площадь или библиотеку из NODE репозитория.
по первому варианту , нашел API правда оно платное, но площади пишут что считать умеют, правда из STL.
https://github.com/pushkarparanjpe/m...3D-API-clients

а вот еще, Базис ведь использует C3D ядро, наверное у него есть уже готовые методы для расчета площадей, просто он в JS API не "торчат".

@Letos как думаете варианты выше юзабельны?
С HTTP-запросами я игрался и там есть одна проблема - создать всё это можно, но HTTP приём/отправка делается через асинхронные функции (как таймауты), а все асинхронные функции работают в БМ криво:
  • Если в теле скрипта сделать приём-отправку, то БМ зависнет, пока все асинхронные функции не завершатся. Под спойлером пример - запуск таймера, который пишет в лог каждую секунду. На 21-й секунде таймер принудительно грохается, чтобы не повесить БМ насовсем (но все равно перед запуском скрипта лучше сохранить несохранённое)

    Код


    PHP код:
    var timers = require('timers');
    var 
    count 0;
    var 
    interval timers.setInterval(()=>{
        
    count++;
        
    system.log(count);
        if (
    count 20){
            
    timers.clearInterval(interval);
        }
    }, 
    1000); 
    [свернуть]
  • Если сделать приём-отправку в обработчике после выполнения тела скрипта - код асинхронного вызова не выполнится. Пример - на обработчике кнопки в свойствах повесить запуск интервала из кода сверху. При нажатии на кнопку обработчик в интервале не вызовется и в лог ничего не будет выводиться.Аккуратнее - у меня после отмены выполнения этого скрипта вышел AccessVioaltion at node.dll.

    Код


    PHP код:
    Action.Continue();
    Action.Properties.NewButton('Click').OnClick = function(){
        var 
    timers = require('timers');
        var 
    count 0;
        var 
    interval timers.setInterval(()=>{
            
    count++;
            
    system.log(count);
            if (
    count 20){
                
    timers.clearInterval(interval);
            }
        }, 
    1000);

    [свернуть]
  • В последний момент подумал завернуть обработчик интервала с первого примера в Action.AsyncExec(). Результат - БМ наглухо повис. Ниже пример как НЕ стоит делать:

    Код


    PHP код:
    var timers = require('timers');
    var 
    count 0;
    function 
    NewTick(){
        
    Action.AsyncExec(AsyncTick);
    }
    var 
    interval timers.setInterval(NewTick1000);
    function 
    AsyncTick(){
        
    count++;
        
    system.log(count);
        if (
    count 20){
            
    timers.clearInterval(interval);
        }

    [свернуть]

    Через отладчик посмотрел - всегда приходит на NewTick(), но никогда не приходит на AsyncTick(). Видимо, интервал своим выполнением блокирует выполнение Action.AsyncExec(), поэтому и виснет.

Остаётся лишь надеяться, что когда-нибудь и это будет вместе с возможностью стрелять себе в ногу более изощрённо
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Ovsyanicov (07.05.2019), v22884 (06.05.2019)
Старый 06.05.2019, 12:08   #403
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
Подскажите, пожалуйста, команду

Цвет необлицованных кромок ?

Задать цвет, цветом материала.
А что за Цвет необлицованных кромок? Я просто с этим параметром не сталкивался, поэтому интересно, где его можно найти, задать вручную.
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
v22884 (07.05.2019)
Старый 06.05.2019, 13:51   #404
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
А что за Цвет необлицованных кромок? Я просто с этим параметром не сталкивался, поэтому интересно, где его можно найти, задать вручную.
Для удобства визуального контроля что окантовали, а что нет.
Миниатюры
Безымянный.jpg  
v22884 вне форума   Ответить с цитированием Вверх
Старый 06.05.2019, 15:16   #405
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
Для удобства визуального контроля что окантовали, а что нет.
Кнопка, которую вы ищете, называется "BtnDefButtMaterial", добывается так:
PHP код:
var mainForm Action.Control.Owner.Owner;
var 
btn mainForm.FindComponent('BtnDefButtMaterial'); 
НО:
btn.ExecuteAction(), btn.UpdateAction() возвращают false (может, так и надо?) и никаких других функций (типа сэмулировать нажатие) нет. Отсюда делаю вывод, что скриптом нажать эту кнопку не получится.

Бонусом код, который выводит список контролов, компонентов и тд (хотя вроде уже было на форуме подобное). Рекомендую функцию "AddComponents", который выводит древовидный список компонентов (для главной формы список около 1500 компонентов) с проверкой, что Owner соответствует тому объекту, который передавался в функцию.

Код


PHP код:
const filename 'components.txt'
var content '';
var 
mainForm Action.Control.Owner.Owner;
if (
mainForm){
    for (var 
0mainForm.ComponentCounti++){
        
content += mainForm.Components[i].Name '\n'
    
}
}

content += '==========================================================\n';
function 
AddComponents(ctrltabs){
    for (var 
0ctrl.ComponentCounti++){
        
subCtrl ctrl.Components[i];
        if (
subCtrl.Owner == ctrl){
            
content += '\t'.repeat(tabs) + subCtrl.Name '\n';
            
AddComponents(subCtrltabs 1);
        }
    }
}
AddComponents(mainForm0);

content += '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n';
function 
AddControls(ctrltabs){
    for (var 
0ctrl.ControlCounti++){
        
subCtrl ctrl.Controls[i];
        
content += '\t'.repeat(tabs) + subCtrl.Name '\n';
        
AddControls(subCtrltabs 1);
    }
}
AddControls(mainForm0);
// AddControls(mainForm.Owner);

require('fs').writeFileSync(filenamecontent); 
[свернуть]
Letos вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
maxgmv (06.05.2019), rysla._ua (25.04.2023), v22884 (07.05.2019), wizardpnz (07.05.2019), zorro (06.05.2019)
Старый 08.05.2019, 11:43   #406
bbb i ko
VIP
 
Регистрация: 04.07.2012
Сообщений: 1,956
Сказал(а) спасибо: 3,990
Поблагодарили 3,545 раз(а) в 1,167 сообщениях
Вес репутации: 1048
bbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспорима
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Попытался сделать пример подсчёта площади поверхности для выделенного объекта
а как сделать обход выделенных объектов? получается если мы выделяем корневой элемент, то результат выполнения скрипта = 0:

если элемент в структуре, то считается площадь:
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 08.05.2019, 14:27   #407
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от bbb i ko Посмотреть сообщение
а как сделать обход выделенных объектов?
Можно так:
PHP код:
//Обработка объекта или вложенных объектов.
function ProcessObject(obj){
    if (
obj.List){
        for (var 
0obj.AsList().Counti++){
            
ProcessObject(obj[i]);
        }
    }
    else    
        
DoSomething(obj); // функция, которая что-то делает с выделенным объектом
}

for (var 
0Model.SelectionCounti++){
    var 
obj Model.Selections[i];
    
ProcessObject(obj);

Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
bbb i ko (08.05.2019), Ovsyanicov (08.05.2019)
Старый 08.05.2019, 20:10   #408
bbb i ko
VIP
 
Регистрация: 04.07.2012
Сообщений: 1,956
Сказал(а) спасибо: 3,990
Поблагодарили 3,545 раз(а) в 1,167 сообщениях
Вес репутации: 1048
bbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспорима
По умолчанию

А как можно воспользоваться данным скриптом для пользовательского параметра?
что в пользовательском параметре будет представлять из себя Obj=Model.Selections[i]?
Пробовал так:
var obj = Panel; // работает только для объектов построенных панелью, не видит профилей и прочего
var obj = Object3/Extrusion; // не видит ни панелей, ни профилей .. ничего
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 09.05.2019, 14:39   #409
IStiv
Пользователь
 
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
IStiv скоро придёт к известности
По умолчанию

Цитата:
Сообщение от bbb i ko Посмотреть сообщение
А как можно воспользоваться данным скриптом для пользовательского параметра?
что в пользовательском параметре будет представлять из себя Obj=Model.Selections[i]?
Пробовал так:
var obj = Panel; // работает только для объектов построенных панелью, не видит профилей и прочего
var obj = Object3/Extrusion; // не видит ни панелей, ни профилей .. ничего
эм...что есть пользовательский параметр?
я под этим могу предствить две вещи:
- данные от юзера(например из формы) - они пишутся в переменную.
- UserProp - который можно навешать на объект базиса.

для обхода и сортировки по типам , я использую такой код
PHP код:
if (obj instanceof TFurnPanel) {
// че то делаем    

которым можно определить тип Панель или блок или профиль.
IStiv вне форума   Ответить с цитированием Вверх
Старый 09.05.2019, 14:53   #410
bbb i ko
VIP
 
Регистрация: 04.07.2012
Сообщений: 1,956
Сказал(а) спасибо: 3,990
Поблагодарили 3,545 раз(а) в 1,167 сообщениях
Вес репутации: 1048
bbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспорима
По умолчанию

Цитата:
Сообщение от IStiv Посмотреть сообщение
эм...что есть пользовательский параметр?
Пользовательские параметры - есть такой справочник в Смете. Параметрами определяются объемы операций, соответственно, есть предустановленные параметры, а есть пользовательские - где вы можете создать свой параметр и использовать его для определения объема операции. В данном случае хочу сделать такой параметр, который будет определять площадь поверхности объекта.
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Ответ

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


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-Мебельщик 10 systland Базис-мебельщик 10 1264 13.03.2024 22:48
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7 2230 29.11.2019 10:37
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 10:08


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


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

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