|
|
|
|
|
13.01.2014, 13:22
|
|
Скрипты. Готовые решения для БМ8-2024
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 795 раз(а) в 113 сообщениях
13.01.2014, 13:22
Рейтинг:
()
Этот раздел предназначен для размещения готовых скриптов.
Здесь находятся ТОЛЬКО готовые скрипты. Для обсуждения есть отдельная тема: Обсуждение готовых скриптов.
Авторам: - Давать уникальные названия скриптам (не совпадающие с названием уже выложенных скриптов, за исключением обновлений скрипта)
- Указывать работоспособность в разных версиях БМ.
- Общее описание работы скрипта.
- Если презентованный скрипт платный указывать стоимость, условия и контакты для приобретения.
Версии, указанные модератором, как прошедшие проверку:
8 - Демо-версия 8.0.7.9649
8н - "народная" 8.0.12.12765
9 - Демо-версия 9.0.8.18908
10 - Демо-версия 10.0.0.21602
Последний раз редактировалось AlexBolton; 03.03.2023 в 21:03..
|
Просмотров: 558854
|
13 пользователя(ей) сказали cпасибо:
|
|
14.05.2022, 09:59
|
#181
|
Местный
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 90
|
Цитата:
Сообщение от sergio1982
На видео первым переносится блок
|
По сути Вы частично реализовали параметрическую секцию более новых версий базиса. Для восьмёрки это очень актуально.
|
|
|
14.05.2022, 23:49
|
#182
|
Местный
Регистрация: 26.07.2015
Сообщений: 132
Сказал(а) спасибо: 103
Поблагодарили 3 раз(а) в 3 сообщениях
Вес репутации: 0
|
Приветствую.У меня при запуске скрипта выдает такую ошыбку.
|
|
|
14.05.2022, 23:52
|
#183
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Цитата:
Сообщение от sergio1982
/*
CopyFromPoints v1.01
Перенос копий равномерно между точками по осям.
Для начала работы надо указать путь к файлу для сохранения настроек. Folder и settingsFile.
*/
|
|
|
|
15.05.2022, 00:24
|
#184
|
Местный
Регистрация: 26.07.2015
Сообщений: 132
Сказал(а) спасибо: 103
Поблагодарили 3 раз(а) в 3 сообщениях
Вес репутации: 0
|
Первую строку записал путь к папке, а во втором что должо быть?
|
|
|
15.05.2022, 00:37
|
#185
|
Местный
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 90
|
Цитата:
Сообщение от logika.yov
Первую строку записал путь к папке, а во втором что должо быть?
|
const Folder = 'D:\\Скрипты\\Файлы для скрипт-сохр\\'
const settingsFile = Folder + 'CopyFromPoints.xml'
этого хватило
|
|
|
Пользователь сказал cпасибо:
|
|
15.05.2022, 00:57
|
#186
|
Местный
Регистрация: 26.07.2015
Сообщений: 132
Сказал(а) спасибо: 103
Поблагодарили 3 раз(а) в 3 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от PravCom
const Folder = 'D:\\Скрипты\\Файлы для скрипт-сохр\\'
const settingsFile = Folder + 'CopyFromPoints.xml'
этого хватило
|
Спасибо.Заработал.
|
|
|
25.05.2022, 22:03
|
#187
|
Местный
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 213
|
Связка из двух скриптов делает прогноз по затратам времени на производстве.
задуманный "расчёт по формуле" в итоге превратился в подгонку "поправочных коэффициентов". Сейчас подгонка закончена и скрипт считает достаточно точно (+/- 30 сек. на изделие).
Если у вас расчёты не будут сходиться с фактом -- пишите личку: подскажу где исправить.
ВИМАНИЕ! Публикуемый скрипт НЕ СЧИТАЕТ время на фрезеровку контуров деталей и пазов.
подключаемая база материалов
нужна для получения данных [цены] [плотности] и [модуля упругости]
без этой базы, время раскроя будет "гулять" в пределах 10-15%
PHP код:
/* Оперативный массив базы материалов
Дан пример. заполнения. Данные должны быть ваши. Данные по плотности и модулю упругости лучше вносить не из справочников, а из сертификатов и сопроводительных документов на груз.
*/
function PriceDensityObj(Obj) { var bdMat = {}; //строка базы материалов /* где: id_m: - номер строки базы материалов m_Name: - наименование материала m_Art: - артикул материала m_Price: - цена материала m_Weight: - вес материала m_Density: - Плотность материала */ var id = 0; //Номер строки bdMat[0] = { id_m: 0, id_t: 0, m_Name: 'материала нет в базе', m_Art: '', m_Price: 0, m_Weight: 0.0, m_Density: 0}; bdMat[++id] = { id_m: 49262, id_t: 25, m_Name: 'МДФ шлифованный', m_Art: 'MDF4', m_Price: 4, m_Weight: 3.26, m_Density: 815}; bdMat[++id] = { id_m: 49281, id_t: 26, m_Name: 'Стекло бесцветное 5мм', m_Art: 'ST5', m_Price: 18, m_Weight: 13.25, m_Density: 2650}; bdMat[++id] = { id_m: 49986, id_t: 14, m_Name: 'ДСП 16мм шлиф', m_Art: '', m_Price: 11.6043956, m_Weight: 10.56, m_Density: 658}; bdMat[++id] = { id_m: 50016, id_t: 14, m_Name: 'ДСП 18мм шлиф', m_Art: '', m_Price: 13.05494505, m_Weight: 11.88, m_Density: 661}; bdMat[++id] = { id_m: 50017, id_t: 14, m_Name: 'ДСП 25мм шлиф', m_Art: '', m_Price: 18.13186813, m_Weight: 16.5, m_Density: 663}; bdMat[++id] = { id_m: 50004, id_t: 17, m_Name: 'Фанера 15мм', m_Art: 'Fan15', m_Price: 11.25, m_Weight: 9.75, m_Density: 650}; /**/ var idf = id; //alert("база материалов загружена "); //сигнал отладки базы материалов
var m = Obj.MaterialName; //например 'ЛДВП Бежевая'&'LDVP3.2' где
//alert("обработка " + Obj.Name); //alert("обработка " + m); //Отладка и поиск размыкания базы данных
for (var key in bdMat) // цикл по ключевому полю {
/* анализ значения текста Obj.MaterialName; */ var n = bdMat[key].m_Name; //'ЛДВП Бежевая' var a = bdMat[key].m_Art; //'LDVP3.2' var ost = m.length - n.length - a.length; // остаток строки '&' набор неизвестных символов /*var etn = ExtractMatName(Obj.MaterialName); var eta = ExtractMatCode(Obj.MaterialName);*/ var etn = m.substring(0, n.length); // эталон сравнения названия равной длины //var eta = m.substring(n.length + ost, m.length); // эталон сравнения артикула равной длины //alert("остаток строки " + ost); //alert("совпадение названия " + (n == etn)) ; //alert("совпадение артикула " + (a== eta)); --idf; switch (true) { //через if не работает -- беконечный цикл case n == etn: // && a== eta: //арикул и наименование материала совпадет return bdMat[key]; //возвращаем свойства материала break; default: if (idf==0 && key>0){ //число попыток равно числу строк базы данных //alert("материал " + m + " не найден в базе. Исправьте модель!"); return bdMat[0];} //возвращаем "пустой" материал bdMat[0] или выхоим из цикла break; }
}
}
[свернуть]
если вам влом заниматься настройками просто замените материалы "ЛДСП 16" на 'ДСП 16мм шлиф' или нужной толщины.
Подсчет времени
"По-уму", к скрипту нужно написать окно свойств с настраиваемыми паромерами и привязать кнопку на панели инструментов, но мне тупо тень. (Устал, и в отпуск хочу ).
Пока, всё в лучших традициях: "стоит на костылях" и запускается исключительно кнопкой (F5) из окна редактора скриптов.
PHP код:
system.include('D:\\js\\bazaMaterialov.js'); // подключаем (прописываем правильный путь) оперативную базу материалов.
function okrugl(ch, n) { // функция округления числа с заданной точностью // ch - число // n - количество знаков if(isNaN(ch) || isNaN(n)) return false; var m = Math.pow(10,n); return Math.round(ch*m)/m; }
var w_Izd = 0; // вес изделия var $_Izd = 0; // вес изделия var iZ_Rakr = 0; // время раскроя var iZ_Krom = 0; // время на кромку var iZ_Pris = 0; // время на ЧПУ var iZ_Sborki = 0; // время на Сборку const t_reza = 3.2; // толщина реза пилы мм const lob_reza = 5100000; // производительность пилы мм^3 const lob_men = 0.165; // производительность человека кг./м*сек const lob_krom = 183.33; // производительность кромочника мм/сек const lob_prisad = 225; // производительность фрез ЧПУ мм^3 const sdvigGolovy = 13; // среднее время на сдвиг головы ЧПУ между отверстиями (сек.) const tr_rasr = 1.5; // длина руч.переноса деталей на уч.раскроя 1,5 м.пог. х1 const tr_krom = 2.2; // длина руч.переноса деталей на уч.кромки 1,1 м.пог. х2 const tr_prisad = 3.2; // длина руч.переноса деталей на уч.присадки 1,6 м.пог. х2
Model.forEach(function(Obj) {
if(!Obj) return;
switch (true) {
/* ТЕЛА ВРАЩЕНИЯ*/ case Obj instanceof TRotationBody: Obj.Delete() // удаляем т.к. уходит в бесконечный цикл и зависает. break; /* -------------------------------*/ /* ПАНЕЛИ */ case Obj instanceof TFurnPanel: alert("панель " + Obj.Name); var u_Smet = PriceDensityObj(Obj); // срока соответствия базе материалов
iZ_Sborki =iZ_Sborki + 0.25; // добавляем 15 секунд на каждую панель при сборке /* УЧАСТОК РАСКРОЯ */ var m_Zagotovki = 0; m_Zagotovki = Obj.ContourWidth * Obj.ContourHeight * Obj.Thickness * u_Smet.m_Density/1000000000; //вес заготовки в кг console.log('вес заготовки ' + Obj.Name+ " " + okrugl(m_Zagotovki, 3) +' кг.' ); Obj.UserProperty['вес заготовки(кг.)'] = okrugl(m_Zagotovki, 3); w_Izd = w_Izd + m_Zagotovki; var cutting_time = 0; cutting_time = (Obj.ContourWidth+Obj.ContourHeight)2 *Obj.Thickness * t_reza * u_Smet.m_Density/lob_reza; //время реза в сек. cutting_time = cutting_time/48; console.log('время чистого реза заготовки ' + cutting_time +' сек.' );
Obj.UserProperty['время чистого реза заготовки (сек)'] = okrugl(cutting_time, 2);
var cutting_time_min = 0; cutting_time_min = cutting_time /60; console.log('время на уч. раскроя ' + Obj.Name +' ' + cutting_time_min +' мин.' ); Obj.UserProperty['время на уч. раскроя (мин.)'] = 0.20 + okrugl(cutting_time_min, 2);
iZ_Rakr = iZ_Rakr + 0.20 + okrugl(cutting_time_min, 2); // Суммируем время раскроя console.log('время на уч. раскроя (сумма) ' + iZ_Rakr +' мин.' );
iZ_Pris = iZ_Pris + 0.15;
/* УЧАСТОК КРОМКИ */ var Objkr = {}; //доп свойства кромки var $_Kr = 0; //общая стоимость кромки var l_Kr = 0; //общая длина кромок панели
for (var iKr=0; iKr<Obj.Butts.Count; iKr++) { //считаем кромки панели Objkr.butt = Obj.Butts.Butts[iKr]; //Objkr.MaterialName = Objkr.butt.Material; //Objkr.zenaKr = PriceDensityObj(Objkr).m_Price; Objkr.elem = Obj.Contour.Objects[Objkr.butt.ElemIndex]; //элемент контура, на котором кромка Objkr.l= (Objkr.elem.ObjLength() + Objkr.butt.Overhung)/1000; //Длина элемента контура + Значение свеса кромки l_Kr = l_Kr + Objkr.l; //Objkr.$ = Objkr.l*Objkr.zenaKr; //$_Kr = $_Kr + Objkr.$; };
Obj.UserProperty['кол-во кромок (шт.)'] = Obj.Butts.Count; Obj.UserProperty['длина кромок (м.п)'] = okrugl(l_Kr, 3); //Obj.UserProperty['цена кромок панели (y.e)'] = okrugl($_Kr, 2);
var krom_time = l_Kr*1000/lob_krom; Obj.UserProperty['чистое время работы кромочника (сек)'] = okrugl(krom_time, 2); Obj.UserProperty['время на уч. облицовки (мин.)'] = okrugl((krom_time + Obj.Butts.Count*20)/60, 2); iZ_Krom = iZ_Krom + (krom_time + Obj.Butts.Count*20)/60; // Суммируем время облицовки
break; /* ФУРНИТУРА*/
case Obj instanceof TFastener:
/УЧАСТОК ПРИСАДКИ/ //alert("крепеж " + Obj.Name); //название крепежа //alert(Obj.Name + " содержит " + Obj.Holes.Count + " вложеных отверстия " ); var prisad_time = 0; var sborka_time = 0; for(let i = 0; i < Obj.Holes.Count; i++) //перебор вложенных элементов { let _f = Obj.Holes[i]; // обращаеся к объекту //console.log(' Ø' + _f.Diameter + 'x' +_f.Depth); //console.log('объём стружки = ' + (_f.Diameter*_f.Diameter)/4 * Math.PI * _f.Depth); // prisad_time = prisad_time +(_f.Diameter*_f.Diameter)/4 * Math.PI * _f.Depth/lob_prisad; sborka_time = sborka_time +(_f.Diameter*_f.Diameter)/4 * Math.PI * _f.Depth/180; }
iZ_Sborki =iZ_Sborki + sborka_time/60; Obj.UserProperty['чистое время работы ЧПУ (сек)'] = okrugl(prisad_time, 2); Obj.UserProperty['время на уч. присадки (мин.)'] = okrugl((prisad_time +(Obj.Holes.Count*sdvigGolovy))/60, 2); Obj.UserProperty['время сборки (мин.)'] = okrugl(sborka_time/60,1); iZ_Pris = iZ_Pris + (prisad_time +(Obj.Holes.Count*sdvigGolovy))/60; iZ_Sborki =iZ_Sborki + okrugl(sborka_time/60,1); prisad_time = 0; sborka_time = 0; break; }
//Model.UserProperty['цена Изделия (y.e)'] = okrugl($_Izd, 3); Model.UserProperty['Вес Изделия(кг)'] = okrugl(w_Izd, 3); Model.UserProperty['Время на раскрой (мин.)'] = okrugl(iZ_Rakr, 2); Model.UserProperty['Время на кромку (мин)'] = okrugl(iZ_Krom, 2); Model.UserProperty['Время на присадку ЧПУ(мин)'] = okrugl(iZ_Pris, 2); Model.UserProperty['Время на Сборку (мин)'] = okrugl(iZ_Sborki, 0)*1.25;
/---------------------конец forEach------------------/ });
alert('Вес Изделия ' + okrugl(w_Izd, 3) + ' кг. \n'+ 'Время на раскрой '+ okrugl(iZ_Rakr, 2) + ' мин. \n'+ 'Время на кромку '+ okrugl(iZ_Krom, 0) + ' мин. \n'+ 'Время на присадку ЧПУ '+ okrugl(iZ_Pris, 2) + ' мин.\n'+ 'Время на Сборку '+ okrugl(iZ_Sborki*1.25, 2) + ' мин.')
[свернуть]
Итог должен выглядеть примерно так.
__________________
С уважением Кузнецов Александр
Последний раз редактировалось АлКузнецов; 25.05.2022 в 22:58.
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
27.05.2022, 07:11
|
#188
|
Новичок
Регистрация: 22.05.2022
Сообщений: 1
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Здравствуйте! а в смету заглушки должны залетать? как настроить?..это к скрипту по добавлению заглушек
|
|
|
01.06.2022, 21:55
|
#189
|
Местный
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 294
|
скрываем лишнее
мелкий скрипт который временно скрывает все кроме того что выделено и после завершения восстанавливает видимость всех объектов к их первоначальному значению - если был виден станет виден, если был скрыт останется скрытым.
выделенные объекты на время работы скрипта становятся видимыми даже если были скрыты.
можно встроить в какие-нибудь скрипты, для облегчения выбора объектов во время работы.
Скрытый текст
Код HTML:
var selects = []
var all_objects = [];
for (var i = 0; i < Model.SelectionCount; ++i) {
selects.push(Model.Selections[i]);
}
Model.forEach(function(obj) {
all_objects.push({
obj: obj,
vis: obj.Visible
});
});
for (var i = 0; i < all_objects.length; ++i) {
all_objects[i].obj.Visible = false;
}
for (var i = 0; i < selects.length; ++i) {
selects[i].Visible = true;
}
alert('в этот момент можно что то делать))');
for (var i = 0; i < all_objects.length; ++i) {
all_objects[i].obj.Visible = all_objects[i].vis;
}
[свернуть]
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
|
|
|
6 пользователя(ей) сказали cпасибо:
|
|
11.06.2022, 03:11
|
#190
|
Местный
Регистрация: 01.09.2019
Сообщений: 424
Сказал(а) спасибо: 52
Поблагодарили 480 раз(а) в 147 сообщениях
Вес репутации: 196
|
Рисование текста в модели 3D
8н
Обновление.
Добавлен файл "Текст2.js".
+ Позиционирование текста относительно текущего вида
+ Оформление
+ Привязки
Скрипт разработан на основе кода от Igor_482.
Текст.zip
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 18:56. Часовой пояс GMT +3.
|