Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
Новшества Базис Мебельщик версии 2024:
5.«Использовать новый движок скриптов (в бета-тесте)» - Node.js v20.2.0
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 02.05.2024 в 11:30..
"cwd" - "текущая рабочая директория", в параметры запуска передаётся путь к скрипту относительно этой папки. В моём случае это другой диск, чтобы передавался полный путь скрипта, ибо он лежит на диске D. Возможно, подойдёт путь к папке скриптов.
"runtimeArgs" - дополнительные аргументы запуска. "--inspect-brk" - запуск отладки с остановкой на первой строке скрипта (для ожидания подключения, если точку останова не ставить, то в VSCode не остановится на первой строке), 5858 - порт отладки, продублирован в одноимённом параметре.
НО: При отладке скрипта в уже запущенном базисе у меня произошло следующее - скрипт остановился на первой точке останова (на первой же строке), через пару мгновений забил на нёё и продолжил выполнение. Через раз сыпятся аксессы.
Если запускать с выключенным БМ (то есть, VSCode запускает БМ и при завершении/отмене скрипта грохает процесс БМ), то всё нормально.
if (obj instanceof TFastener) console.log(obj.Name)
});
зависает если много предметов на сцене, или много нельзя в консоль посылать?
Добавлено через 15 минут
[INSPECTOR_ASYNC_STACK_TRACES_NOT_AVAILABLE] Warning: Warning: Async stack traces in debugger are not available on 32bit platforms. The feature is disabled.
if (obj instanceof TFastener) console.log(obj.Name)
});
зависает если много предметов на сцене, или много нельзя в консоль посылать?
Консоль, по сути своей, - буфер. Поэтому, возможно, она переполняется и из-за этого зависает. Попробуйте так:
PHP код:
var log = '';
Model.forEach(function (obj) {
if (obj instanceof TFastener)
log += obj.Name + '\n';
});
console.log(log);
PS. Скорее всего так же будет зависать, поэтому вместо console.log можно добавить следующий изврат (В конце выполнения скрипта запускается асинхронный вывод: при записи в консоль идёт следующая итерация таймера и в это время в лог выводится сообщение и буфер консоли очищается. Но это Костыль с большой буквы.):
PHP код:
Action.Continue();
var splittedlog = log.split('\n');
var i = 0;
var inter = require('timers').setInterval(()=>{
console.log(splittedlog[i]);
i++;
if (i>= splittedlog.length){
require('timers').clearInterval(inter);
Action.Finish();
}
}, 1);
Коллеги, здравствуйте.
Подскажите участок кода, который позволяет выбрать плоскость панели и поместить на нее фрагмент из внешнего файла, который будет подогнан под габариты этой плоскости. Как бы облицевать плоскость фрагментом.
Еще интересует вывод имени "Типа" блока, к которому принадлежит выделяемая панель с плоскостью. Как до него добраться через скрипт?
всем привет.
A синхронные функции не могли же сломаться в БМ 11 или могли?
тестирую на простом случае, всякие fs.writeFileSync() все вроде норм, но на реальном скрипте с большой логикой тот же fs.writeFileSync() не отрабатывает .
Однако если идти отладчиком, пошагово , я так понимаю вызовы "успевают" выполняться и fs.writeFileSync() отрабатывает.
Скрытый текст
PHP код:
var pth = require('path'); var fs = require('fs');
всем привет.
A синхронные функции не могли же сломаться в БМ 11 или могли?
тестирую на простом случае, всякие fs.writeFileSync() все вроде норм, но на реальном скрипте с большой логикой тот же fs.writeFileSync() не отрабатывает .
Однако если идти отладчиком, пошагово , я так понимаю вызовы "успевают" выполняться и fs.writeFileSync() отрабатывает.
Скрытый текст
PHP код:
var pth = require('path');
var fs = require('fs');
не уверен что верно понял вопрос.
все объекты выше в дереве модели можно получить через .Owner
Скрытый текст
PHP код:
var pn = GetPanel();
var pnOwner = pn.Owner;
if (pnOwner instanceof TFurnBlock) {
alert("Hi I am BM block, my name is - " + pnOwner.Name);
}
[свернуть]
Добавлено через 3 минуты
Цитата:
Сообщение от Vogel
не уверен что верно понял вопрос.
все объекты выше в дереве модели можно получить через .Owner
Я имею ввиду Свойсво Блока, которое пользователь задает самостоятельно для Фрагментов. По нему еще происходит корректная замена одного блока на другой.