Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 09.01.2024 в 11:56..
Добрый день. не пойму где ошибка.. Не силен в скриптах
Скрытый текст
function getart(obj) {
var n = obj.Count;
for (var i = 0; i < n; i++) {
var pan = obj.Objects[i];
if (pan instanceof TFurnPanel)
{
alert(222);
return [pan.Designation,pan.ArtPos];
}
else if ((pan instanceof TFurnBlock) || (pan instanceof TDraftBlock) || (pan instanceof TParamBlock3D))
{
alert(333);
let [oboz,art] = call(getart(pan));
alert(444);
//return [oboz,art];
}
}
}
[свернуть]
функция должна перемалывать внутреннее содержимое блока.. До тех пор пока не найдет первую панель с возвратом артикула . На этапе alert(444); цикл оттормаживается
Добрый день. не пойму где ошибка.. Не силен в скриптах
Скрытый текст
function getart(obj) {
var n = obj.Count;
for (var i = 0; i < n; i++) {
var pan = obj.Objects[i];
if (pan instanceof TFurnPanel)
{
alert(222);
return [pan.Designation,pan.ArtPos];
}
else if ((pan instanceof TFurnBlock) || (pan instanceof TDraftBlock) || (pan instanceof TParamBlock3D))
{
alert(333);
let [oboz,art] = call(getart(pan));
alert(444);
//return [oboz,art];
}
}
}
[свернуть]
функция должна перемалывать внутреннее содержимое блока.. До тех пор пока не найдет первую панель с возвратом артикула . На этапе alert(444); цикл оттормаживается
После алерта 444, return стоит в комментарии. В итоге функция ничего не возвращает.
Тут вообще не понятно, вы пишете про артикул, а в функции идёт работа с обозначением и позицией.
Опишите что нужно по итогу.
Подскажите, кто знает, есть ли какая зависимость между координатами контура панели, координатами начальной и конечной точек траектории паза и координатами профиля паза?
Суть вопроса в определении с помощью скрипта проходит ли паз по панели, если да, то с каким отступом от стороны, вдоль которой он построен.
Пример. Строим обычный паз под заднюю стенку ХДФ/ДВП на элемент контура (траектория паза совпадает с элементом контура панели) со смещением, например, 16 мм. Паз появляется на панели. Далее, если отредактировать траекторию, а именно поменять ее начальную и конечную точку, то паз пропадает с панели из-за того, что меняются координаты его профиля, что видно при его редактировании, базис строит его симметрично оси Y.
Есть.
ЛСК панели. Элементы контура панели имеют координаты относительно ЛСК панели. Координаты траектории паза также относительно ЛСК панели.
Тут скорее нужно перевести координаты сечения паза в координаты панели и далее смотреть находится ли контур паза внутри контура панели, либо какие то точки контура паза внутри контура панели..
собственно пришел вот к чему: не могу массив вытащить из функции:
Цитата:
obj = Model.Selected
let Arr = getart(obj);
alert (Arr[1]); // а тут нет
function getart(obj) {
var n = obj.Count;
for (var i = 0; i < n; i++) {
var pan = obj.Objects[i];
if (pan instanceof TFurnPanel)
{
let Arr = [];
Arr[1] = pan.Designation;
Arr[2] = pan.ArtPos;
alert (Arr[1]); /// тут работает
return Arr;
}
else if ((pan instanceof TFurnBlock) || (pan instanceof TDraftBlock) || (pan instanceof TParamBlock3D))
{
let Arr = getart(pan);
Всю голову сломал, думаю нужно вытащить материал из pan и сделать его активным, но как сделать, вот вопрос. Это часть кода.
PHP код:
var pan = GetPanel("Укажите панель");
var form = NewForm() ;
var Props = form.Properties;
form.Width = 337;
form.Height = 200;
form.Caption = "Window1";
form.OKButton = true;
form.CancelButton = true;
//Нужно материал pan, чтоб отображался в Material1,
// а не брался из используемого материала
var Material1 = Props.NewMaterial("Название",pan.MaterialName);
Material1.SetLayout(61, 59, 200, 20);
Material1.OnChange = function (){
alert('изменения');
}
//-- window Window1 events
form.OKButton = function (){
form.OnFinish();
}
form.Show();
Всю голову сломал, думаю нужно вытащить материал из pan и сделать его активным, но как сделать, вот вопрос. Это часть кода.
Так как с использованием метода NewMaterial не получается решить задачу, то пошёл другим путём. С костылями, конечно, но свою функцию выполняет, вроде бы: