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

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

Меню

Маркет


беспроводные выключатели для мебели
Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 08:56  
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 06.06.2017, 08:56
Рейтинг: ()

Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
__________________


Последний раз редактировалось systland; 26.12.2017 в 11:52..
Просмотров: 425154
Ответить с цитированием Вверх
Старый 06.12.2018, 11:04   #311
igor_medved
Новичок
 
Регистрация: 11.07.2018
Сообщений: 13
Сказал(а) спасибо: 22
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
igor_medved пока не определено
По умолчанию

Ovsyanicov,
Огромное спасибо!
Вообще их поддержка не вдохновила, задал вопрос по тому как считать ЛДСП шт а не кв.м, получил сухие ответы, например на форуме расписали этот вопрос по полочкам.
igor_medved вне форума   Ответить с цитированием Вверх
Старый 10.12.2018, 10:37   #312
potomu4to
Местный
 
Аватар для potomu4to
 
Регистрация: 18.02.2008
Адрес: Санкт-Петербург
Сообщений: 508
Сказал(а) спасибо: 531
Поблагодарили 401 раз(а) в 127 сообщениях
Вес репутации: 327
potomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человек
По умолчанию

Господа скрипто писатели, пожалуйста, кому не сложно сделайте скриптик чтоб на модели выделялись все детали с торцевыми отверстиями.
__________________
potomu4to вне форума   Ответить с цитированием Вверх
Старый 10.12.2018, 14:43   #313
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от potomu4to Посмотреть сообщение
Господа скрипто писатели, пожалуйста, кому не сложно сделайте скриптик чтоб на модели выделялись все детали с торцевыми отверстиями.
Сделано:

Код

Код:
function Equals(n1, n2){
    return Math.abs(n1 - n2) < 0.001;
  }
  
  function EqualsV(v1, v2) {
    return Equals(v1.x, v2.x) &&
    Equals(v1.y, v2.y) &&
    Equals(v1.z, v2.z);
  }
  
  function CheckWithPanel(gDir, panel){
    return (EqualsV(gDir, panel.NToGlobal(AxisX)) ||
      EqualsV(gDir, panel.NToGlobal(Axis_X)) ||
      EqualsV(gDir, panel.NToGlobal(AxisY)) ||
      EqualsV(gDir, panel.NToGlobal(Axis_Y)))
  }
  
  function CheckHole(hole, fast, panel){
    var holeCenter = fast.ToGlobal({
      x: hole.Position.x + hole.Direction.x * (hole.Depth / 2),
      y: hole.Position.y + hole.Direction.y * (hole.Depth / 2),
      z: hole.Position.z + hole.Direction.z * (hole.Depth / 2),
    })
    holeCenter = panel.ToObject(holeCenter);
    return (holeCenter.x > panel.GMin.x) && (holeCenter.x < panel.GMax.x) &&
      (holeCenter.y > panel.GMin.y) && (holeCenter.y < panel.GMax.y) &&
      (holeCenter.z > panel.GMin.z) && (holeCenter.z < panel.GMax.z);
  }
  
  Model.UnSelectAll();
  Model.forEachPanel(function (panel) {
    var fasts = panel.FindConnectedFasteners();  
    for (var i = 0; i < fasts.length; i++) {
      var fast = fasts[i];
      var holes = fast.Holes;
      if (holes && holes.Count > 0) {
        for (var j = 0; j < holes.Count; j++) {
          var hole = holes[j];
          if (CheckWithPanel(fast.NToGlobal(hole.Direction), panel) && 
            CheckHole(hole, fast, panel)){
            panel.Selected = true;
            break;
          }
        }
      }
      else {
        fastDir = fast.NToGlobal(AxisX);
        if (CheckWithPanel(fastDir, panel))
          panel.Selected = true;
      }
    }
  })
[свернуть]

Проверял на параметрической фурнитуре (стяжки, евровинты), насчёт произвольной ничего сказать не могу. Если скрипт будет работать неправильно - приложите простой пример, спробуем разобраться.

Обновление 15:09
Поправил код. Добавил сравнение с точностью 0.001 - из-за погрешностей в числах с плавающей точкой могли не выделяться панели.

Обновление 15:22
В очередной раз поправил код. Исправил ошибку, что проверка равности векторов была только по оси Х

Обновление 21.12.18 11:30
В очередной раз поправил последствия копипасты. До этого не было проверки равности направления отверстия с направлением +У панели, поэтому не все панели могли выделяться.

Последний раз редактировалось Letos; 21.12.2018 в 11:33. Причина: Поправил в очередной раз код
Letos вне форума   Ответить с цитированием Вверх
12 пользователя(ей) сказали cпасибо:
Старый 10.12.2018, 15:03   #314
potomu4to
Местный
 
Аватар для potomu4to
 
Регистрация: 18.02.2008
Адрес: Санкт-Петербург
Сообщений: 508
Сказал(а) спасибо: 531
Поблагодарили 401 раз(а) в 127 сообщениях
Вес репутации: 327
potomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человекpotomu4to - очень-очень хороший человек
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Проверял на параметрической фурнитуре (стяжки, евровинты), насчёт произвольной ничего сказать не могу. Если скрипт будет работать неправильно - приложите простой пример, спробуем разобраться.
Спасибо вам большое что помогли.Пока проблем не нашел, случай чего в личку напишу.
__________________
potomu4to вне форума   Ответить с цитированием Вверх
Старый 25.12.2018, 21:55   #315
bbb i ko
VIP
 
Регистрация: 04.07.2012
Сообщений: 1,946
Сказал(а) спасибо: 3,974
Поблагодарили 3,530 раз(а) в 1,157 сообщениях
Вес репутации: 1043
bbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспоримаbbb i ko репутация неоспорима
По умолчанию

Что представляют из себя объекты импортированные из AutoCad? Можно ли при вести эти объекты к типу Panel? На всякий случай прикрепил импортированную модель.
Вложения
Тип файла: rar тумба.rar (70.3 Кб, 12 просмотров)
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 26.12.2018, 09:53   #316
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от bbb i ko Посмотреть сообщение
Что представляют из себя объекты импортированные из AutoCad? Можно ли при вести эти объекты к типу Panel?
Импортированные 3д объекты представляют из себя TImportedMesh и просто так их к панели не приведёшь. Самый простой способ - анализировать треугольники объекта и на основе их данных создавать панель. Но это только для простых панелей просто. Обычная прямоугольная панель - 12 треугольников (по 2 треугольника на каждую плоскость). Одну линию контура заменил на дугу - всё, уже 212 треугольников. А если с пазами - так это вообще замучаешься.
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
bbb i ko (26.12.2018), Ovsyanicov (26.12.2018)
Старый 27.12.2018, 11:00   #317
KLIM_58
Новичок
 
Регистрация: 27.12.2018
Адрес: Кузнецк
Сообщений: 1
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
KLIM_58 пока не определено
По умолчанию Скрипт "Замена фурнитуры и блоков"

Добрый день. Интересует, есть ли скриптовая команда которая позволит запустить функцию БМ10 "Замена фурнитуры и блоков"? Цель следующая: на производство поступает файл в котором указанны изменения стандартного модуля, оператор запускает скрипт и автоматически производится замена параметров, указанных в файле.
KLIM_58 вне форума   Ответить с цитированием Вверх
Старый 27.12.2018, 14:41   #318
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от KLIM_58 Посмотреть сообщение
Добрый день. Интересует, есть ли скриптовая команда которая позволит запустить функцию БМ10 "Замена фурнитуры и блоков"? Цель следующая: на производство поступает файл в котором указанны изменения стандартного модуля, оператор запускает скрипт и автоматически производится замена параметров, указанных в файле.
Функция замены фурнитуры есть (Action.ReplaceFurniture), но второй параметр - массив объектов фурнитуры, а не строк. Но если серьёзно заморочиться, можно написать скрипт. Один из вариантов - сохранять информацию о фурнитуре в строку и использовать её (строку) для загрузки объекта фурнитуры в скрипте. Вот самый простой пример:
Код:
var furn = Action.Properties.NewFurnitureValue();
furn.Choose();
var furnStr = furn.EncodeToString();
В переменной furnStr будет строка, которую можно сохранить и потом использовать в скрипте замены. А для загрузки параметров фурнитуры из строки есть следующая функция:
Код:
furn.DecodeFromString(furnStr);
По поводу самой функции Action.ReplaceFurniture. У неё три параметра:
1. Старая фурнитура (массив строк)
2. Новая фурнитура (массив объектов фурнитуры (тип InfFurniture в подсказке))
3. Крепёж для замены (массив 3д объектов).

И одна загвоздка - первые два массива должны быть одинаковой длины, иначе не заработает замена.
Letos вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
bbb i ko (27.12.2018), KLIM_58 (27.12.2018), Megabyte (23.03.2022), Ovsyanicov (27.12.2018), rysla._ua (25.04.2023)
Старый 10.01.2019, 11:23   #319
fanest
Пользователь
 
Регистрация: 26.09.2014
Сообщений: 46
Сказал(а) спасибо: 55
Поблагодарили 15 раз(а) в 5 сообщениях
Вес репутации: 123
fanest на пути к лучшему
По умолчанию

Уважаемые форумчане. Как-то коснулся задачи определения веса изделия. Был у меня скрипт (не помню автора), так в 9-ке работал отлично, но в 10-ке он не работает. Подскажите, где поправить?
Код:

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

Плотность = 0.68;

weight = 0;
spam = confirm ('Подсвечивать панели в процессе взвешивания?');

for (i=0; i<Model.Count; i++) {
Model.Objects [i].Selected = true;
// if (ispanel (Model.Objects [i].GSize.x, Model.Objects [i].GSize.y, Model.Objects [i].GSize.z)){
if (Model.Objects [i].AsPanel){
weight = weight +
(Model.Objects [i].GSize.x) *
(Model.Objects [i].GSize.y) *
(Model.Objects [i].GSize.z) / 1000 / 1000 * Плотность;
if (spam) { alert ('Панель взвешена'); }
}
Model.Objects [i].Selected = false;
}

alert ('Примерный вес изделия: ' + Math.round (weight) + 'кг');

function ispanel (a, b, c) {
aa = a;
bb = b;
cc = c;
if (aa > bb) {
t = aa;
aa = bb;
bb = t;
}
if (bb > cc) {
t = bb;
bb = cc;
cc = t;
}
if (aa > bb) {
t = aa;
aa = bb;
bb = t;
}
if ((aa < 50) && (bb > 50)) { return 1; }
else { return 0; }
}
[свернуть]
fanest вне форума   Ответить с цитированием Вверх
Старый 10.01.2019, 12:11   #320
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от fanest Посмотреть сообщение
Уважаемые форумчане. Как-то коснулся задачи определения веса изделия. Был у меня скрипт (не помню автора), так в 9-ке работал отлично, но в 10-ке он не работает. Подскажите, где поправить?
Код:

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

Плотность = 0.68;

weight = 0;
spam = confirm ('Подсвечивать панели в процессе взвешивания?');

for (i=0; i<Model.Count; i++) {
Model.Objects [i].Selected = true;
// if (ispanel (Model.Objects [i].GSize.x, Model.Objects [i].GSize.y, Model.Objects [i].GSize.z)){
if (Model.Objects [i].AsPanel){
weight = weight +
(Model.Objects [i].GSize.x) *
(Model.Objects [i].GSize.y) *
(Model.Objects [i].GSize.z) / 1000 / 1000 * Плотность;
if (spam) { alert ('Панель взвешена'); }
}
Model.Objects [i].Selected = false;
}

alert ('Примерный вес изделия: ' + Math.round (weight) + 'кг');

function ispanel (a, b, c) {
aa = a;
bb = b;
cc = c;
if (aa > bb) {
t = aa;
aa = bb;
bb = t;
}
if (bb > cc) {
t = bb;
bb = cc;
cc = t;
}
if (aa > bb) {
t = aa;
aa = bb;
bb = t;
}
if ((aa < 50) && (bb > 50)) { return 1; }
else { return 0; }
}
[свернуть]
А что не так со скриптом? У меня он запустился и выдал примерный вес. Сразу по скрипту могу сказать, что он считает вес только на корневом (верхнем) уровне модели, поэтому, если вес не совпадает, это можно исправить. А если не в этом дело, то опишите, что неправильно работает.
Если вообще не запускается, запустите через редактор скриптов и пришлите скриншот с тем, что записалось в лог редактора
Letos вне форума   Ответить с цитированием Вверх
Ответ

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

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-Мебельщик 10 systland Базис-мебельщик 10 1264 13.03.2024 22:48
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7 2230 29.11.2019 10:37
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 10:08


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


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

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