Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
Скрипты. Готовые решения для БМ8-2023
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

Этот раздел предназначен для размещения готовых скриптов.
Здесь находятся ТОЛЬКО готовые скрипты. Для обсуждения есть отдельная тема: Обсуждение готовых скриптов.

Авторам:
  1. Давать уникальные названия скриптам (не совпадающие с названием уже выложенных скриптов, за исключением обновлений скрипта)
  2. Указывать работоспособность в разных версиях БМ.
  3. Общее описание работы скрипта.
  4. Если презентованный скрипт платный указывать стоимость, условия и контакты для приобретения.

Версии, указанные модератором, как прошедшие проверку:
8 - Демо-версия 8.0.7.9649
- "народная" 8.0.12.12765
9 - Демо-версия 9.0.8.18908
10 - Демо-версия 10.0.0.21602

Последний раз редактировалось AlexBolton; 03.03.2023 в 21:03..
Просмотров: 548937
Ответить с цитированием Вверх
13 пользователя(ей) сказали cпасибо:
Старый 15.11.2021, 17:12   #121
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию добавление заглушек по отверстиям фурнитуры и материалу

Доброго дня!
очередное обновление скрипта "добавление заглушек".
добавлен функционал для сохранения соответствий уже когда то выбранных заглушек материалу/фурнитуре.
если снова встречается ранее анализированный материал и фурнитура, то поле с заглушкой будет предварительно заполнено. при изменении заранее указанной заглушки, изменения сохраняются в файлах.
Вложения
Тип файла: zip добавление заглушек.zip (12.1 Кб, 175 просмотров)
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
11 пользователя(ей) сказали cпасибо:
Старый 19.11.2021, 16:29   #122
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию скрипт замены материалов любых объектов в т.ч. импортированных 3D

Доброго дня трудящимся!
В архиве два скрипта для замены материалов любого объекта в т.ч. фурнитуры и импортированных 3D.
Выделить один или несколько объектов материал которых нужно изменить, запустить нужный скрипт.
В зависимости от скрипта материал либо вносится вручную, либо выбирается из базы материалов базис-мебельщика.
В итоге всем выделенным объектам будет присвоен указанный материал.
Помогает для цветоотображения в Мебельщике, а также при импорте 3Д объектов в Менеджер прайс-листов и далее в Салон.

заслуга не моя, помогли в ТП))
Вложения
Тип файла: zip замена материалов 3Д объекта.zip (1.1 Кб, 238 просмотров)
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
23 пользователя(ей) сказали cпасибо:
Старый 12.12.2021, 14:40   #123
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию

Скрипт ручного переименования материалов и толщин, из окна пользовательских свойств.
Удобно использовать, когда вы работаете с незнакомыми материалами или занимаетесь отрисовкой фурнитуры.

Лично мне, менять толщины панелей и переиеновывать материалы модели вызывая 3 окна — долго и неудобно. Особенно если их нет в базематериалов (...и смысла засорять одноразовыми материалами базу — тоже)

Перед использованием необходимо ыделить изменяемые панели и создать им пользовательские свойства: "NewMaterialName" и "NewThickness". Изменяет только у выдленных панелей.

Толщины могут быть отрицательными (напр: "-5")
PHP код:
var 0;
    
Model.forEachPanel(function(obj) {
        if (
obj.Selected){
        
obj.MaterialName obj.UserProperty['NewMaterialName'];
        
obj.Thickness obj.UserProperty['NewThickness']*1;
        
= ++k
        obj
.Build();}
        });
Model.Build();
alert("изм. " " панелей"); 
Эталон контура
Скрипт пригодится тем, кто много работает с контурами деталей: проектирует криволинейные барные стойки, гнутые поверхности и прочее "радости ЧПУ-шника". Когда в модели ни одной прямоугольной детали, а к.н. "лонжерон" или " стойка лонжерона" из-за хотелок заказчика меняется сотни раз в десятках деталей — редактировать контуры панелей в рукопашную, умахаешся.

Для работ нужно выделить изменяемые детали и указать эталон контура. Эталоном может быть плоский "черновик" ( 2Dэлемент).
PHP код:
var 0;
var 
frw NewContour();
var 
donor GetObject("Выберите донора");
frw donor.Contour;
var 
n_ donor.Contour.Count;
    if (
n_ == 0){
    
alert('донор не указан');
    
donor GetObject("Выберите донора");
    
frw donor.Contour;
    }
    else{
    
Model.forEachPanel(function(obj) {
        if (
obj.Selected){
        
//alert("редактируем контур " + obj.Name);
        
Undo.Changing(obj);
        
obj.Contour.Clear();
        
obj.Contour.Addition(frw);
        
= ++k
        obj
.Build();}
        });
    }
 
Model.Build();
 
alert("изм. " " панелей"); 
Будьте внимательны: скрипт удаляет кромки.

PS. если у когото есть скрипт сохраняющий контур детали в виде файла фрагента '*.frw' — буду признателен.
__________________
С уважением Кузнецов Александр

Последний раз редактировалось АлКузнецов; 12.12.2021 в 15:23.
АлКузнецов вне форума   Ответить с цитированием Вверх
8 пользователя(ей) сказали cпасибо:
Старый 20.12.2021, 14:54   #124
Станислав Станилевич
Пользователь
 
Аватар для Станислав Станилевич
 
Регистрация: 19.02.2019
Адрес: На юге
Сообщений: 35
Сказал(а) спасибо: 21
Поблагодарили 154 раз(а) в 24 сообщениях
Вес репутации: 98
Станислав Станилевич - весьма и весьма положительная личностьСтанислав Станилевич - весьма и весьма положительная личность
По умолчанию Выделение панелей с облицованной пластью

Формирует модальное окно с соответствующими кнопками
Работа проверена в БМ2021.
В архиве сам скрипт и иконка.
Приятного использования)
Как работает смотрим тут.
Шифрование кода сделано намерено.
Миниатюры
2021-12-20_14-48-38.png  
Вложения
Тип файла: rar Выделение облицованых панелей.rar (1.8 Кб, 124 просмотров)

Последний раз редактировалось Станислав Станилевич; 20.12.2021 в 17:36.
Станислав Станилевич вне форума   Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 20.12.2021, 15:42   #125
Станислав Станилевич
Пользователь
 
Аватар для Станислав Станилевич
 
Регистрация: 19.02.2019
Адрес: На юге
Сообщений: 35
Сказал(а) спасибо: 21
Поблагодарили 154 раз(а) в 24 сообщениях
Вес репутации: 98
Станислав Станилевич - весьма и весьма положительная личностьСтанислав Станилевич - весьма и весьма положительная личность
По умолчанию

Цитата:
Перед использованием необходимо ыделить изменяемые панели и создать им пользовательские свойства: "NewMaterialName" и "NewThickness". Изменяет только у выдленных панелей.
С Вашего позволения упростил эту задачу:
PHP код:
Model.forEachPanel(function(obj) {
        if (
obj.Selected){
        const 
NMN=prompt('Введите название материала:')
        const 
NT=prompt('Введите толщину материала:')
        
obj.UserProperty['NewMaterialName'] = NMN
        obj
.UserProperty['NewThickness'] = NT
        obj
.MaterialName obj.UserProperty['NewMaterialName']
        
obj.Thickness obj.UserProperty['NewThickness']
        
obj.Build();
        
obj.UserProperty['NewMaterialName'] = undefined
        obj
.UserProperty['NewThickness'] = undefined
        obj
.Build();
        }
        });
Undo.RecursiveChanging(Model)
Model.Build(); 
За код спасибо, отдельно!
Станислав Станилевич вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
demanus (16.05.2022), deymv (28.01.2023), PravCom (21.12.2021), zloichik (20.06.2022)
Старый 20.12.2021, 21:07   #126
Igordiz
Новичок
 
Регистрация: 15.08.2018
Сообщений: 7
Сказал(а) спасибо: 2
Поблагодарили 233 раз(а) в 6 сообщениях
Вес репутации: 0
Igordiz - весьма и весьма положительная личностьIgordiz - весьма и весьма положительная личностьIgordiz - весьма и весьма положительная личность
По умолчанию Расставить полки PRO v1.3.7

Несколько доработал предыдущий скрипт "Расставить полки PRO v1.2"

Исправлена неточность в округлении расстояний между полок
Добавлена проверка на правильный выбор левой и правой боковины
Добавлена проверка на выбор одной и той же боковины
Ранее если случайно ошибся, приходилось завершить скрипт и делать всё снова.
Добавлен выбор крепежа Полкодержатель/Евровинт
Добавлен пункт "Произвольно" в опцию "Центровка крепежа"

Изменён подход к определению глубины секции. Теперь не нужно указывать заднюю и переднюю границу. Значение берётся исходя из глубины самой боковины, причем если глубина самих боковин не одинаковая, как это бывает в шкафах купе, полки строятся по меньшей боковине.
Миниатюры
2021-12-20_212558.jpg  
Вложения
Тип файла: zip Расставить полки PRO v1.3.7.zip (15.5 Кб, 330 просмотров)
Igordiz вне форума   Ответить с цитированием Вверх
16 пользователя(ей) сказали cпасибо:
Старый 25.12.2021, 11:47   #127
Станислав Станилевич
Пользователь
 
Аватар для Станислав Станилевич
 
Регистрация: 19.02.2019
Адрес: На юге
Сообщений: 35
Сказал(а) спасибо: 21
Поблагодарили 154 раз(а) в 24 сообщениях
Вес репутации: 98
Станислав Станилевич - весьма и весьма положительная личностьСтанислав Станилевич - весьма и весьма положительная личность
По умолчанию

Добавлена кнопка "Завершить"
Сообщение 159
Цитата:
Сообщение от Станислав Станилевич Посмотреть сообщение
Формирует модальное окно с соответствующими кнопками
Шифрование кода сделано намерено.
Вложения
Тип файла: rar Выделение облицовки.rar (1.9 Кб, 113 просмотров)
Станислав Станилевич вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
arsenalzakaz (12.10.2022), kopnyc (27.12.2021), PravCom (25.12.2021)
Старый 01.01.2022, 01:45   #128
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию новогодние подарки

Несколько скриптов упрощающих работу с деталями сложного контура.

радиусная деталь


Строит контур в виде куска кольца нужного радиуса, угла и толщины.


Скрипт писал для себя: поэтому с написанием и настройкой форм и/окна свойств не заморчивался. Будте внимательны: для деталей глубина детали не должна быть равна радиусу. (Для контуров может быть и больше)
PHP код:


  
function okrugl(chn) {
  
// функция округления числа с заданной тоносттью
  // ch - число
  // n - количество знаков
    
if(isNaN(ch) || isNaN(n)) return false;
    var 
Math.pow(10,n);
  return 
Math.round(ch*m)/m;
}

//++++++++++++++++++++++++++++++++++++++++
var _R 500;   // радиус поворота
var _G 100;   // глубина поворота
var _a 110;    // угол поворота контура

//++++++++++++++++++++++++++++++++++++++++


//var iL = 0;
//var Elem = [];
var Test2D AddContour();
var 
fr Test2D.Contour;
//var styk = Test2D.Contour;
fr.Clear();
console.log('fr ' fr );

Test2D.Name _a +'гр. с глубиной ' _G;
var 
_p =  NewPoint();    // точка начала линии
console.log('_p ' _p );
var 
num  _a/2*-1;
var 
num2 0;
var 
num3 _a/2;
var 
_r _R-_G;
console.log('_r ' _r );
console.log("отрицательный угол " num);
console.log("положительный угол " num3);
var 
points = [];
var 
0;  // счётчик точек
            // 0
    
_p.=  okrugl(Math.cosnum Math.PI 180)*_R,4);
    
_p.=  okrugl(Math.sinnum Math.PI 180)*_R,4);
points[i] =  {x:_p.y:_p.y};

console.log('координаты точки ' ' p'' = (' _p.+','_p.+')');
    
= ++i;  //1
    
_p.=  okrugl(Math.cosnum2 Math.PI 180)*_R,4);
    
_p.=  okrugl(Math.sinnum2 Math.PI 180)*_R,4);
points[i] =  {x:_p.y:_p.y};

console.log('координаты точки ' ' p'' = (' _p.+','_p.+')');
    
= ++i;  //2
    
_p.=  okrugl(Math.cosnum3 Math.PI 180)*_R,4);
    
_p.=  okrugl(Math.sinnum3 Math.PI 180)*_R,4);
points[i] =  {x:_p.y:_p.y};

console.log('координаты точки ' ' p'' = (' _p.+','_p.+')');
    
= ++i;  //3
    
_p.=  okrugl(Math.cosnum Math.PI 180)*_r,4);
    
_p.=  okrugl(Math.sinnum Math.PI 180)*_r,4);
points[i] =  {x:_p.y:_p.y};

console.log('координаты точки ' ' p'' = (' _p.+','_p.+')');
    
= ++i;  //4
    
_p.=  okrugl(Math.cosnum2 Math.PI 180)*_r,4);
    
_p.=  okrugl(Math.sinnum2 Math.PI 180)*_r,4);
points[i] =  {x:_p.y:_p.y};

console.log('координаты точки ' ' p'' = (' _p.+','_p.+')');
    
= ++i;  //5
    
_p.=  okrugl(Math.cosnum3 Math.PI 180)*_r,4);
    
_p.=  okrugl(Math.sinnum3 Math.PI 180)*_r,4);
points[i] =  {x:_p.y:_p.y};

console.log('координаты точки ' ' p'' = (' _p.+','_p.+')');

fr.AddLine(points[0].xpoints[0].ypoints[3].xpoints[3].);
fr.AddLine(points[2].xpoints[2].ypoints[5].xpoints[5].);
fr.AddArc3(points[0].xpoints[0].ypoints[1].xpoints[1].,points[2].xpoints[2].y);
fr.AddArc3(points[3].xpoints[3].ypoints[4].xpoints[4].,points[5].xpoints[5].y);

console.log(fr.IsClosedContour());

    
Test2D.Build();
    
Action.Commit(); 
результат работы примерно такой: -

Вшивать код в скрипты создания панелей — не рекомендую.

Построенный контур в 9/10 случев — не замкнут (на стыках построение теряет впределах 0,00025 мм) и вы получаете "пустую панель" или зависание компа.

Лучше стоить панель как обычно, а дальше использовать скрипт эталон контура.
В этом случае глюков не обнаружил. Почему так происходит — ХЗ.
[свернуть]


многоугольник



Скрипт интересен сам по себе. При желании его можно конвертировать в в функцию и использовать при создании деталей и профилей. Контур всегда замкнут. Можно не опасаться за панели и профили.

Можно "разобрать на запчасти" и использовать как инструмент расчёта координат дуг и наклонов линий.

PHP код:

  
function okrugl(chn) {
  
// функция округления числа с заданной тоносттью
  // ch - число
  // n - количество знаков
    
if(isNaN(ch) || isNaN(n)) return false;
    var 
Math.pow(10,n);
  return 
Math.round(ch*m)/m;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++
var _n 9;         // кол-во углов
var _R 50;        // радиус описанной окружности

//+++++++++++++++++++++++++++++

var Test2D AddContour();
var 
fr Test2D.Contour;
//var Line = [];      // массив элементов контура
//var iL = 0;         // счётчик элементов  контура

Test2D.Name _n +'-угольник';
var 
_a 360/_n;    // угол поворота биссектрис
var _p1 =  NewPoint();    // точка начала линии
var _p2 =  NewPoint();    // угол конца линии

var 0                 // счётчик цикла
for (1_n+1; ++i)
{
var 
i;
var 
num  90-_a*i;
var 
num2 90-_a*(i+1);
console.log("текущий угол " num);
console.log("следующий угол " num2); /**/
    
_p1.=  okrugl(Math.cos(numMath.PI 180)*_R,4);
    
_p1.=  okrugl(Math.sin(numMath.PI 180)*_R,4);
    
_p2.=  okrugl(Math.cos(num2Math.PI 180)*_R,4);
    
_p2.=  okrugl(Math.sin(num2Math.PI 180)*_R,4);

console.log('координаты линии №-'' p1(' _p1.+','_p1.+') p2 ('_p2.+','_p2.+')');
fr.AddLine(_p1.x_p1.y,_p2.x_p2.);
} ;

console.log(fr.IsClosedContour());

    
Test2D.Build();
    
Action.Commit(); 
[свернуть]


проверено в БМ11-21.
__________________
С уважением Кузнецов Александр

Последний раз редактировалось АлКузнецов; 01.01.2022 в 02:53.
АлКузнецов вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
AlexBolton (01.01.2022), PravCom (01.01.2022), Sevillano (23.01.2022), sibmebel (11.04.2023)
Старый 01.01.2022, 02:48   #129
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию новогдние подарки.

Несколько скриптов для работы с металлопрокатом

Понадобилось мне сделать точное ТЗ для металлистов. Пришлось озаботиться реалистичным изображением профилей и их присадки.

Сортамент уголков ГОСТ:8509-93



Скрипт имеет свою базу данных, и позволяет создавать профиля в соответствии с ГОСТ-ом: по толщинам стенок, размерам полок, и радиусам проката.

Уголок можно сделать равнополочный и неравнполочный. Разеры от 15х15 до 250х250.
Высота и длина уголка произвольная.
PHP код:
function ugolkiBaza(_U) {
    
console.log("входящее значение функции = " _U);
var 
bdUgol = {};       //строка базы материалов
/* где:
_b_:           - база равнополочного уголка
_R:             - радус базового угла
_r:          - радиус скругления полки
_t:             - толщина стенок
*/
var id 0;           //Номер строки
bdUgol[++id] = { _b_15_R2_r0.67_t: [1.51.822.5]};
bdUgol[++id] = { _b_20_R3_r1.2_t: [2.534]};
bdUgol[++id] = { _b_25_R3.5_r1.2_t: [345]};
bdUgol[++id] = { _b_28_R4_r1.3_t: [3]};
bdUgol[++id] = { _b_30_R4_r1.3_t: [345]};
bdUgol[++id] = { _b_32_R4.5_r1.5_t: [34]};
bdUgol[++id] = { _b_35_R4.5_r1.5_t: [34,5]};
bdUgol[++id] = { _b_40_R5_r1.7_t: [3456]};
bdUgol[++id] = { _b_45_R5_r1.7_t: [3456]};
bdUgol[++id] = { _b_50_R5.5_r1.8_t: [345678]};
bdUgol[++id] = { _b_56_R6_r2_t: [45]};
bdUgol[++id] = { _b_60_R7_r2.3_t: [ 456810]};
bdUgol[++id] = { _b_63_R7_r2.3_t: [45,6]};
bdUgol[++id] = { _b_70_R8_r2.7_t: [ 4.5567810]};
bdUgol[++id] = { _b_75_R9_r3_t: [ 56789]};
bdUgol[++id] = { _b_80_R9_r3_t: [ 5.56781012]};
bdUgol[++id] = { _b_90_R10_r3.3_t: [ 67891012]};
bdUgol[++id] = { _b_100_R12_r4_t: [ 6.5781012141516]};
bdUgol[++id] = { _b_110_R12_r4_t: [ 788101215 ]};
bdUgol[++id] = { _b_125_R14_r4.6_t: [ 8910121416]};
bdUgol[++id] = { _b_140_R14_r4.6_t: [ 91012]};
bdUgol[++id] = { _b_160_R16_r5.3_t: [ 10111214161820]};
bdUgol[++id] = { _b_180_R16_r5.3_t: [ 1112151820]};
bdUgol[++id] = { _b_200_R18_r6_t: [ 121314161820242530]};
bdUgol[++id] = { _b_220_R21_r7_t: [ 1416]};
bdUgol[++id] = { _b_250_R24_r8_t: [ 16182022252830]};
/**/
var idf id;
//console.log("база уголков загружена ");     //сигнал отладки базы

//Отладка и поиск размыкания базы данных
    
for (var i in bdUgol) {
    
//console.log("bdUgol." + i + " = " + bdUgol[i]._b_);

    
if (bdUgol[i]._b_ == _U){
    
//console.log(bdUgol[i]._b_ == _U);
    //console.log("строка таблицы = " + bdUgol[i]);
    
return bdUgol[i];}
    }
    if (
bdUgol[i] != undefined)
    
alert('уголков марки "'_U '" нет в базе');

};

/**
функция посчёта кол-ва элементов/объектов массива 
*/
function countTs(obj) {
  return 
Object.keys(obj).length;
}

// функция конвертация массива в текстовую строку (список) окна свойств
massTxt = function (options)
    {return 
options.join('\n');};
    
var 
it = -1;
Prop Action.Properties;
Gsize Prop.NewGroup('Размеры уголка');
var 
_w_ Gsize.NewCombo('ширина уголка',
massTxt([1520252830323540455056606370758090100110120125140150160180200220250]));
console.log('ширина уголка  = '_w_.Value );
var 
_h_ Gsize.NewNumber('высота уголка'25);
var 
_L_ Gsize.NewNumber('длина уголка'100);



Prop.OnChange = function() {

}

Prop.NewButton('Построить').OnClick = function() {
    
Prop.OnChange();

    
// отцифровка массива значений
var  w_ _w_.Value*1;
var  
h_ _h_.Value*1;
const  
L_ _L_.Value*1;
// проверка плученных свойств
console.log('ширина уголка  = 'w_ );
console.log('толщина уголка = 'h_ );
console.log('длина уголка = 'L_ );
/*
//тест функции
var _U = 56; */
var ugolok ugolkiBaza(w_);
/*Prop.NewButton('построить уголок').OnClick = function()
{}*/
console.log('всего варантов ' countTs(ugolok._t));
console.log(countTs(ugolok._t)-== it);
 if (
countTs(ugolok._t)-== it)
     {
Action.Finish();}
 else
    {
it =++it;}

var 
_tS Gsize.NewNumber('толщина стенки'ugolok._tugolok._t[it]);
tS _tS.Value*1;

let  _b_ ugolok._b_;    //база равнополочного уголка
let  _R     ugolok._R;    //радиус базового угла
let  _r     ugolok._r;    //радиус скругления полки
let  _t     tS;        //толщина стенок
let  _z     0.002        //захлёст контура паза
console.log("входящее значения функции _b_" _b_ '", _R    "'_R    +'", _r"'_r '", _t"'_t +'", _z"'_z'"');

var 
Panel AddPanel(_b_L_);                            // создаём панель
Panel.Thickness h_;                                  //Толщина уголка
Panel.Name 'уголок стальной' _b_+"x"h_  +"x"+tS;            //называем панель по параметрам уголка
Panel.MaterialName 'Сталь';
var 
point Panel.GabMin;

var 
Line = [];
var 
ip 0;

var 
pr Panel.AddCut('профиль уголка '_b_ +"x"h_ +"x"+tS); //фрезеруем профиль
pr.Trajectory.AddLine(point._b_point.ypoint.x+_b_point.L_); // траектория паза)
var fr pr.Contour;        //fr - это контур паза
Line[++ip] = fr.AddLine(_b_+_z_b_+_z_b_+_z0); //внеш. вертикальная
Line[++ip] = fr.AddLine(_b_+_z0_b_); //внеш. стык
Line[++ip] = fr.AddLine(_b_0_b__t); //толщ стенки
Line[++ip] = fr.AddLine(_b__t_t_t ); //внут полка
Line[++ip] = fr.Rounding(_b_-_z_t-_z_r);
fr.Symmetry(00_t_ttrue);
Line[++ip] = fr.Rounding(_t+_z_t+_z_R);
Line[++ip] = fr.Rounding(_b__b__z/2);
Line[++ip] = fr.Elastic(_b_/2*-1_b_/2_b_*2_b_*20, (_b_-h_)*-1);    //растягиваем "резиновой нитью" контур паза в размер по высоте
console.log('контур паза замкнут?\n');
console.log(fr.IsClosedContour());

    
Panel.Build()
    
Action.Commit();
}
Prop.NewButton("Закончить").OnClick = function() {
    
Action.Finish();
}
Action.Continue(); 

иногда (если сменить просмотр) - скрипт глючит.
Количество вариантов толщины стенок указано в строке окна свойств.
Как показала практика: несколько раз нажать "построить" -- оказалось удобнее,*чем выбирать толщину полки из списка.

В отличие от "тела по траектории" и "профиля" - "профиль из панели" прекрасно держит фурнитуру.

[свернуть]


по аналогии сделаны скрипты "труба профильная", "труба круглая", "швеллер" и "двутавр".

Труба профильная


PHP код:
  function okrugl(chn) {
  
// функция округления числа с заданной точностью
  // ch - число
  // n - количество знаков
    
if(isNaN(ch) || isNaN(n)) return false;
    var 
Math.pow(10,n);
  return 
Math.round(ch*m)/m;
}


Prop Action.Properties;
Gsize Prop.NewGroup('Размеры профиля');
var 
w_ Gsize.NewNumber('ширина профиля'40);
var 
h_ Gsize.NewNumber('толщина профиля'25);
var 
tS Gsize.NewNumber('толщина стенки'1.5);
var 
L_ Gsize.NewNumber('длина трубы'1000);

Schange Gsize.NewButton('Задать...');

Schange.OnClick = function() {
    
Action.AsyncExec(function() {

      
Gsize.Enabled true;
    })
};



Prop.OnChange = function() {

var 
Panel AddPanel(w_.ValueL_.Value);
Panel.Thickness h_.Value;  //            //Толщина гайки
Panel.Name 'Труба профильная';
Panel.MaterialName 'Труба ' h_.Value +"x"w_.Value +"x"+tS.Value;
var 
point Panel.GabMin;

var 
Rect = [];
var 
ip 0;

var 
pr Panel.AddCut('профиль трубы 'w_.Value +"x"h_.Value +"x"+tS.Value); //фрезеруем профиль
pr.Trajectory.AddLine(point.x+w_.Valuepoint.ypoint.x+w_.Valuepoint.y+L_.Value); // траектория паза)
var fr pr.Contour;        //fr - это контур паза
var stik NewContour();    //контур вычитаемого стыка
Rect[++ip] = fr.AddRoundRect(0.0250.025w_.Value-0.025h_.Value0.025tS.Value);
Rect[++ip] = fr.AddRectangle(-0.5,-0.005w_.Value+0.005h_.Value+0.005);
Rect[++ip] = fr.AddRectangle(tS.ValuetS.Valuew_.Value-tS.Valueh_.Value-tS.Value);
Rect[++ip] = stik.AddRectangle(tS.Value,h_.Value+0.03w_.Value tS.Valueh_.Value-0.03);
fr.Subtraction(stik)
Rect[++ip] = stik.AddRectangle(w_.Value/2,-0.005w_.Value/2+0.005tS.Value+1);
fr.Addition(stik)
Rect[++ip] = fr.AddLine(w_.Value tS.Valueh_.Value-0.025w_.Value-tS.Valueh_.Value+0.005);
}

Prop.OnChange();

Prop.NewButton('Установить').OnClick = function() {
  
Action.Commit();
}


Action.Continue(); 
[свернуть]

Труба круглая


PHP код:
  function okrugl(chn) {
  
// функция округления числа с заданной точностью
  // ch - число
  // n - количество знаков
    
if(isNaN(ch) || isNaN(n)) return false;
    var 
Math.pow(10,n);
  return 
Math.round(ch*m)/m;
}


Prop Action.Properties;
Gsize Prop.NewGroup('Размеры профиля');
var 
d_ Gsize.NewNumber('диаметр трубы Ø'20);
var 
tS Gsize.NewNumber('толщина стенки'1.5);
var 
L_ Gsize.NewNumber('длина трубы'1000);


Prop.OnChange = function() {
/*

*/

var Panel AddPanel(d_.ValueL_.Value);
Panel.Thickness d_.Value;  //            //Толщина гайки
Panel.Name 'Труба круглая Ø' d_.Value +"x"+tS.Value;
Panel.MaterialName 'Труба Ø' d_.Value +"x"+tS.Value;
var 
point Panel.GabMin;

var 
Rect = [];
var 
ip 0;

var 
pr Panel.AddCut('профиль трубы Ø'd_.Value); //внешний Ø
var pr2 Panel.AddCut('полость трубы Ø'd_.Value-2*tS.Value); //внутрений Ø
pr.Trajectory.AddLine(point.x+d_.Valuepoint.ypoint.x+d_.Valuepoint.y+L_.Value); // траектория паза)
pr2.Trajectory.AddLine(point.x+d_.Valuepoint.ypoint.x+d_.Valuepoint.y+L_.Value); // траектория паза)
var fr pr.Contour;        //fr - это контур внешнего Ø
var fr2 pr2.Contour;        //fr2 - это контур внутренего Ø
var stik NewContour();    //контур вычитаемого стыка
Rect[++ip] = fr.AddRectangle(-0.05,-0.005d_.Value+0.005d_.Value+0.005); // внешние границы
Rect[++ip] = fr.AddCircle(d_.Value/2d_.Value/2d_.Value/2); // внешний Ø
Rect[++ip] = stik.AddRectangle(d_.Value/2-0.005,d_.Value/2d_.Value/2+0.005d_.Value+0.005);
fr.Subtraction(stik)
Rect[++ip] = fr2.AddCircle(d_.Value/2d_.Value/2d_.Value/2tS.Value); // внутрений Ø

}



Prop.NewButton('Установить').OnClick = function() {
  
Prop.OnChange();
  
Action.Commit();
}


Action.Continue(); 
[свернуть]
__________________
С уважением Кузнецов Александр

Последний раз редактировалось АлКузнецов; 01.01.2022 в 19:25.
АлКузнецов вне форума   Ответить с цитированием Вверх
15 пользователя(ей) сказали cпасибо:
Старый 03.01.2022, 16:59   #130
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию


радиусная деталь v3


новые правки:
  1. Увоевал погрешности построения.
  2. Добавил форму.
  3. До нажатия кнопки "установить" -- действует в режиме предпросмотра. Невыполнимые построения ( деталь с нарушениями контура) просто не покажет. (аккуратнее с углами изгиба меньше 5гр. и радиусом изгиба меньше 100мм)
  4. Теперь строит не контур а законченную деталь с нужным углом разворота относитльно оси Z.
  5. угол может быть отрицательным,*но не может быть "0" или "360"
  6. Деталь только горизонтальная, по умолчанию высота построения детали = 1200.
Если нужны варианты (вертикальная, горизонтальная, фронтальная) замените строку №38:
Цитата:
var Test3D = AddHorizPanel(0, 0, 0, 0, 1200);
на
Цитата:
var Test3D = AddPanel(0, 0, 0, 0);
для полноценной работы формы нужно скачать этот рисунок

и прописать адрес сохраненного файла в окне свойств (сейчас это \\chertej.jpg').


Если будете добавлять точку установки панели через GetPoint(’укажите точку’);,
обратите внимание на функцию checP() {...} и строки №31-36
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

[свернуть]

проверено в БМ 11-21
__________________
С уважением Кузнецов Александр

Последний раз редактировалось АлКузнецов; 04.01.2022 в 14:47.
АлКузнецов вне форума   Ответить с цитированием Вверх
7 пользователя(ей) сказали cпасибо:
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 11-2023 - Скрипты AlexBolton Базис-мебельщик. Скрипты 985 19.04.2024 11:07
БАЗИС 9 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1442 04.04.2024 11:28
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1525 30.03.2024 15:03
Скрипты в чертежах sergio1982 Базис-мебельщик. Скрипты 35 10.02.2024 15:45
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36


Текущее время: 18:35. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL

џндекс.Њетрика