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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 21.12.2017, 12:21  
Заявки на создание скрипта.
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

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

Тема создана для размещения заявок на написание скриптов.

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

Заявки типа "Мне нужен скрипт для расстановки полок" или подобные рискуют остаться без внимания.

Любые заявки не обязательны для рассмотрения. Если Вам не ответили, значит по какой-либо причине нет возможности её выполнить.
Альтернативный вариант - обратиться лично к тем, кто может оказать такую услугу

Другие сообщения, не соответствующие назначению темы, будут удалены без предупреждения!

Просьба после того, как заявка будет выполнена и утратившая актуальность по другим причинам, оставлять соответствующее сообщение в этой же теме или обратится к модератору для закрытия заявки.
__________________


Последний раз редактировалось Uncle; 03.02.2020 в 20:07.. Причина: Поправил шапку
Просмотров: 330898
Ответить с цитированием Вверх
Старый 01.02.2024, 19:54   #671
DBTSP
Новичок
 
Регистрация: 15.12.2023
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
DBTSP пока не определено
По умолчанию

Писал кто скрипт на проверку пересечения панелей?
DBTSP вне форума   Ответить с цитированием Вверх
Старый 01.02.2024, 20:22   #672
artart
VIP
 
Аватар для artart
 
Регистрация: 13.09.2008
Адрес: Москва
Сообщений: 2,547
Сказал(а) спасибо: 5,788
Поблагодарили 7,200 раз(а) в 1,791 сообщениях
Вес репутации: 1885
artart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспоримаartart репутация неоспорима
По умолчанию

Цитата:
Сообщение от DBTSP Посмотреть сообщение
Писал кто скрипт на проверку пересечения панелей?
С этим справляется анализ модели. Зачем еще дополнительный скрипт
__________________
"Кому, что нравится!" - сказал кот Васька , вылизывая собственные яйца
artart вне форума   Ответить с цитированием Вверх
Старый 16.02.2024, 12:22   #673
destyner
Новичок
 
Регистрация: 16.10.2010
Сообщений: 8
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
destyner пока не определено
По умолчанию

Всем привет! Есть ли какой-то способ изменения цвета фурнитуры в соответствии с заданным декором ЛДСП? Например у меня спроектирован стол письменный в цвете Выбеленный дуб, на котором заглушка кабель-канала и опоры в белом цвете. Далее я меняю ЛДСП в схеме замены материала на, например, Венге, а опоры и заглушка должны поменяться на черные. Потом на Дуб сонома и, соответственно, цвет заглушки и опор должен смениться на, например, рыжие. Мне это нужно просто для выгрузки картинок, коих у меня должно получиться в районе 19 тысяч на все стандартные позиции разработанной мебели. Можно, канеш, вручную перетаскивать соответствующие текстуры на эту фурнитуру, но у меня тогда год уйдет на эти манипуляции((
Может есть уже такое решение?
P.S. Базис 2023



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

Здесь, на форуме, я нашёл скрипт добавления заглушек по цвету
В нём можно прописать заданные отверстия, к которым будут добавляться заглушки. В базу материалов я добавил заглушки различных цветов и теперь каждой текстуре ЛДСП у меня соответствует своя по цвету заглушка.
Собственно, есть ли подобная возможность назначить цвета прописанному типу фурнитуры в соответствии с декором ЛДСП?
Сам я не программист ни разу((

Последний раз редактировалось AlexBolton; 16.02.2024 в 16:38. Причина: Превью для вставки на форум, оформление, ссыли на источник.
destyner вне форума   Ответить с цитированием Вверх
Старый 24.02.2024, 13:43   #674
DBTSP
Новичок
 
Регистрация: 15.12.2023
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
DBTSP пока не определено
По умолчанию

Добавлено через 2 минуты
Цитата:
Сообщение от artart Посмотреть сообщение
Цитата:
Сообщение от DBTSP
Писал кто скрипт на проверку пересечения панелей?
С этим справляется анализ модели. Зачем еще дополнительный скрипт
__________________
"Кому, что нравится!" - сказал кот Васька , вылизывая собственные яйца
Нужен не сам скрипт, а функция для дальнейшего построения.

Пример:
1) при вращении двух панелей в 3-х плоскостях образовывался торцевой спил по биссектрисе .
2) аналогичная вращение, только спил у одной из панелей.

Для этого нужна функция проверки пересечения панелей и определения контура пересечения
DBTSP вне форума   Ответить с цитированием Вверх
Старый 24.02.2024, 17:39   #675
Slav
Местный
 
Регистрация: 15.05.2012
Адрес: Москва
Сообщений: 259
Сказал(а) спасибо: 43
Поблагодарили 211 раз(а) в 89 сообщениях
Вес репутации: 213
Slav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личность
По умолчанию

Такого скрипта пока нет. А при вращении панелей никаких спилов тоже не наблюдалось.
Зато существуют уже платные скрипты, которые при пересечении панелей могут создавать наклонные спилы, в местах сопряжения панелей. Вам это нужно?
Slav вне форума   Ответить с цитированием Вверх
Старый 25.02.2024, 14:34   #676
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Цитата:
Сообщение от DBTSP Посмотреть сообщение
Писал кто скрипт на проверку пересечения панелей?
есть только сырой вариант, работает только если идеальная стыковка :
PHP код:
function getPanelsFromObj(obj) {
  const 
panels = [];

  if (
obj instanceof TFurnPanel) {
    
panels.push(obj);
  } else if (
obj instanceof TModelLimits || obj instanceof TFurnBlock || obj instanceof TDraftBlock || obj instanceof TFurnAsm || obj instanceof TLayer3D) {
    const 
childCount obj.Count;
    for (
let i 0childCounti++) {
      const 
childObj obj.Objects[i];
      
panels.push(...getPanelsFromObj(childObj));
    }
  }

  return 
panels;
}

  function 
isEqualObjects(ab) {
    const 
epsilon 1e-6;
    for (const 
key in b) {
      if (
typeof a[key] === 'number' && typeof b[key] === 'number') {
        if (
Math.abs(a[key] - b[key]) > epsilon) return false;
      } else {
        if (
a[key] !== b[key]) return false;
      }
    }
    return 
true;
  }

function 
ProcessSelectedPanels() {
  const 
selectedObjects Model.Selections;
  const 
ObjCount Model.SelectionCount;

  if (
ObjCount 2) {
    
alert("Выберите хотя бы два объекта.");
    return;
  }

  const 
selectedPanels = [];
  for (
let i 0ObjCounti++) {
    const 
panels getPanelsFromObj(selectedObjects[i]);
    
selectedPanels.push(...panels);
  }

  const 
PanelCount selectedPanels.length;

  if (
PanelCount 2) {
    
alert("Выберите хотя бы две панели.");
    return;
  }

  for (
let i 0PanelCount 1i++) {
    for (
let j 1PanelCountj++) {
      const 
PanelA selectedPanels[i];
      const 
PanelB selectedPanels[j];

      if (
PanelA instanceof TFurnPanel && PanelB instanceof TFurnPanel) {
        const 
EdgeA FindCommonEdge(PanelAPanelB);
        const 
EdgeB FindCommonEdge(PanelBPanelA);

        if (
EdgeA && EdgeB) {
          const 
Angle GetAngle(PanelAPanelBEdgeA);
          
SetCut(PanelAAngle 2EdgeA);
          
SetCut(PanelBAngle 2EdgeB);
        }
      }
    }
  }
}

  function 
FindCommonEdge(PanelAPanelB) {
  for (
let i 0PanelA.EdgesCounti++) {
    const 
EdgeA PanelA.Edges[i];
    for (
let j 0PanelB.EdgesCountj++) {
      const 
EdgeB PanelB.Edges[j];
      if (
isEqualEdges(EdgeAEdgeB)) {
        
console.log('Found common Edge:'EdgeA);
        return 
EdgeA;
      }
    }
  }
  
console.log("No common edge found.");
  return 
null;
}

function 
isEqualEdges(EdgeAEdgeB) {
  return 
isEqualObjects(EdgeA.GFirstEdgeB.GFirst) && isEqualObjects(EdgeA.GLastEdgeB.GLast) ||
         
isEqualObjects(EdgeA.GFirstEdgeB.GLast) && isEqualObjects(EdgeA.GLastEdgeB.GFirst);
}


  function 
IsEqualObjects(ab) {
    const 
epsilon 1e-6;
    for (const 
key in b) {
      if (
typeof a[key] === 'number' && typeof b[key] === 'number') {
        if (
Math.abs(a[key] - b[key]) > epsilon) return false;
      } else {
        if (
a[key] !== b[key]) return false;
      }
    }
    return 
true;
  }

  function 
radiansToAngle(radians) {
    return (
180 Math.PI) * radians;
  }

  function 
GetNormEdge(EdgePanel) {
    const 
Axis IsEqualObjects(Edge.Dir(), AxisX) || IsEqualObjects(Edge.Dir(), Axis_X) ? AxisY AxisX;
    
console.log('Axis for comparison:'Axis);
    
console.log('Panel Edges:'Panel.Edges);
    
let foundNormEdge null;
    for (
let i 0Panel.EdgesCounti++) {
      
console.log('Checking Edge:'Panel.Edges[i]);
      
console.log('Edge direction:'Panel.Edges[i].Dir());
      if (
IsEqualObjects(AxisPanel.Edges[i].Dir())) {
        
console.log('Found norm Edge:'Panel.Edges[i]);
        
foundNormEdge Panel.Edges[i];
        break;
      }
    }

    if (!
foundNormEdge) {
      
console.error('No norm Edge found for Panel:'Panel);
    }
    return 
foundNormEdge;
  }

  function 
GetAngle(PanelAPanelBEdgeA) {
    
console.log('EdgeA:'EdgeA); // Добавлено для отладки
    
const contour NewContour();
    const 
Edges = [GetNormEdge(EdgeAPanelA), GetNormEdge(EdgeAPanelB)];

    
console.log('Edges:'Edges); // Добавлено для отладки

    
Edges.forEach((Edgeindex) => {
      if (!
Edge) {
        
console.error('Edge ${index} is undefined'); // Добавлено для отладки
        
return;
      }
      const 
Panel index === PanelA PanelB// Используйте переменную panel
      
const First Panel.ToObject(Edge.First); // Используйте переменную panel
      
const last Panel.ToObject(Edge.Last); // Используйте переменную panel
      
contour.AddLine(First.xFirst.zlast.xlast.z);
    });

    
contour.OrderContours(true);
    if (
contour.IsClockOtherWise()) contour.InvertDirection();

  const 
angleA contour.Objects[0].LineAngle();
  const 
angleB contour.Objects[1].LineAngle();
  const 
edgeANorm GetNormEdge(EdgeAPanelA);
  const 
edgeBNorm GetNormEdge(EdgeAPanelB);

  const 
xProduct edgeANorm.Dir().edgeBNorm.Dir().edgeANorm.Dir().edgeBNorm.Dir().x;
  const 
Angle xProduct Math.abs(angleA angleB) : Math.PI Math.abs(angleA angleB);

  return 
Angle;
}

function 
SetCut(PanelAngleEdge) {
  
StartEditing(Panel);
  const 
cut Panel.AddCut('Уг XX гр.');
  const 
contour cut.Contour;
  
contour.AddLine(000Panel.Thickness);
  
contour.AddLine(0Panel.ThicknessPanel.Thickness Math.tan(Angle), Panel.Thickness);
  
contour.AddLine(Panel.Thickness Math.tan(Angle), Panel.Thickness00);
   
// направление РЕЗА
  
if (Edge.First.=== Panel.Thickness) {
  
contour.Rotate(0Panel.Thickness 2180);
  
cut.Trajectory.AddLine(Edge.Last.xEdge.Last.yEdge.First.xEdge.First.y);
} else {
  
contour.Rotate(0Panel.Thickness 20);
  
cut.Trajectory.AddLine(Edge.First.xEdge.First.yEdge.Last.xEdge.Last.y);
}
cut.Sign 'Угол ' Math.abs(radiansToAngle(Angle).toFixed(3)).toString().replace(/\./, ',') + ' °';

  
Panel.Build();
  }

  
// Запуск основной функции
  
ProcessSelectedPanels(); 

Последний раз редактировалось AlexBolton; 25.02.2024 в 19:32. Причина: оформление
PravCom вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
AlexBolton (25.02.2024)
Старый 25.02.2024, 19:01   #677
DBTSP
Новичок
 
Регистрация: 15.12.2023
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
DBTSP пока не определено
По умолчанию

Цитата:
Сообщение от Slav Посмотреть сообщение
Такого скрипта пока нет. А при вращении панелей никаких спилов тоже не наблюдалось.
Зато существуют уже платные скрипты, которые при пересечении панелей могут создавать наклонные спилы, в местах сопряжения панелей. Вам это нужно?
Верно, смысл функции именно такой
DBTSP вне форума   Ответить с цитированием Вверх
Старый 25.02.2024, 21:00   #678
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Цитата:
Сообщение от DBTSP Посмотреть сообщение
Верно, смысл функции именно такой
в открытом коде Вам такое навряд ли кто-то даст
PravCom вне форума   Ответить с цитированием Вверх
Старый 25.02.2024, 23:15   #679
Slav
Местный
 
Регистрация: 15.05.2012
Адрес: Москва
Сообщений: 259
Сказал(а) спасибо: 43
Поблагодарили 211 раз(а) в 89 сообщениях
Вес репутации: 213
Slav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личностьSlav - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от PravCom Посмотреть сообщение
в открытом коде Вам такое навряд ли кто-то даст
Так и есть, ведь форум предназначен для обмена опытом. Простенькие скрипты вы тут найдете. Плюс куча полезной инфы для самообразования. А что то посложнее - это уже надо покупать. Люди годами полировали навыки и не хотят теперь выкладывать это за спасибо.

Я покупал у Артема. Там ценник небольшой.
Вот его канал:
https://web.telegram.org/a/#-1001548656779
Скрипт называется "Разрезать панель по границе".

Добавлено через 2 минуты
Цитата:
Сообщение от PravCom Посмотреть сообщение
есть только сырой вариант, работает только если идеальная стыковка :
сорян за прямоту -но оно работает как то криво..
Slav вне форума   Ответить с цитированием Вверх
Старый 26.02.2024, 08:35   #680
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Slav Посмотреть сообщение
сорян за прямоту -но оно работает как то криво..
так я ж предупредил) криво и косо) ожидается релиз качественного в скором времени от известного автора на эту тему. Платный релиз
PravCom вне форума   Ответить с цитированием Вверх
Ответ

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


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заявки на фурнитуру, сборки, фрагменты Kudesnick Базис-мебельщик. Элементы фурнитуры и Комплектующих 1394 25.04.2024 16:57
"Мастер скриптов" — изменение скрипта блока в сцене KD ViPeS KitchenDraw (KD) 40 16.10.2023 19:23
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Генерирую заявки на шкафы за агентское вознаграждение в Москве. mavar Предлагаю работу 26 21.11.2014 16:06


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


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

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