Форум профессиональных мебельщиков 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..
Просмотров: 549296
Ответить с цитированием Вверх
13 пользователя(ей) сказали cпасибо:
Старый 06.01.2022, 21:07   #131
Станислав Станилевич
Пользователь
 
Аватар для Станислав Станилевич
 
Регистрация: 19.02.2019
Адрес: На юге
Сообщений: 35
Сказал(а) спасибо: 21
Поблагодарили 154 раз(а) в 24 сообщениях
Вес репутации: 98
Станислав Станилевич - весьма и весьма положительная личностьСтанислав Станилевич - весьма и весьма положительная личность
По умолчанию Вес детали в пользовательские свойства.

Возможно уже было, но поиском не нашел(Модераторы простите)
Проверен в БМ21. Успешно работает с панели скриптов.

Вариант работы №1(С выделенными панелями):
1.Выбираем нужные детали, запускаем скрипт
2.Вводим плотность материала в поле ввода в кг/м3

Результат будет записан в пользовательских свойствах для каждой выделенной детали.

Вариант работы №2(Для всех панелей в модели):
1.Запустить скрипт
2.Вводим плотность материала в поле ввода в кг/м3

Результат будет записан в пользовательских свойствах для каждой детали.

Вариант работы определяется Вами. Код менять не требуется.

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
Миниатюры
2022-01-06_20-52-21.jpg   photo_2022-01-06_21-11-54.jpg  
Станислав Станилевич вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
demanus (16.05.2022), PravCom (06.01.2022), TProject (14.07.2023)
Старый 06.01.2022, 21:37   #132
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию

Цитата:
Сообщение от Станислав Станилевич Посмотреть сообщение
Возможно уже было, но поиском не нашел(Модераторы простите)
Проверен в БМ21. Успешно работает с панели скриптов.
есть похожее решение



работает в БС, МПЛ, и БМ10-21
__________________
С уважением Кузнецов Александр
АлКузнецов вне форума   Ответить с цитированием Вверх
Старый 12.01.2022, 08:56   #133
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию имитация FindConnectedFasteners() в 8-ке

Добрый день!
предлагаю к вниманию функцию FindConnectedFastenersBM8(obj) - создает список (массив) фурнитуры пересекающей исследуемую панель/профиль. сделана для 8-го Базиса, так как в нем еще нет стандартного метода FindConnectedFasteners(), который делает тоже самое в более поздних версиях БМ.
работает немного медленнее, но лучше чем ничего))
собственно сама функция с небольшим примером - запускаете скрипт, указываете панель(профиль), выделится фурнитура которая ее пересекает.

Скрытый текст

function FindConnectedFastenersBM8(obj) {
var mass_return = [];
if ((obj == '[object TFurnPanel]') || (obj == '[object TExtrusionBody]')) {
Model.forEach(function(fast) {
if (fast.toString() == '[object TFastener]') {
for (var i = 0; i < fast.Holes.Count; ++i) {
var hole_position = obj.ToObject(fast.ToGlobal(fast.Holes[i].Position));
var hole_direction = obj.NToObject(fast.NToGlobal(fast.Holes[i].Direction));
var hole_start_position = {
x: hole_position.x - (0.0000001 * hole_direction.x),
y: hole_position.y - (0.0000001 * hole_direction.y),
z: hole_position.z - (0.0000001 * hole_direction.z)
};
var hole_start_position_true = true;
if ((obj.Contour.IsPointInside(hole_start_position)) && (((hole_start_position.z >= 0) && (hole_start_position.z <= obj.Thickness)) || ((hole_start_position.z <= 0) && (hole_start_position.z >= obj.Thickness)))) {
hole_start_position_true = false;
}
var hole_end_position_true = false;
if (fast.Holes[i].DrillMode == 2) {
var hole_end_position = {
x: hole_position.x + (fast.Holes[i].Depth * hole_direction.x),
y: hole_position.y + (fast.Holes[i].Depth * hole_direction.y),
z: hole_position.z + (fast.Holes[i].Depth * hole_direction.z)
};
if ((obj.Contour.IsPointInside(hole_end_position)) && (((hole_end_position.z >= 0) && (hole_end_position.z <= obj.Thickness)) || ((hole_end_position.z <= 0) && (hole_end_position.z >= obj.Thickness)))) {
hole_end_position_true = true;
}
}
if ((fast.Holes[i].DrillMode == 0) || (fast.Holes[i].DrillMode == 1)) {
for (var r = 0.5; r < fast.Holes[i].Depth + 0.5; r = r + 0.5) {
var hole_end_position = {
x: hole_position.x + (r * hole_direction.x),
y: hole_position.y + (r * hole_direction.y),
z: hole_position.z + (r * hole_direction.z)
};
if ((obj.Contour.IsPointInside(hole_end_position)) && (((hole_end_position.z >= 0) && (hole_end_position.z <= obj.Thickness)) || ((hole_end_position.z <= 0) && (hole_end_position.z >= obj.Thickness)))) {
hole_end_position_true = true;
r = fast.Holes[i].Depth + 0.5;
}
}
}
if ((hole_start_position_true) && (hole_end_position_true)) {
mass_return.push(fast);
i = fast.Holes.Count;
}
}
}
});
}
return mass_return;
}


var panel_or_profil = GetObject();
var fast_conected_obj = FindConnectedFastenersBM8(panel_or_profil);
for (var i = 0; i < fast_conected_obj.length; ++i) {
fast_conected_obj[i].Selected = true;
}
[свернуть]
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
Ovsyanicov (12.01.2022), PravCom (12.01.2022), Джекидс (12.01.2022)
Старый 12.01.2022, 14:15   #134
Джекидс
Модератор
 
Регистрация: 07.05.2009
Адрес: Украина, Харьков
Сообщений: 702
Сказал(а) спасибо: 843
Поблагодарили 2,492 раз(а) в 371 сообщениях
Вес репутации: 751
Джекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспорима
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
Добрый день!
предлагаю к вниманию функцию FindConnectedFastenersBM8(obj)......
Подскажите для чего писался данный скрипт?
Я вижу для себя пользу для выделения крепежа на указанной панели, с дальнейшими действиями такими как удаление, замена и т.д. Если подскажите еще способы применения буду благодарен. Но, основной вопрос в другом, может ли данный скрипт забирать не только фурнитуру и но и родительский блок/фрагмент, а то выделил, удалил, а много ненужных "артефактов в дереве осталось" скрин того что имеется в виду прилагаю. Или возможно подобный скрипт под БМ 11 уже имеется? тогда буду благодарен за ссылочку...

Скрытый текст


[свернуть]
Джекидс вне форума   Ответить с цитированием Вверх
Старый 12.01.2022, 14:51   #135
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Джекидс Посмотреть сообщение
Подскажите для чего писался данный скрипт?
Я вижу для себя пользу для выделения крепежа на указанной панели, с дальнейшими действиями такими как удаление, замена и т.д. Если подскажите еще способы применения буду благодарен. Но, основной вопрос в другом, может ли данный скрипт забирать не только фурнитуру и но и родительский блок/фрагмент, а то выделил, удалил, а много ненужных "артефактов в дереве осталось" скрин того что имеется в виду прилагаю. Или возможно подобный скрипт под БМ 11 уже имеется? тогда буду благодарен за ссылочку...

Скрытый текст


[свернуть]
Этот скрипт писался просто так)) в другой ветке выкладывал скрипт по выделению отверстий если их глубина превышает допустимые значения. Так вот в том скрипте используется как раз эта функция для работы скрипта в БМ8.
По вашему вопросу, нужно лишь дописать проверку на принадлежность выделенной фурнитуры к группирове - является ли он частью составной фурнитуры или фрагмента и если ДА, то выделить всю эту группировку. Это не сложно, но индивидуально, каждый создает фрагменты по своему.
Пришли модель которая на скрине, посмотрю.
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Джекидс (12.01.2022)
Старый 12.01.2022, 16:13   #136
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию

Цитата:
Сообщение от Джекидс Посмотреть сообщение
А как можно прописать класс материала из obj.UserProperty, вернее как он "понятие" называется в БМ?
Главный вопрос - "А зачем оно вам надо?"
Не берусь давать советы, но подумайте насколько ценно и необходимо редактировать базу материалов, из окна свойств пользователя? Есть ли в этом мысл?

В "БазеМатериалов.FDB" больше полутора десятков таблиц. + SQL запросы и генераторы функций. (Отдельные "базы операций" и "статей затрат" мы в рачет не берём).

Классы материалов, как вы уже догадались, записаны в отдельной таблице. В таблицу матералов добавляются лишь коды класса в виде цифр счетчика.
Добраться до значений этой таблицы можно, обновить базу материалов, добавив новую строку, с кодами классов материала тоже можно (по крайней мере теоретически...).
Вопрос тот же - "Зачем?"

На практике: реализация такой задумки - одна большая головная боль и минимум две нерешаемые на любительском уровне проблемы:
  1. SQL и JS работают с разной скоростью. Разделить ответственность и делегировать полномочия функций на разных языках программирования, чтобы синхронизировать их работу ...те ещё танцы с бубнами. (у меня не получилось)
  2. Стабильность работы и время отклика
    Придётся много колдовать с SQL функциями и запросами, чтобы скрестить их с функциями JS/ Стабильность таких операций так себе (т.е. "около нулевая". Особенно если прога написана любителем самоучкой, не понимающми доконца всех нюансов струтуры редактируемой базы) - вы рискуете потерять базу материалов целиком. Причем ванезапно, и не сразу, а непонятно когда.
    Можно конено тренироваться на "резевной копии", а потом "осторожно" маяятся с синхронизацией дубликатов. (Честно говоря удовольствие на любителя). Но это нерешение проблемы, а генерация новых.

Главное — я не понимаю смысла этой "увлекательной" работы.

Редактивать "БазуМатериалов.FDB" через "чёрный ход" написанный юзером, без критических последствий от которых база моментально*"просыпется" -- всеравно не получиться.
Если бы это было так просто давно бы уж написали, и вынесли.

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

Я согласен: часто возникает жесткая необходимость оснастить материал доп. свойствами

например

  1. Плотность, (вес изделия, и деталей (складирование, погрузка, запросы в трансопрную компанию))
  2. модуль упругости, (прочностные расчёты на прогиб здвиг и разрыв деталей )
  3. влажность, (попрвки на вес и скорость подачи)
  4. твёрдость по Моссу и Бринелю, (прочностные рачеты, скорость подачи, расчет времени тех. операций)
  5. маршрут обработки материала
    (генерируемый из комбинации свойств: пазов, кромок, пластиков и контура конкретной панели(бирки деталей, сортировка, ОТК, расчеты загрузки тех.участков))
[свернуть]


В этом случае (ИМХО) лучше написать простой и независимый "костыль" ЭрзацБазыМатериалов на JS, для очень узких задач , а не вешиваться в работу Сметы. (Результат получится в разы быстре и надежнее)

Пример базы данных с доп свойсвтвами


Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

[свернуть]


PS:Ни цену, ни коэффицент запаса, я бы скритом не назначал.
__________________
С уважением Кузнецов Александр
АлКузнецов вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Джекидс (12.01.2022)
Старый 12.01.2022, 16:31   #137
Джекидс
Модератор
 
Регистрация: 07.05.2009
Адрес: Украина, Харьков
Сообщений: 702
Сказал(а) спасибо: 843
Поблагодарили 2,492 раз(а) в 371 сообщениях
Вес репутации: 751
Джекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспорима
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
Пришли модель которая на скрине, посмотрю.
Отправил в личку

Цитата:
Сообщение от АлКузнецов Посмотреть сообщение
Главный вопрос - "А зачем оно вам надо?"
Ваш скрипт с изменением названия материала снял "клятый" вопрос как работать и не плодить сотни одноразовых материалов, не записывать все это в БД, и в тоже время создавать нормальные доки с понятными материалами для производства (место ДСП18-1, ДСП18-2 и т.д.) но специфика работы такова что требуется и название материала для читабельности и информативности, а вот для производства деталей и заказа фурнитуры важен исключительно артикул (основа всего процесса), немного подкрутив строку вашего скрипта он заработал как нужно, т.е. записывает данные именно в том виде, в каком они читаются в последующей обработке. Так вот, причем тут классы материалов, все просто, желание причесать все туже эстетику в смете, идея была такова: после переименования материала+его артикула дописать и его класс, да таким образом чтобы сохранилась эта инфа лишь в модели, не записывая и не трогая БД. Если несуществующий материал и его артикул могут записаться в модель, я сделал вывод что и класс материала тоже можно записать в модель, а имея нужный класс в материале он попадает в соответствующую таблицу сметы, все красиво и эстетично. Вот как-то так, править БД скриптами я и не планировал, т.к. согласен с вами это черный ход. По этому и возник мой вопрос, как называется то поле, куда очень хочется вкорячить скриптом класс материала, если так не получиться, жаль, но наверное пережить можно
Джекидс вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
zzerg (24.02.2023)
Старый 12.01.2022, 16:53   #138
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 212
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию

Цитата:
Сообщение от Джекидс Посмотреть сообщение
Так вот, причем тут классы материалов, все просто, желание причесать все туже эстетику в смете, идея была такова: после переименования материала+его артикула дописать и его класс, да таким образом чтобы сохранилась эта инфа лишь в модели, не записывая и не трогая БД. Если несуществующий материал и его артикул могут записаться в модель, я сделал вывод что и класс материала тоже можно записать в модель, а имея нужный класс в материале он попадает в соответствующую таблицу сметы, все красиво и эстетично.
Решал нечто подобное (проблема "одноразовых" матералов типа: "Цвет покраски по RAL ").
Не доконца понимаю: как налиичие класса матерала на что-то влияет в смете. Можно визуальный пример? Желательно в виде конечного результата (я так понимаю идет сортировка по "вкладкам" итоговой сметы ).

Иногда проще сгенерировать и сохранить рапорт в вормате *.txt или *.exel в нужную папку на сервере, чем воевать со сметой.

Цитата:
Сообщение от Джекидс Посмотреть сообщение
По этому и возник мой вопрос, как называется то поле, куда очень хочется вкорячить скриптом класс материала, если так не получиться, жаль, но наверное пережить можно
такого поля точно нет, и скорее всего оно никогда не появится (специфика "FurnMaterial" и баз данных написанных на SQL)
__________________
С уважением Кузнецов Александр
АлКузнецов вне форума   Ответить с цитированием Вверх
Старый 12.01.2022, 17:15   #139
Джекидс
Модератор
 
Регистрация: 07.05.2009
Адрес: Украина, Харьков
Сообщений: 702
Сказал(а) спасибо: 843
Поблагодарили 2,492 раз(а) в 371 сообщениях
Вес репутации: 751
Джекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспоримаДжекидс репутация неоспорима
По умолчанию

Цитата:
Сообщение от АлКузнецов Посмотреть сообщение
(я так понимаю идет сортировка по "вкладкам" итоговой сметы
Да именно так! Ладно, думаю переживем если что))
Джекидс вне форума   Ответить с цитированием Вверх
Старый 12.01.2022, 17:49   #140
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Предположим материал записали руками, артикул тоже. В базе этого нет.
Если нужна еще инфа, можно записывать это просто в пользовательские свойства.
Польз.свойства отображаются в спецификациях, кажется так же в xml.
Ну как вариант..
__________________
Оно поди конечно если, а как коснись чего-нибудь, так вот те на пожалуйста..
kos100pudov вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Джекидс (12.01.2022)
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков 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


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


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

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