Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 09.01.2024 в 11:56..
Часть кода это я предоставил, ваш код который вы предлагаете работает отдельно, но когда я его применяю в своем коде то он не срабатывает. Спасибо. Будем искать
Добрый день!
пишу сюда, чтоб коллеги тоже видели, вдруг кому пригодится.
ответ от ТП по данному вопросу:
Цитата:
Добрый день, Артём. Проблема в назначении панели в выделенный блок. Объекты, создаваемые в скриптах являются "временными" и не должны существовать в модели. Поэтому они пишутся во временную область модели, и по завершении скрипта или после вызова Action.Commit() в модели создаются нормальные объекты и их создание записывается в историю модели. Обычное решение такой проблемы заключается в разбиении скрипта на два этапа:
1. Создание объектов во временной области и сохранение их в модели с помощью Action.Commit()
2. "Перетаскивание" объектов из модели в нужный блок.
Пример для вашего кода:
var block=Model.Selected;
var pan=AddFrontPanel(0,0,100,100,0);
pan.Build();
Action.Commit();
pan = Model.Objects[Model.Count - 1];
// Перемещает и поворачивает панель, чтобы при изменении родительского объекта панели
// положение и поворот панели не изменилось относительно ГСК
pan.ReTransform(pan.Owner, block);
pan.Owner=block;
Конкретно в вашем случае, указание блока через выделение уже существующей в нем панели, необходимо лишь заменить первую строку на
var block=GetPanel('Укажите панель').Owner;
Все отлично работает, но не в моем коде. Где то у меня перемудрено в основном коде, буду думать. За то родился новый код по выделению блока (может кто и знает другой вариант), тестируйте
PHP код:
var block=GetPanel('Укажите панель').Owner;
block.Selected = true;
Добавлено через 17 минут
Может кто использовал функцию
PHP код:
/**
* Проверка пересечения объектов
*/
ObjIntersectionAnalyze: boolean;
Друзья помогите!!
Нужно получить контур детали с кромкой и без кромки.
Весь мозг сломал, штатных функций или свойств не нашёл.
У кого есть мысли?
Пишу альтернативную выгрузку спецификации по типу xml, но более подробную.
Друзья помогите!!
Нужно получить контур детали с кромкой и без кромки.
Весь мозг сломал, штатных функций или свойств не нашёл.
У кого есть мысли?
Пишу альтернативную выгрузку спецификации по типу xml, но более подробную.
Решаю подобную задачу в данный момент. Написал заплатку, но она не всегда работает.
Скрытый текст
function ConturPanel(p) {
var pLenght = Math.round(p.ContourHeight);
var pWidth = Math.round(p.ContourWidth);
var SizePanel = {};
var line=[];
var dx = 0;
var dy = 0;
if (p.Butts.Count > 0) {
for (var i = 0; i < p.Butts.Count; i++) {
var ang = angleLine(p.Contour[p.Butts[i].ElemIndex].Pos1.x, p.Contour[p.Butts[i].ElemIndex].Pos2.x, p.Contour[p.Butts[i].ElemIndex].Pos1.y, p.Contour[p.Butts[i].ElemIndex].Pos2.y)
if (ang % 90 == 0 && p.Butts[i].Thickness > 0 && p.Butts[i].ClipPanel) {
switch (ang) {
case -90:
case 90:
if (line.filter(function(r){return r==Math.round(p.Contour[p.Butts[i].ElemIndex].Pos1.x)}).length==0) {dx += p.Butts[i].Thickness;}
line.push(Math.round(p.Contour[p.Butts[i].ElemIndex].Pos1.x))
break;
case 0:
line.push(Math.round(p.Contour[p.Butts[i].ElemIndex].Pos1.y))
if (line.filter(function(r){return r==Math.round(p.Contour[p.Butts[i].ElemIndex].Pos1.y)}).length==0) {dy += p.Butts[i].Thickness;}
break;
}
Пытаюсь получить к какой пласти относиться паз. Понимаю, что нужно отталкиваться от контура паза panel.Cuts[0].Contour.Min.y, но как сравнить с panel.GMin.z не пойму. У кого может есть решение. Спасибо
Пытаюсь получить к какой пласти относиться паз. Понимаю, что нужно отталкиваться от контура паза panel.Cuts[0].Contour.Min.y, но как сравнить с panel.GMin.z не пойму. У кого может есть решение. Спасибо
Точно не помню, но кажется, если в пределах координат У сечения паза есть ноль, то это одна сторона, если есть значение равное толщине панели, то другая.
Точно не помню, но кажется, если в пределах координат У сечения паза есть ноль, то это одна сторона, если есть значение равное толщине панели, то другая.