Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 09.01.2024 в 11:56..
Всем здравствуйте. В параметрах блока есть параметры положения, в частности, углы поворота. Влияют они на отображение блока в сборочных чертежах (то есть, какой стороной блок на чертеже повернется "к зрителю"). Можно ли как-то через скрипты до этих параметров дотянуться и их изменять?
Obj = Model.Selected; // возьмём выделенный объект
if (Obj)
Obj = Obj.AsPanel; //Приведём объект к типу панели
if (!Obj) //проверим, является ли он панелью
Obj = GetPanel("Укажите панель");
if (Obj) {
C = Obj.Contour; //Кунтур панели
StartEditing(Obj); //Укажем, что этот объект будет редактироваться
p = GetPoint("Укажите точку среза");
p = Obj.ToObject(p); //Переведем точку в систему координат контура панели
C.Rounding(p.x, p.y, skr.Value); //Скругление элементов
Obj.Build(); //Перестроим объект после всех изменений
Action.Commit(); //Применить изменения в модели внесённые в скрипте
};
Интересный вариант нашел расчета нужных параметров для Сметы. Может кому-то окажется полезным.
Суть в следующем: в Смете не доступно многое из функционала скриптов Мебельщика, таким образом невозможно что-то рассчитать в пользовательском параметре. Решение нашлось такое: в Мебельщике расчетное значение записывается в пользовательском свойстве, а в Смете читаем это значение.
Пример: нужно создать операцию "установка стяжки в панель" на стадии упаковки панели.
В Мебельщике вешаем такой скрипт на нужное событие в автозапуске скриптов:
Код:
function CheckHole(hole, fast, panel){
var holeCenter = fast.ToGlobal({
x: hole.Position.x + hole.Direction.x * (hole.Depth / 2),
y: hole.Position.y + hole.Direction.y * (hole.Depth / 2),
z: hole.Position.z + hole.Direction.z * (hole.Depth / 2),
})
holeCenter = panel.ToObject(holeCenter);
return (holeCenter.x > panel.GMin.x) && (holeCenter.x < panel.GMax.x) &&
(holeCenter.y > panel.GMin.y) && (holeCenter.y < panel.GMax.y) &&
(holeCenter.z > panel.GMin.z) && (holeCenter.z < panel.GMax.z);
}
Model.forEachPanel(function (Panel) {
Result = 0;
var fasts = Panel.FindConnectedFasteners();
for (var i = 0; i < fasts.length; i++) {
var fast = fasts[i];
if (
(fast.Name.includes("SE017")) ||
(fast.Name.includes("SE018")) ||
(fast.Name.includes("SE013")) ||
(fast.Name.includes("SE01PB")) ||
(fast.Name.includes("SE01РN")) ||
(fast.Name.includes("SE01РМ")) ||
(fast.Name.includes("VB никель")) ||
(fast.Name.includes("Стяжка Rastex")) ||
(fast.Name.includes("MESAN 007616"))) {
var holes = fast.Holes;
if (holes && holes.Count > 0) {
for (var j = 0; j < holes.Count; j++) {
var hole = holes[j];
if (CheckHole(hole, fast, Panel) &&
(hole.Diameter == 15 || hole.Diameter == 20)){
Result +=1;
break;
}
}
}
}
}
if (Result !=0){
Panel.UserProperty['Количество стяжек'] = Result;
}
else {
Panel.UserProperty['Количество стяжек'] = null;
}
}
);
Создаем в Смете нужную операцию, например "Установка стяжки", параметром с модели определяем пользовательский параметр такого вида:
Код:
NP_Prop = Panel.UserPropCount;
for (i=0;i<NP_Prop;i++){
if (Panel.UserPropertyName[i] == 'Количество стяжек'){
Result = Panel.UserProperty[i];
}
}
и вешаем созданную операцию на нужные материалы в базе материалов.
__________________ Автоматизация автоматизаций на АСУ, ТП и тд и тп.. Комплексное решение
Добрый день.
Подскажите, пожалуйста.
Как можно решить данный вопрос?!?
Работаю с изделием-редактируемым блоком. При нажатии на кнопку "Построить" - необходимо сохранить модель в определённое место. Методом SaveModel - это сделать получилось. Файл сохранился в нужном месте. Но вот незадача - активная модель - не сохранилась. По сути нужен метод - Сохранить как.
Наведите, пожалуйста.
Спасибо , но он у меня не заработал на 11й . У меня есть скрипт , который делает сопряжение только на прямоугольных отверстиях в панелях, мне нужно его доработать что бы сопряжение делалось и на всех внутренних пропилах 90 гр. Надеюсь кто нибудь откликнется . https://yadi.sk/d/4_6gWBTQn1Kv_A
Всем привет! Подниму вопрос тут.
Кто-то нашёл способ делать простые http запросы в сеть?
Пробовал подключением простых библиотек, подключением нод модулей. Как итог - скрипт отрабатывает, лог чистый. Результата нет.