Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 09.01.2024 в 11:56..
1. С внешним движком нужно определиться - какой именно нужен. Желательно написанный на JS (если такой есть) - чтобы не тянуть лишнего за собой.
2. В одну строчку тоже можно заморочиться, но один в один (как на Windows 7) сделать будет сложно (если не невозможно).
3. У базиса с обработкой нажатия клавиш проблемы - это просто не реализовано, хотя очень хочется, ибо огромный простор для новых возможностей был бы.
Panel = Model.Selected;
Result = 0;
// Делаем копию контура, чтобы изменения не затронули исходную панель
var Cnt = Panel.Contour.MakeCopy();
// Расширяем контур на 0.1 мм в каждую сторону, чтобы прошли проверку траектории
// пазов, лежащих на границе
Cnt.Fit(Cnt.Min.x - 0.1, Cnt.Min.y - 0.1, Cnt.Max.x + 0.1, Cnt.Max.y + 0.1);
for (var i = 0; i < Panel.Cuts.Count; i++){
TCut = Panel.Cuts[i].Trajectory;
if(TCut.IsInContour(Cnt)){
Result += 1
}
}
alert(Result);
доброго всем времени суток, кто знает стало ли возможным скриптом через openfurniture или другим способом кроме newfurniture, вставить параметрическую фурнитуру в скрипт.
суть в том чтоб сделать фурнитуру по умолчанию или по выбору через newfurniture
просто снимаю шляпу . До такого не додумался.
Но проблема таким образом решается не полностью. Поскольку сечение паза можно вручную отредактировать, то возникают варианты .. Копал в сторону чтения контура сечения, получаю его смещение по Х относительно 0 (Contour.Min.X), но вот как далее понять прибавить нужно это значение или отнять (то есть в какую сторону сместить траекторию) ? Допустим для прямоугольной панели имеющей два паза по противолежащим сторонам (если берем одинаковый паз, одинаковое смещение) это полученное значение будет одинаковым, но для одного паза его нужно вычесть, а для другого прибавить.
__________________ Автоматизация автоматизаций на АСУ, ТП и тд и тп.. Комплексное решение
Поскольку сечение паза можно вручную отредактировать, то возникают варианты .. Копал в сторону чтения контура сечения, получаю его смещение по Х относительно 0 (Contour.Min.X), но вот как далее понять прибавить нужно это значение или отнять (то есть в какую сторону сместить траекторию) ? Допустим для прямоугольной панели имеющей два паза по противолежащим сторонам (если берем одинаковый паз, одинаковое смещение) это полученное значение будет одинаковым, но для одного паза его нужно вычесть, а для другого прибавить.
В поисках предыдущего решения писал вариант с преобразованием траектории (спойлер - не получилось применить):
Код
PHP код:
var Panel = Model.Selected.AsPanel;
Result = 0;
var Cnt = Panel.Contour;
for (var i = 0; i < Panel.Cuts.Count; i++) {
/**@type {Contour2D} */
var TCut = Panel.Cuts[i].Trajectory;
if (TCut.Count == 0)
TCut = Panel.Cuts[i].Contour;
/**@type {Contour2D} */
var copy = TCut.MakeCopy();
if (!copy.IsClosedContour()) {
var shift = { x: 0, y: 0 };
if (copy.Min.x > Cnt.Max.x - 0.1)
shift.x -= 0.1;
if (copy.Max.x < Cnt.Min.x + 0.1)
shift.x += 0.1;
if (copy.Min.y > Cnt.Max.y - 0.1)
shift.y -= 0.1;
if (copy.Max.y < Cnt.Min.y + 0.1)
shift.y += 0.1;
copy.Move(shift);
}
if (copy.IsInContour(Cnt)) {
Result += 1
}
}
alert(Result);
[свернуть]
Суть этой идей была в следующем - анализировать положение траектории паза относительно контура и сдвигать саму траекторию внутрь контура. Проблема возникла банальная с пазом на сторону панели - там происходило смещение по одной оси, а по второй точки оставались на границе контура. Я не совсем понял что и куда вам надо смещать, но, думаю, код, где переменная shift меняется, может вам помочь с определением знака.
доброго всем времени суток, кто знает стало ли возможным скриптом через openfurniture или другим способом кроме newfurniture, вставить параметрическую фурнитуру в скрипт.
суть в том чтоб сделать фурнитуру по умолчанию или по выбору через newfurniture
Когда-то давно писал модуль для работы с параметрической фурнитурой. (у меня на компе лежит в папке forum, однако по поиску не нашёл, чтобы я его сюда заливал, странно, но не суть)
Модуль умеет искать параметрическую фурнитуру в файле типа Fasteners.config, делать из этой пф объект типа InfFurniture (который получается путём вызова Action.Properties.NewFurnitureValue()) и записывать пф в поле выбора фурнитуры.
Для вашей задачи я написал пример, который ищет в файле fasteners.config (который должен находиться в папке со скриптом) пф с именем "ЕВ от базы" . Если нашёл, то пишет пф в поле выбора скрипта.
В приложенном архиве два файла - модуль (fasteners.js) и пример (sample.js). Я старался максимально снабдить комментариями всё, но если что непонятно или не получается - спрашивайте, не стесняйтесь