Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 09.01.2024 в 11:56..
как получить данные габарит изделия?
можно получить свойства габаритной рамки Model.Objects[0].Width
Model.Objects[0].Height
Model.Objects[0].Depth
но её может и не быть тогда будет undefined
исследовал объект Action, но видимо не там или очень глубоко
тем не менее другие данные из этого окна получить можно
как получить данные габарит изделия?
можно получить свойства габаритной рамки Model.Objects[0].Width
Model.Objects[0].Height
Model.Objects[0].Depth
но её может и не быть тогда будет undefined
исследовал объект Action, но видимо не там или очень глубоко
тем не менее другие данные из этого окна получить можно
По сути, это будут точки минимум/максимум вложенных элементов (также, как и у блока). Разницы между GMin и GabMin у модели быть не должно, ибо её ЛСК равна ГСК (в теории, возможно изменить поворот всей модели, но на практике таких случаев я не встречал).
Я все таки пошел по пути объектов. Меньше текста в коде получается.
Написал такой код:
PHP код:
FA=[];
pat=[];
for (var j = 0; j< 3; j++){
for (var i = 0; i < 3; i++){
pat[i]=new Array();
pat[i]["tip"]=i+j;
}
console.log(pat);
FA[j]=pat;
}
console.log(FA);
На выходе хочу получить
0,1,2
1,2,3
2,3,4
А получаю
2,3,4
2,3,4
2,3,4
Подскажите пожалуйста как исправить ситуацию?
У вас pat не меняется, соответственно на каждой итерации цикла идёт работа с одним и тем же массивом. Исправить можно путём инициализации этой переменной в самом цикле:
PHP код:
FA = [];
for (var j = 0; j < 3; j++) {
var pat = [];
for (var i = 0; i < 3; i++) {
pat[i] = new Array();
pat[i]["tip"] = i + j;
}
console.log(pat);
FA[j] = pat;
}
console.log(FA);
Не пониманию, зачем такое извращение - создавать объект(!) типа массив, чтобы не использовать его индексные свойства и использовать его как объект. Проще тогда уж создавать объект. Например (вместо процитированного кода):
PHP код:
pat[i]={
tip: i+j
};
Имхо, сразу понятно, что такое pat[i].
P.S. Не знаю, какую высшую цель вы преследуете и, может, потом этот объект будет использоваться как массив, но в текущем контектсе решение выглядит странным и запутанным.
Не пониманию, зачем такое извращение - создавать объект(!) типа массив, чтобы не использовать его индексные свойства и использовать его как объект. Проще тогда уж создавать объект.
FA=[];
pat=[];
for (var j = 0; j< 3; j++){
for (var i = 0; i < 3; i++){
pat[i] = [];
pat[i] = i+j;
}
console.log(pat);
FA[j]=pat;
}
console.log(FA);
Проблема так все равно не решится. В один и тот же массив pat трижды переписываются значения в индексах с 0 по 2 (в цикле по i). А в массив FA каждый раз записывается ссылка на массив pat (в цикле по j). Если визуализировать, то примерно так это выглядит:
Порядок формирования массивов
i == 0;
pat = [0, 1, 2];
FA = [
pat // [0, 1, 2]
]
i == 1;
pat = [1, 2, 3];
FA = [
pat, // [1, 2, 3]
pat // [1, 2, 3]
]
i == 2;
pat = [2, 3, 4];
FA = [
pat, // [2, 3, 4]
pat, // [2, 3, 4]
pat // [2, 3, 4]
]
P.S. Не знаю, какую высшую цель вы преследуете и, может, потом этот объект будет использоваться как массив, но в текущем контектсе решение выглядит странным и запутанным.
Как я уже писал выше я пытаюсь сделать конвертер из макросов к3-мебель в скрипты базиса. Т.к база макросов уже очень большая то это получается проще чем с нуля создавать рисунки в базисе.
По макросам строка #Pat1 polyequidistant pat radius -smeh; предполагается что создается объект с именем Pat1 который берётся из объекты pat и строится к нему полиэквидистанта с радиусом smeh. В свою очередь smesh это переменная которая тоже подсчитана в процессе чтения макроса. А pat это массив с линиями. Мало того в дальнейшем нужно этот Pat1 передать в массив PicArr[i]=pat1. И вот на этом этапе уже у меня возникают проблемы.
Кстати pat1=new Array(); почему то не помогло. По прежнему в PicArr заносится значение, а не новая переменная.