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

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


Реклама на портале PROMEBELclub
шкаф-купе со скидкой по акции
Реклама на портале PROMEBELclub

искусственный камень Мебель196. Мебельный интернет-магазин в Екатеринбурге.
Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 09:56  
БАЗИС 10 - Скрипты
systland
Модератор
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 560

Сказал(а) спасибо: 291
Поблагодарили 427 раз(а) в 179 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 06.06.2017, 09:56
Рейтинг: (3 голосов - 4.00 средняя оценка)

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


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

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

Господа скрипто писатели, пожалуйста, кому не сложно сделайте скриптик чтоб на модели выделялись все детали с торцевыми отверстиями.
__________________
potomu4to вне форума   Ответить с цитированием Вверх
Старый 10.12.2018, 14:43   #313
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 262
Сказал(а) спасибо: 53
Поблагодарили 471 раз(а) в 177 сообщениях
Вес репутации: 140
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 вне форума   Ответить с цитированием Вверх
10 пользователя(ей) сказали cпасибо:
Старый 10.12.2018, 15:03   #314
potomu4to
Местный
 
Аватар для potomu4to
 
Регистрация: 18.02.2008
Адрес: Санкт-Петербург
Сообщений: 441
Сказал(а) спасибо: 355
Поблагодарили 291 раз(а) в 95 сообщениях
Вес репутации: 236
potomu4to как роза среди колючекpotomu4to как роза среди колючекpotomu4to как роза среди колючек
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Проверял на параметрической фурнитуре (стяжки, евровинты), насчёт произвольной ничего сказать не могу. Если скрипт будет работать неправильно - приложите простой пример, спробуем разобраться.
Спасибо вам большое что помогли.Пока проблем не нашел, случай чего в личку напишу.
__________________
potomu4to вне форума   Ответить с цитированием Вверх
Старый 25.12.2018, 21:55   #315
bbb i ko
VIP
 
Аватар для bbb i ko
 
Регистрация: 04.07.2012
Сообщений: 1,627
Сказал(а) спасибо: 3,070
Поблагодарили 2,999 раз(а) в 945 сообщениях
Вес репутации: 843
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 Кб, 3 просмотров)
__________________
http://www.upro.su
скачать демоверсию системы
Автоматизация мебельного бизнеса на базе 1С
Нетривиальное решение с широкими возможностями
bbb i ko вне форума   Ответить с цитированием Вверх
Старый 26.12.2018, 09:53   #316
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 262
Сказал(а) спасибо: 53
Поблагодарили 471 раз(а) в 177 сообщениях
Вес репутации: 140
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
Сообщений: 262
Сказал(а) спасибо: 53
Поблагодарили 471 раз(а) в 177 сообщениях
Вес репутации: 140
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 вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
bbb i ko (27.12.2018), KLIM_58 (27.12.2018), Ovsyanicov (27.12.2018)
Старый 10.01.2019, 11:23   #319
fanest
Пользователь
 
Регистрация: 26.09.2014
Сообщений: 31
Сказал(а) спасибо: 39
Поблагодарили 13 раз(а) в 4 сообщениях
Вес репутации: 59
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
Сообщений: 262
Сказал(а) спасибо: 53
Поблагодарили 471 раз(а) в 177 сообщениях
Вес репутации: 140
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.0 763 13.02.2019 06:43
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7.0 2228 12.09.2016 19:13
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 10:08


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


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
© 2007-2018 PROMEBEL