Sorry, only russian lang for this project now.
Это небольшая PHP библиотека, позволяющая создавать распилы для самостоятельной сборки мебели из ДСП в виде PHP скриптов. В результате скрипт может создавать scad файл для визуализации в OpenSCAD и CSV файл с параметрами для заказа распиловки.
Подробнее тут: Habr
require_once "scad.mebel.php";
$box = box(500, 800, 600); //Создаем пространство шириной 500, высотой 800, глубиной 600
$box = wall_top($box, "Мебель: %W"); //верхняя стенка
$box = wall_bottom($box, "Мебель: %W");//нижняя стенка
$box = padding($box, "front=16"); //Уменьшаем пространство спереди на 16мм
$box = wall_left($box, "Мебель: %W"); //Левая стенка
$box = wall_right($box, "Мебель: %W");//Правая стенка
$box = wall_back($box, "Мебель: %W"); //Задняя стенка
$box = padding($box, "top=10,bottom=10"); //Уменьшаем пространство сверху и снизу на 10мм
$boxes = split_vertical($box, "*,*,*,*,*", 16); //Делим пространство на 5 частей
foreach ($boxes as $b) { //ПРоходим по всем частям
if (is_part($b)) { //Только частей (есть еще промежутки меду ними)
wall_front($b, "door=1,edge=f", "Ящик: %W", "front=-16,left=-16,right=-16,top=-6,bottom=-6"); //Фасад
$b = padding($b, "left=10,right=10,back=5"); //Уменьшаем пространство слева и справа для направляющих на 10мм,
//Стенки ящиков
$b = wall_front($b, "Ящик: %W");
$b = wall_bottom($b, "Ящик: %W");
$b = wall_back($b, "Ящик: %W");
$b = wall_left($b, "Ящик: %W");
$b = wall_right($b, "Ящик: %W");
}
}
render_parts_list(); //Создаем файл с частями рядом с файлом скрипта
render_scad(); //Создаем scad файл с визуализацией тумбочки
Все функции для работы с пространством возвращают измененное пространство.
Задает цвет по умолчанию для новых пространств (box)
$value - цвет в формате web ("F8A", "45FDE0"...)
Задает зазор между деталями по умолчанию для новых пространств (box), (по умолчанию 0.5мм)
$value - задаем размер в мм
Возвращает зазор между деталями по умолчанию для новых пространств (box)
Задает толщину кромки между деталями по умолчанию для новых пространств (box), (по умолчанию 0.4мм)
$value - задаем размер в мм
Возвращает толщину кромки между деталями по умолчанию для новых пространств (box)
Задает толщину панели ДСП по умолчанию для новых пространств (box), (по умолчанию 16мм)
$value - задаем размер в мм
Создает новое простанство для мебели
$horizontalSize - ширина в мм
$verticalSize - выстота в мм
$depthSize - глубина в мм
$horizontalPos = 0 - позиция по горизонтали
$verticalPos = 0 - позиция по вертикали
$depthPos = 0 - позиция по глубине (от стенки)
Задает толщину панели ДСП для конкретного пространства
$box - пространство
$thick - толщина в мм
Задает толщину кромки для конкретного пространства
$box - пространство
$thick - толщина в мм
Задает цвет для конкретного пространства
$box - пространство
$color - цвет в формате web ("F8A", "45FDE0"...)
Уменьшает (или увеличивает) размер пространства
$box - пространство
$padValues - значения, идут через запятую ("left=10,right=20,..."). Чтобы увеличить размер можно использовать отрицательные значения. Также можно использовать % для процентного уменьшения/увеличения.
Возможные значения:
left - слева
right - справа
top - сверху
bottom - снизу
back - сзади
front - спереди
rev - устарело, после этой команды все последующий будут реверсивные (с + на - и наоборот)
$multiplier = 1 - для внутреннего использования
$resetClosing = true - для внутреннего использования
Делит пространство на несколько, возвращает массив пространств.
$box - пространство
$direction - направление разделения
Возможные значения:
horizontal - по горизонтали (слева направо)
vertical - по вертикали (снизу вверх)
depth - в глубину (от стенки)
$sizes - размеры в формате "*,*,*,*" минимум 2 части, можно указывать для любых частей в % или в мм "200,20%,*" - 3 части - 200мм, 20% от всего пространства, оставшееся пространство.
$betweenSpace = 0 - место между пространствами. Если не 0 то, эти пространства тоже будут в возвращаемом массиве пространств. Проверяются функциями is_part и is_between
Тоже самое, что и split, но не нужно указывать направление
Для проверки пространства в массиве после функции split. Если это основное пространство, а не место между ними, вернет true
$box - пространство
Для проверки пространства в массиве после функции split. Если это не основное пространство, а место между ними, вернет true
$box - пространство
Рисует пространство в scad файл
$box - пространство
$color - цвет в формате web ("F8A", "45FDE0"...)
Создает стенку, возвращает уменьшенное пространство без этой стенки
$box - пространство
$side - сторона пространства на которой создается стенка
Возможные значения:
top - сверху
bottom - снизу
left - слева
right - справа
back - сзади
front - впереди
$params - параметры стенки, идут через запятую ("edge=f,thick=24,...")
Возможные значения:
width - переопределить ширину панели
height - переопределить высоту панели
thick - переопределить толщину панели
color - переопределить
edge - задает толщину кромки для всей панели и принудительно рисует кромку на все грани (f - принудительно рисует кромку толщиной по умолчанию)
edge-thick - переопределяет толщину кромки
close - (1 - true, 0 - false) задает, что эта панель "закрывающая" и у примыкающих к ней можно не делать кромку
door - (1 - true, 0 - false) задает, что это дверца/фасад
render - (1 - true, 0 - false) нужно ли выводить в scad файл
addpart - (1 - true, 0 - false) нужно ли добавлять в список для распила
opacity - прозрачность от 0 до 1.
round-* - скруглить угол на радиус в мм указанные в параметре. Вместо звездочки идет значение угла (left-top, right-front, ...), углы всегда именуются относительно того как доска распологается в готовом изделии если человек будет смотреть на неё с лицевой стороны издения. Если доска лежит горизонтально у неё есть 4 угла (left-front, left-back,right-front,right-back), если это фасад 4 угла будут (left-bottom,left-front,right-bottom,right-top), если доска находится торцом к смотрящему углы будут (front-top,front-bottom,back-top,back-bottom)
edge-* - принудительно установить убрать кромку толщиной указанной в параметре (f - толщина по умолчанию). Вместо звездочки идет значение стороны (left, front, ...), стороны всегда именуются относительно того как доска распологается в готовом изделии если человек будет смотреть на неё с лицевой стороны издения. Если доска лежит горизонтально у неё есть 4 стороны (left, right, front, back), если это фасад 4 стороны будут (left,right,bottom,top), если доска находится торцом к смотрящему, стороны будут (front, back, top,bottom)
$name = "" - наименование панели (%W - заменится на тип, например Правая стенка, Левая стенка и т.д.)
$padding = "" - выполняет уменьшение/расширение пространства, но только для этой стенки, возвращает пространство без этих изменений. Возможные значения можно посмотреть в функции padding
Тоже самое, что и wall, но не нужно указывать сторону
Делает срез в scad файле, чтобы посмотреть изделие в разрезе
$direction - направление среза
Возможные значения:
up - вверх
down - вниз
left - влево
right - вправо
back - назад
front - вперед
$offset - смещение после которого будет выполнен срез
Тоже самое, что и view_cut, но не нужно указывать направление среза
Создать файл scad
Создать файл csv с параметрами распила