Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
Новшества Базис Мебельщик версии 2024:
5.«Использовать новый движок скриптов (в бета-тесте)» - Node.js v20.2.0
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 02.05.2024 в 11:30..
привет. Кто подскажет, как построить код на добавление нумерации блока в имя самого блока?
К примеру, если блок называется ШН500, ему присвоен номер блока 1, то имя блока должно получиться 1_ШН500
PHP код:
//для БМ 11 и новее Undo.RecursiveChanging(Model)*; for (var i=0;i<Model.Count;++i){ if (Model.Objects[i] == "[object TFurnBlock]" && Model.Objects[i].ArtPos !== "") { Model.Objects[i].Name = Model.Objects[i].ArtPos + "_" + Model.Objects[i].Name; Model.Objects[i].Build(); }};
Если надо обрисовать круг линиями снаружи с определённым отклонением(точностью).
Approximate -- похоже, но когда надо скомпоновать(Nesting) не совсем оно.
Скрытый текст
//https://planetcalc.ru/1055/
a = 10//сторона многоугольника
n = 8 // количество сторон
ri = a/(2* Math.tan( Math.PI/n) ) //
//alert("Радиус вписанной окружности = "+ ri);
a = 10//сторона многоугольника
n = 8 // количество сторон
rc = a/(2* Math.sin( Math.PI/n) )
//
//alert("Радиус описанной окружности = "+ rс);
narisovat(a,n,ri,rc)
function narisovat(a,n,ri,rc)
{
c= NewContour()
c.AddCircle(0, 0, ri)
c.AddCircle(0, 0, rc)
test = NewContour()
test.AddLine(-ri, -a*0.5,-ri, a*0.5)
}
// теперь наоборот
/*
* есть ri и rc надо a и n
*/
tochnost = 1
d = 1000
ri= d *0.5
rc=ri+tochnost
for(n=3;n<100;n++)
{
/*
1) рисуем считаем наружный многоуольник, его сторону = a.
2) для него считаем наружную окружность, её радиус = rc0.
3) если rc0=<rc тогда это оно, иначе добавляем количество сторон n.
*/
// ri = a/(2* Math.tan( Math.PI/n) )
a = ri * (2* Math.tan( Math.PI/n))
rc0 = a/(2* Math.sin( Math.PI/n) )
if( rc0<=rc )
{break}
}
narisovat(a,n,ri,rc0)
function testC(c00) {
var c0 = AddContour()
// c0.Name = name
var c = c0.Contour
c.AddList(c00.MakeCopy())
return c0
}
[свернуть]
есть тема "Готовые скрипты", нет темы "Заготовки-зарисовки."
во вложенном архиве два скрипта и файл фрагмента отверстия.
скрипт "замена фурнитуры на отверстия в панелях.js" заменяет фурнитуру на самостоятельные отверстия, удаляет все кроме панелей и этих новых отверстий, переносит панели и новые отверстия в верхний уровень модели.
файл "отверстие.f3d" нужен для работы скрипта замены фурнитуры и должен лежать с ним в одной папке.
скрипт "разворачиваем панели со своими отверстиями с учетом пазов.js" разворачивает панели с "ее" фурнитурой во фронтальную проекцию, поворачивает панели текстурой по вертикали или если нет текстуры то длинной стороной по вертикали и разворачивает "к зрителю" той плоскостью на которой больше пазов или если пазов одинаково с обоих сторон, то стороной где больше глухих отверстий.
скрипт "разворачиваем панели со своими отверстиями с учетом пазов.js", желательно запускать после использования скрипта "замена фурнитуры на отверстия в панелях.js", иначе фурнитура соединяющая несколько панелей, будет привязана к какой то одной из них, а на других не будет ничего.
Тип файла: zip "замена фурнитуры на отверстие с поворотом панелей.zip" (4.5 Кб, 83 просмотров)
Приветствую! Скопировал из этого файла участок кода для разворота отверстия в нужном направлении (сам не допёр, как это сделать):
Вопрос про первую строчку (возможно, наивный). Деление на единицу - это так было задумано, или остаток от отладки кода? Или всё же это было сделано для исправления какого-то косяка Базиса?
Вопрос про первую строчку (возможно, наивный). Деление на единицу - это так было задумано, или остаток от отладки кода? Или всё же это было сделано для исправления какого-то косяка Базиса?[/QUOTE]
Не знаю про этот, я подобный у smartwooda переписывал и дополнял, мне понравился