Skip to content

PHP library to create simple furniture projects using scripts. Creates OpenSCAD files for visualization.

License

Notifications You must be signed in to change notification settings

CodeName33/php.mebel.scad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

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 файл с визуализацией тумбочки

Описание функций библиотеки

Все функции для работы с пространством возвращают измененное пространство.

setColor

Задает цвет по умолчанию для новых пространств (box)

Параметры

$value - цвет в формате web ("F8A", "45FDE0"...)

setPrecision

Задает зазор между деталями по умолчанию для новых пространств (box), (по умолчанию 0.5мм)

Параметры

$value - задаем размер в мм

precision

Возвращает зазор между деталями по умолчанию для новых пространств (box)

setEdgeThick

Задает толщину кромки между деталями по умолчанию для новых пространств (box), (по умолчанию 0.4мм)

Параметры

$value - задаем размер в мм

edgeThick

Возвращает толщину кромки между деталями по умолчанию для новых пространств (box)

setThick

Задает толщину панели ДСП по умолчанию для новых пространств (box), (по умолчанию 16мм)

Параметры

$value - задаем размер в мм

box

Создает новое простанство для мебели

Параметры

$horizontalSize - ширина в мм
$verticalSize - выстота в мм
$depthSize - глубина в мм
$horizontalPos = 0 - позиция по горизонтали
$verticalPos = 0 - позиция по вертикали
$depthPos = 0 - позиция по глубине (от стенки)

set_thick

Задает толщину панели ДСП для конкретного пространства

Параметры

$box - пространство
$thick - толщина в мм

set_edge_thick

Задает толщину кромки для конкретного пространства

Параметры

$box - пространство
$thick - толщина в мм

set_color

Задает цвет для конкретного пространства

Параметры

$box - пространство
$color - цвет в формате web ("F8A", "45FDE0"...)

padding

Уменьшает (или увеличивает) размер пространства

Параметры

$box - пространство
$padValues - значения, идут через запятую ("left=10,right=20,..."). Чтобы увеличить размер можно использовать отрицательные значения. Также можно использовать % для процентного уменьшения/увеличения.
    Возможные значения:
        left - слева
        right - справа
        top - сверху
        bottom - снизу
        back - сзади
        front - спереди
        rev - устарело, после этой команды все последующий будут реверсивные (с + на - и наоборот)
$multiplier = 1 - для внутреннего использования
$resetClosing = true  - для внутреннего использования

split

Делит пространство на несколько, возвращает массив пространств.

Параметры

$box - пространство
$direction - направление разделения
    Возможные значения:
        horizontal - по горизонтали (слева направо)
        vertical - по вертикали (снизу вверх)
        depth - в глубину (от стенки)
$sizes - размеры в формате "*,*,*,*" минимум 2 части, можно указывать для любых частей в % или в мм "200,20%,*" - 3 части - 200мм, 20% от всего пространства, оставшееся пространство.
$betweenSpace = 0 - место между пространствами. Если не 0 то, эти пространства тоже будут в возвращаемом массиве пространств. Проверяются функциями is_part и is_between

split_horizontal, split_vertical, split_depth

Тоже самое, что и split, но не нужно указывать направление

is_part

Для проверки пространства в массиве после функции split. Если это основное пространство, а не место между ними, вернет true

Параметры

$box - пространство

is_between

Для проверки пространства в массиве после функции split. Если это не основное пространство, а место между ними, вернет true

Параметры

$box - пространство

draw_box

Рисует пространство в scad файл

Параметры

$box - пространство
$color - цвет в формате web ("F8A", "45FDE0"...)

wall

Создает стенку, возвращает уменьшенное пространство без этой стенки

Параметры

$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_bottom, wall_top, wall_left, wall_right, wall_back, wall_front

Тоже самое, что и wall, но не нужно указывать сторону

view_cut

Делает срез в scad файле, чтобы посмотреть изделие в разрезе

Параметры

$direction - направление среза
    Возможные значения:
        up - вверх
        down - вниз
        left - влево
        right - вправо
        back - назад
        front - вперед
$offset - смещение после которого будет выполнен срез

view_cut_up, view_cut_down, view_cut_left, view_cut_right, view_cut_back, view_cut_front

Тоже самое, что и view_cut, но не нужно указывать направление среза

render_scad

Создать файл scad

render_parts_list

Создать файл csv с параметрами распила

About

PHP library to create simple furniture projects using scripts. Creates OpenSCAD files for visualization.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages