{"id":460654,"date":"2025-05-22T22:35:26","date_gmt":"2025-05-22T22:35:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=460654"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=460654","title":{"rendered":"<span>\u0421\u043a\u0430\u0437 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441\u0435\u0431\u0435 \u043c\u0435\u0431\u0435\u043b\u044c \u0438\u0437 \u0414\u0421\u041f \u043d\u0430 PHP \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043b<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/904994\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/87\/oe\/zv\/87oezvuc0oxoygu4xiadjkr_udu.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/87\/oe\/zv\/87oezvuc0oxoygu4xiadjkr_udu.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/87\/oe\/zv\/87oezvuc0oxoygu4xiadjkr_udu.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/a><\/p>\n<p> \u0422\u0443\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0431\u0435\u043b\u0438 \u0438\u0437 \u0414\u0421\u041f \u043d\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c, \u0430 \u0432 \u0432\u0438\u0434\u0435 PHP-\u0441\u043a\u0440\u0438\u043f\u0442\u0430.<a name=\"habracut\"><\/a><\/p>\n<h2><font color=\"#3AC1EF\">\u0412 \u0434\u0430\u043b\u0451\u043a\u043e\u0439-\u0434\u0430\u043b\u0451\u043a\u043e\u0439 \u0433\u0430\u043b\u0430\u043a\u0442\u0438\u043a\u0435&#8230;<\/font><\/h2>\n<p> \u0422\u043e\u0447\u043d\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u043e\u043c\u043d\u044e, \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u043d\u043e \u0435\u0441\u043b\u0438 \u0438 \u043d\u0435 10 \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434, \u0442\u043e \u0431\u043b\u0438\u0437\u043a\u043e \u043a \u044d\u0442\u043e\u043c\u0443. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0445\u043e\u0447\u0443 \u043f\u043e\u043a\u0443\u043f\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u043c\u0435\u0431\u0435\u043b\u044c \u0438\u0437 \u0414\u0421\u041f. \u0412\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0435\u0451 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u043e, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u0439\u0442\u0438\u0441\u044c \u043e\u0447\u0435\u043d\u044c \u043c\u043d\u043e\u0433\u043e \u0437\u0432\u0451\u0437\u0434: \u043e\u043d\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u043a\u0432\u0430\u0440\u0442\u0438\u0440\u0435, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0431\u044b\u0442\u044c \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439, \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u0438 \u0446\u0432\u0435\u0442, \u0430 \u0435\u0449\u0451 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u044e\u0434\u0436\u0435\u0442. \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0432\u043f\u0430\u043b\u043e \u0432\u0441\u0451 \u2014 \u0431\u044b\u0432\u0430\u0435\u0442 \u043a\u0440\u0430\u0439\u043d\u0435 \u0440\u0435\u0434\u043a\u043e. \u0427\u0430\u0441\u0442\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0443\u0441\u043b\u043e\u0432\u0438\u0439, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0434\u0442\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441. \u0418 \u044f \u0440\u0435\u0448\u0438\u043b \u2014 \u0434\u043e\u043a\u043e\u043b\u0435? \u041c\u043e\u0436\u0435\u0442 \u0438 \u043d\u0435 \u0432\u0441\u0451, \u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u044f \u043c\u043e\u0433\u0443 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c! \u041f\u0435\u0440\u0432\u044b\u0435 \u043c\u043e\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0431\u044b\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u044b \u0438 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b \u2014 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u043a\u0443\u043f\u0430\u043b \u043c\u0435\u0431\u0435\u043b\u044c\u043d\u044b\u0435 \u0449\u0438\u0442\u044b \u0438 \u043f\u043e\u043b\u043a\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0430\u0445 \u0438 \u0434\u0435\u043b\u0430\u043b \u0432\u0441\u0451 \u0438\u0437 \u043d\u0438\u0445. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044f \u0434\u0430\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b, \u0432\u0435\u0441\u044c \u043f\u043b\u0430\u043d \u0431\u044b\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u0443 \u043c\u0435\u043d\u044f \u0432 \u0433\u043e\u043b\u043e\u0432\u0435. \u042f \u043d\u0435 \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b\u0441\u044f \u0441 \u043a\u0440\u043e\u043c\u043a\u0430\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u0434\u0435\u0438 \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u043f\u043e\u043b\u043e\u043a, \u0447\u0442\u043e\u0431\u044b \u0435\u0441\u043b\u0438 \u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442\u0440\u0435\u0437\u044b, \u0442\u043e \u044d\u0442\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0435 \u0431\u044b\u043b\u0438 \u0431\u044b \u0432\u0438\u0434\u043d\u044b \u0441\u043d\u0430\u0440\u0443\u0436\u0438. \u041a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u044f \u0434\u0435\u043b\u0430\u043b \u044d\u0442\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0445 \u043d\u0435\u0441\u0443\u0440\u0430\u0437\u043d\u044b\u0445 \u0411\u0443\u0440\u0430\u0442\u0438\u043d, \u043d\u043e \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0432\u0441\u0435 \u043c\u043e\u0438 \u0438\u0434\u0435\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0437\u0430\u043b\u043e\u0436\u043d\u0438\u043a\u0430\u043c\u0438 \u044d\u0442\u0438\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u043f\u043e\u043b\u043e\u043a, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0431\u044b\u043b\u043e \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u044c, \u0430 \u0432\u0441\u044f \u043c\u0435\u0431\u0435\u043b\u044c \u0431\u044b\u043b\u0430 \u0442\u043e\u043f\u043e\u0440\u043d\u043e-\u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f, \u0430 \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438\u0441\u044c \u0431\u044b \u043a\u0443\u0434\u0430 \u044d\u0441\u0442\u0435\u0442\u0438\u0447\u043d\u0435\u0435, \u0438 \u0443\u0436\u0435 \u043f\u043e\u0440\u0430 \u0431\u044b \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u0414\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0431\u0435\u043b\u0438 \u0438 \u0437\u0430\u043a\u0430\u0437\u0430 \u0440\u0430\u0441\u043f\u0438\u043b\u043e\u0432 \u0442\u0435\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043d\u0435 \u0431\u044b\u043b\u0438 \u043d\u0443\u0436\u043d\u044b. \u041e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u0444\u0438\u0440\u043c\u0430\u0442\u0430 \u044f \u0431\u044b\u043b \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u0440\u043e\u0441\u0432\u0435\u0440\u043b\u0438\u0442\u044c \u0441\u0430\u043c, \u0430 \u0432\u043e\u0442 \u0441\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u044f \u0438 \u043a\u0440\u043e\u043c\u043a\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0437\u0430 \u043c\u0435\u043d\u044f. \u042f \u0441\u0442\u0430\u043b \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0431\u0435\u043b\u0438 \u0438 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0441\u044f \u043d\u0430 \u0441\u0442\u0430\u0440\u0435\u043d\u044c\u043a\u043e\u0439 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u00ab\u0410\u0441\u0442\u0440\u0430 \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u041c\u0435\u0431\u0435\u043b\u0438\u00bb. \u041d\u043e \u0434\u043e\u043b\u0433\u043e \u044f \u043d\u0430 \u043d\u0435\u0439 \u043d\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u0430\u043b\u0441\u044f.<\/p>\n<h2><font color=\"#3AC1EF\">\u041f\u0443\u0442\u044c \u043a OpenSCAD<\/font><\/h2>\n<p> \u041a \u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f 3D-\u043f\u0440\u0438\u043d\u0442\u0435\u0440, \u0438 \u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0438\u0441\u043a\u0430\u043b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u043b\u044f \u043d\u0435\u0433\u043e. \u042f \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u043b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f 3D-\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u043d\u043e \u043d\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445, \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0441\u0447\u0451\u0442\u0435, \u0442\u0430\u043a \u0438 \u043d\u0435 \u043d\u0430\u0448\u043b\u0430 \u0432\u043e \u043c\u043d\u0435 \u043e\u0442\u043a\u043b\u0438\u043a\u0430. \u0418 \u0432\u043e\u0442 \u044f \u043d\u0430\u0442\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 OpenSCAD. \u0418\u0434\u0435\u044f \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c 3D-\u043c\u043e\u0434\u0435\u043b\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043c\u043d\u0435 \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u0439, \u043d\u043e \u043f\u043e\u0437\u0436\u0435 \u044f \u043e\u0441\u043e\u0437\u043d\u0430\u043b, \u0447\u0442\u043e \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043c\u043d\u0435 \u044d\u0442\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435. \u042f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u044f \u043c\u043e\u0433 \u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0418 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0432 \u043a\u043e\u0434\u0435 \u043c\u043d\u0435 \u0431\u044b\u043b\u043e \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0440\u043e\u0449\u0435, \u0447\u0435\u043c \u043c\u0435\u043d\u044f\u0442\u044c \u044d\u0442\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u0441\u0435\u0431\u044f \u044f \u043e\u0442\u043c\u0435\u0442\u0438\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430:<\/p>\n<ul>\n<li>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0438 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.<\/li>\n<li>\u0424\u0430\u0439\u043b\u044b \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u044e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u043c\u0430\u043b\u043e \u043c\u0435\u0441\u0442\u0430.<\/li>\n<li>\u0421\u043b\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0444\u0430\u0439\u043b \u2014 \u044d\u0442\u043e \u0436\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0435\u043a\u0441\u0442. \u0418 \u0435\u0441\u043b\u0438 \u044f \u0447\u0442\u043e-\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u043d\u0430\u0432\u043e\u0440\u043e\u0442\u0438\u043b, \u0447\u0442\u043e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u0435\u0437\u0431\u043e\u0436\u043d\u043e \u0442\u043e\u0440\u043c\u043e\u0437\u0438\u0442\u044c \u0438 \u0441 \u043d\u0435\u0439 \u0443\u0436\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u044f \u043c\u043e\u0433\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043b\u044e\u0431\u044b\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u043e\u043c \u043b\u0438\u0448\u043d\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u2014 \u0438 \u0432\u0441\u0451 \u0441\u043d\u043e\u0432\u0430 \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.<\/li>\n<\/ul>\n<p> \u042f \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0435\u0447\u0430\u0442\u0430\u043b \u0445\u0443\u0434\u043e\u0436\u043a\u0443 \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u0433\u0440\u0443\u0448\u043a\u0438, \u0444\u0438\u0433\u0443\u0440\u043a\u0438, \u0444\u0430\u043d\u0430\u0442\u0441\u043a\u0430\u044f \u0434\u0440\u0435\u0431\u0435\u0434\u0435\u043d\u044c, \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u044f \u0443\u0436\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u0442\u0430\u0440 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0440\u044c\u043c\u0430. \u0410 \u043f\u0435\u0447\u0430\u0442\u0430\u043b \u044f \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0432\u0437\u0430\u043c\u0435\u043d \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0445, \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f, \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u0432\u0435\u0449\u0430\u043c, \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f, \u0438, \u0440\u0430\u0431\u043e\u0442\u0430\u044f \u0441 \u044d\u0442\u0438\u043c, \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u044d\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u044b, \u0432\u0441\u0451 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0438\u0445. \u041e\u043d\u0438 \u0435\u0441\u0442\u044c \u0443 \u0432\u0441\u0435\u0433\u043e, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0435\u0441\u0442\u044c \u0434\u043b\u0438\u043d\u0430, \u0448\u0438\u0440\u0438\u043d\u0430, \u0432\u044b\u0441\u043e\u0442\u0430 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u2014 \u0432\u043e\u043a\u0440\u0443\u0433 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u0432\u0441\u0451. \u0418 \u043e\u0447\u0435\u043d\u044c \u0447\u0430\u0441\u0442\u043e \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c\u0438 \u043f\u0440\u043e\u043c\u0430\u0445\u0438\u0432\u0430\u0435\u0448\u044c\u0441\u044f, \u0438 \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0445 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u043f\u043e\u0435\u0445\u0430\u043b\u0430 \u0432\u0441\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u0435\u0442\u0430\u043b\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443-\u0442\u043e \u043c\u043d\u0435 \u0438 \u043f\u043e\u043b\u044e\u0431\u0438\u043b\u0441\u044f OpenSCAD, \u0433\u0434\u0435 \u0432\u0441\u0451 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430 \u0446\u0438\u0444\u0440\u0430\u0445. \u042f \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e \u0437\u0430\u0432\u043e\u0434\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0438\u0445 \u043b\u0435\u0433\u043a\u043e \u0431\u044b\u043b\u043e \u043c\u0435\u043d\u044f\u0442\u044c, \u0438 \u0432\u0441\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u0430\u0441\u044c \u043d\u0430 \u043d\u043e\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438 \u0441\u0442\u0440\u043e\u0438\u043b\u0430\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e. \u0418 \u0432\u043e\u0442 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442, \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0430\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0438\u0437 \u043c\u0435\u0431\u0435\u043b\u0438, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0431\u0435\u0437\u0443\u043c\u043d\u0430\u044f \u0438\u0434\u0435\u044f: <\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ry\/s7\/fy\/rys7fyg29uxkyy6_vwccdnx4u_o.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ry\/s7\/fy\/rys7fyg29uxkyy6_vwccdnx4u_o.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ry\/s7\/fy\/rys7fyg29uxkyy6_vwccdnx4u_o.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u0438 \u043d\u0435\u0442? \u0418 \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u0435\u0431\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f OpenSCAD \u0434\u043b\u044f \u00ab\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f\u00bb \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043c\u0435\u0431\u0435\u043b\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0434\u0435\u0442\u0430\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0438\u043b\u0430, \u043d\u043e \u043f\u043e\u0448\u0451\u043b \u044f \u043d\u0435 \u0441\u0430\u043c\u044b\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0443\u0442\u0451\u043c. \u042f \u0437\u0430\u043b\u043e\u0436\u0438\u043b \u0432 \u0435\u0451 \u0440\u0430\u0431\u043e\u0442\u0443 \u0442\u0435 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b, \u0447\u0442\u043e \u0438 \u0432 \u043e\u0431\u044b\u0447\u043d\u043e\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u041d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0414\u0421\u041f-\u043f\u0430\u043d\u0435\u043b\u044c \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432, \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0435\u0451 \u043d\u0430 \u043d\u0443\u0436\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b, \u0441 \u043d\u0443\u0436\u043d\u044b\u043c \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043e\u043c. \u0418 \u0445\u043e\u0442\u044c \u044f \u0438 \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0438 \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u00abmagic numbers\u00bb, \u043d\u043e \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e, \u043f\u043e\u0440\u043e\u0439, \u043a\u043e\u0434 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0441\u043b\u043e\u0436\u043d\u044b\u043c. \u0414\u043b\u044f \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u043e\u0431\u0449\u0435\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 OpenSCAD. \u041f\u043e\u043a\u0430 \u0442\u044b \u0432\u0430\u0440\u0438\u0448\u044c\u0441\u044f \u0432 \u044d\u0442\u043e\u043c \u2014 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u043f\u0430\u0440\u0443 \u043c\u0435\u0441\u044f\u0446\u0435\u0432, \u0438 \u0435\u0441\u043b\u0438 \u0442\u0430\u043c \u043d\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0439\u0448\u0438\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432, \u0442\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0447\u0451\u0440\u0442 \u043d\u043e\u0433\u0443 \u0441\u043b\u043e\u043c\u0438\u0442, \u0430 \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0447\u0451\u0440\u0442 \u0442\u0430\u043c \u043f\u0435\u0440\u0435\u043b\u043e\u043c\u0430\u043b\u0441\u044f \u0432\u0435\u0441\u044c \u0438 \u043f\u043e\u0433\u0440\u0435\u0431\u0451\u043d \u0432 \u044d\u0442\u043e\u0439 \u043a\u0430\u0448\u0435 \u043a\u043e\u0434\u0430 \u0442\u0430\u043a, \u0447\u0442\u043e \u0438 \u043d\u0435 \u043d\u0430\u0439\u0434\u0451\u0448\u044c. \u0418 \u0432\u043e\u0442 \u0442\u0443\u0442 \u044f \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043c\u043d\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0435\u0441\u043d\u043e\u0432\u0430\u0442\u043e \u0432 OpenSCAD. \u0414\u0430, \u044f \u0432\u0438\u0434\u0435\u043b, \u0447\u0442\u043e \u0435\u043c\u0443 \u0435\u0441\u0442\u044c \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a ZenSCAD, \u043d\u043e Python, \u0431\u0440\u0440\u0440. <\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/he\/uy\/pc\/heuypccb8zcvau14tc_tm_bxwxa.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/he\/uy\/pc\/heuypccb8zcvau14tc_tm_bxwxa.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/he\/uy\/pc\/heuypccb8zcvau14tc_tm_bxwxa.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u041c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0451, \u0443\u0434\u043e\u0431\u043d\u043e\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043c\u043d\u0435.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430 \u0432 OpenSCAD. \u0411\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 (\u0438 \u0432 \u0442\u043e\u043c, \u0438 \u0432 \u0442\u043e\u043c \u0441\u043c\u044b\u0441\u043b\u0435)<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"plaintext\">include &lt;..\/lib\/export-details.scad&gt;  EdgeThick = 0.4; Thick = 16;  ClosetInsideHeight = 800; ClosetInsideMirrorWidth = 400; ClosetInsideShelfWidth = 200; ClosetDeep = 140;  ShelfCount = 2;  BoxesCount = 3; BoxRailingThick = 13; BoxSpaceWidth = 460; BoxFasadeWidth = 486; BoxFasadeHeight = 230; BoxDeep = 400; BoxBottomHeight = 4; BoxWidth = BoxSpaceWidth - BoxRailingThick * 2; BoxHeight = BoxFasadeHeight - 16 - BoxBottomHeight; BoxesSpace = 2;  CablesHolderWidth = 86 * 3; CablesHolderHeight = 150; CablesHolderDepth = 80; CablesHolderUpHeight = 70;  translate([0, 0, 0]) rotate([90, 0, 90]) detail([ClosetDeep, ClosetInsideHeight + Thick * 2, Thick], \"\u0428\u043a\u0430\u0444\u0447\u0438\u043a: \u043f\u0440\u0430\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([Thick * 2 + ClosetInsideMirrorWidth + ClosetInsideShelfWidth, 0, 0]) rotate([90, 0, 90]) detail([ClosetDeep, ClosetInsideHeight + Thick * 2, Thick], \"\u0428\u043a\u0430\u0444\u0447\u0438\u043a: \u043b\u0435\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([ClosetInsideMirrorWidth + Thick, 0, Thick]) rotate([90, 0, 90]) detail([ClosetDeep, ClosetInsideHeight, Thick], \"\u0428\u043a\u0430\u0444\u0447\u0438\u043a: \u0441\u0440\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]);  translate([Thick, ClosetDeep, 0]) rotate([0, 0, -90]) detail([ClosetDeep, ClosetInsideMirrorWidth + ClosetInsideShelfWidth + Thick, Thick], \"\u0428\u043a\u0430\u0444\u0447\u0438\u043a: \u0434\u043d\u043e\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]);  translate([Thick, ClosetDeep, ClosetInsideHeight + Thick]) rotate([0, 0, -90]) detail([ClosetDeep, ClosetInsideMirrorWidth + ClosetInsideShelfWidth + Thick, Thick], \"\u0428\u043a\u0430\u0444\u0447\u0438\u043a: \u0432\u0435\u0440\u0445\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]);  translate([ClosetInsideMirrorWidth + Thick * 2, 0, Thick]) for (i = [1 : ShelfCount]) { translate([0, 0, i * (ClosetInsideHeight \/ (ShelfCount + 1))]) rotate([0, 0, 0]) detail([ClosetInsideShelfWidth, ClosetDeep, Thick], \"\u0428\u043a\u0430\u0444\u0447\u0438\u043a: \u043f\u043e\u043b\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); }  translate([ClosetInsideMirrorWidth + Thick, ClosetDeep, Thick]) rotate([90, -90, 00]) detail([ClosetInsideHeight, ClosetInsideMirrorWidth, Thick], \"\u0428\u043a\u0430\u0444\u0447\u0438\u043a: \u0437\u0430\u0434\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]);  translate ([ClosetInsideHeight + 400, 0, 0]) for (i = [0 : BoxesCount - 1]) { translate ([0, 0, i * (BoxFasadeHeight + BoxesSpace)]) { translate([BoxRailingThick, 0, 0]) { translate([0, 0, 0]) rotate([90, 0, 90]) detail([BoxDeep, BoxHeight, Thick], \"\u042f\u0449\u0438\u043a: \u043f\u0440\u0430\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([BoxWidth - Thick, 0, 0]) rotate([90, 0, 90]) detail([BoxDeep, BoxHeight, Thick], \"\u042f\u0449\u0438\u043a: \u043b\u0435\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([Thick, Thick, 0]) rotate([90, 0, 0]) detail([BoxWidth - Thick * 2, BoxHeight, Thick], \"\u042f\u0449\u0438\u043a: \u043b\u0435\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([Thick, BoxDeep, 0]) rotate([90, 0, 0]) detail([BoxWidth - Thick * 2, BoxHeight, Thick], \"\u042f\u0449\u0438\u043a: \u043b\u0435\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]);  translate([0, 0, -BoxBottomHeight]) color([1,0.9,0.7]) cube([BoxWidth, BoxDeep,BoxBottomHeight]); \/\/translate([0, 20, BoxHeight]) cube([BoxWidth, 10,10]); } translate([-(BoxFasadeWidth - BoxSpaceWidth) \/ 2, 0, -BoxBottomHeight]) rotate([90, 0, 0]) detail([BoxFasadeWidth, BoxFasadeHeight, Thick], \"\u042f\u0449\u0438\u043a: \u0444\u0430\u0441\u0430\u0434\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); } }  translate ([ClosetInsideHeight + 1000, 0, 0]) { translate([0, 0, 0]) rotate([90, 0, 90]) detail([CablesHolderDepth, CablesHolderHeight, Thick], \"\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432: \u043b\u0435\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([CablesHolderWidth + Thick, 0, 0]) rotate([90, 0, 90]) detail([CablesHolderDepth, CablesHolderHeight, Thick], \"\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432: \u043f\u0440\u0430\u0432\u0430\u044f \u0441\u0442\u0435\u043d\u043a\u0430\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([0, 0, ]) rotate([90, 0, 0]) detail([CablesHolderWidth + Thick * 2, CablesHolderHeight, Thick], \"\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432: \u0444\u0430\u0441\u0430\u0434\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); translate([Thick, CablesHolderDepth, 0]) rotate([0, 0, -90]) detail([CablesHolderDepth, CablesHolderWidth, Thick], \"\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432: \u0434\u043d\u043e\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]);  translate([0, CablesHolderDepth, CablesHolderHeight * 1.5]) rotate([90, 0, 0]) detail([CablesHolderWidth + Thick * 2, CablesHolderUpHeight, Thick], \"\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u043e\u0434\u043e\u0432: \u0444\u0430\u0441\u0430\u0434\", [EdgeThick, EdgeThick, EdgeThick, EdgeThick]); }<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> <\/p>\n<h2><font color=\"#3AC1EF\">PHP.SCAD<\/font><\/h2>\n<p> \u041f\u0440\u043e\u0448\u043b\u043e \u0447\u0443\u0442\u043e\u043a \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u0438 \u044f, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u043f\u043e\u043d\u044f\u043b, \u0447\u0435\u0433\u043e \u043c\u043d\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u0432 OpenSCAD \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439. \u0421\u043b\u043e\u0451\u0432. \u041c\u043e\u0436\u043d\u043e \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0444\u0438\u0433\u0443\u0440\u044b \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0443\u044e, \u043d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u0431\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u043e\u0442\u0432\u0435\u0440\u0441\u0442\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u043a\u0443\u0434\u0430 \u0432\u0445\u043e\u0434\u0438\u0442 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u0438 \u0432\u0441\u0435 \u043e\u043d\u0438 \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u043d\u044b \u043f\u043e \u043a\u043e\u0434\u0443 \u0432 \u0444\u0430\u0439\u043b\u0435. \u0412\u0441\u0451 \u044d\u0442\u043e \u043a\u0430\u043a-\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0432\u044b\u0440\u0435\u0437, \u043d\u043e \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430 OpenSCAD \u0442\u0430\u043a\u0430\u044f, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a, \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u0438, \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u0438\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c \u0438 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043d\u0430\u0434 \u0433\u0440\u0443\u043f\u043f\u043e\u0439 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445. \u0422\u0430\u043c \u044d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u0438 \u043a\u0430\u0448\u0430 \u043a\u043e\u0434\u0430 \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043d\u0430\u0432\u0430\u0440\u0438\u0441\u0442\u0435\u0439. \u0411\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e, \u0435\u0441\u043b\u0438 \u0431\u044b \u044f \u043c\u043e\u0433 \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0432\u044b\u0440\u0435\u0437\u0430\u044e \u043d\u0430 \u0441\u043b\u043e\u0435 10, \u0438 \u044d\u0442\u043e \u0431\u044b \u0437\u043d\u0430\u0447\u0438\u043b\u043e, \u0447\u0442\u043e \u0432\u044b\u0440\u0435\u0437 \u0431\u0443\u0434\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 \u0432\u0441\u0451 \u043d\u0430 \u0441\u043b\u043e\u044f\u0445 \u0441 1 \u043f\u043e 9, \u0430 \u043d\u0430 \u0441\u043b\u043e\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 11 \u0438 \u0432\u044b\u0448\u0435 \u0432\u044b\u0440\u0435\u0437 \u043d\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f. \u041d\u043e \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 OpenSCAD \u044d\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043a\u0438 \u0432 \u0441\u0430\u043c OpenSCAD \u043c\u043d\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c, \u043a\u0430\u043a \u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0432\u043e\u0439 SCAD, \u044d\u0442\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0438 \u0442\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u043b\u043e\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0441\u0435 \u043d\u0443\u0436\u043d\u044b\u0435 \u043c\u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437 OpenSCAD, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u043e, \u0447\u0435\u0433\u043e \u043c\u043d\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e, \u0430 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0444\u043e\u0440\u043c\u0430\u0442\u0430 OpenSCAD. \u0418 \u0432\u044b\u0431\u043e\u0440 \u043c\u043e\u0439 \u043f\u0430\u043b \u043d\u0430 PHP. \u0412\u043e\u043e\u0431\u0449\u0435, PHP \u0447\u0430\u0449\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f web-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043e\u043a, \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u0434\u0430\u0436\u0435, \u0447\u0442\u043e \u043e\u043d \u043a\u0430\u043a \u0440\u043e\u043a, \u043c\u0451\u0440\u0442\u0432, \u043d\u043e \u044f \u043d\u0435 \u0438\u0437 \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u0430\u043a \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u043a\u0430\u043f\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u044e\u0430\u0440\u0434\u0435\u0441\u0441, \u0438 \u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043b\u044e\u0431\u044b\u0445 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u043d\u0435 Python? \u041e\u043d, \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0441\u0435\u0439\u0447\u0430\u0441 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d. \u041d\u0435 \u043b\u044e\u0431\u043b\u044e \u044f \u0435\u0433\u043e, \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u042f \u043f\u0440\u0438\u0432\u044b\u043a \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430, \u0438 \u043c\u043d\u0435 \u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u0438\u0434\u0435\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0442\u043e, \u043a\u0430\u043a \u0431\u0443\u0434\u0443\u0442 \u0441\u0442\u043e\u044f\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u043a\u043e\u0434\u0435, \u0431\u0443\u0434\u0435\u0442 \u043a\u0430\u043a-\u0442\u043e \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0430\u043c\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0418 \u0445\u043e\u0442\u044c \u0438\u043d\u043e\u0433\u0434\u0430 \u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u043d\u0451\u043c \u0447\u0442\u043e-\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u0434\u0435\u043b\u0430\u043b \u044f \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0437 \u043b\u044e\u0431\u0432\u0438 \u0438 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0432\u044b\u0431\u0440\u0430\u043b PHP. \u0427\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430 \u0431\u044b\u043b\u0430 \u0443\u0434\u043e\u0431\u043d\u0435\u0435, \u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b VSCode \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e F5 \u043e\u043d \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u043b \u043c\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043f\u0440\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 SCAD-\u0444\u0430\u0439\u043b, \u0430 OpenSCAD \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0443\u043c\u043d\u044b\u0439, \u0438 \u043a\u043e\u0433\u0434\u0430 \u043e\u043d \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u0434\u0430\u0436\u0435 \u0438\u0437\u0432\u043d\u0435, \u043e\u043d \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u043e, F5 \u2014 \u0438 \u0442\u044b \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u0438\u0448\u044c, \u0447\u0442\u043e \u043d\u0430\u0432\u043e\u0440\u043e\u0442\u0438\u043b.<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/zi\/rh\/z7\/zirhz7ywwhm-r8ekhlos1wxpe1m.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/zi\/rh\/z7\/zirhz7ywwhm-r8ekhlos1wxpe1m.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/zi\/rh\/z7\/zirhz7ywwhm-r8ekhlos1wxpe1m.png 781w\" loading=\"lazy\" decode=\"async\"\/> <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 VSCode<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c F5 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u0430, \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u00abF5 Anything\u00bb \u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 workspace \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b &#171;.vscode\\launch.json&#187; \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u043c: <\/p>\n<pre><code class=\"json\">{     \"configurations\": [          {             \"name\": \"F5 Anything\",             \"type\": \"f5anything\",             \"request\": \"launch\",             \"command\": \"c:\/Projects\/Bin\/php7\/php.exe ${file}\",         }     ]    }<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> \u041d\u0435 \u0441\u043a\u0430\u0436\u0443, \u0447\u0442\u043e \u044d\u0442\u043e \u0440\u0435\u0448\u0438\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043a\u0430\u0448\u0438 \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u0441\u0451 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u043e \u0438 \u043f\u0440\u0438\u043d\u0435\u0441\u043b\u043e \u043c\u043d\u0435 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (\u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0435\u0442, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 OpenSCAD, \u0442\u043e \u0441\u043a\u0430\u0436\u0443 \u0442\u0430\u043a, \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u0438). \u041d\u043e \u044f \u044d\u0442\u0443 \u043f\u043e\u0434\u0435\u043b\u043a\u0443 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435 \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b, \u0438 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e \u0435\u0451 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0439 \u0448\u0430\u0433 \u043d\u0430 \u043f\u0443\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<h2><font color=\"#3AC1EF\">PHP.MEBEL.SCAD \ud83d\ude42<\/font><\/h2>\n<p> \u0427\u0442\u043e? Mebel? \u0421\u0435\u0440\u044c\u0451\u0437\u043d\u043e? \u0414\u0430. \u042f \u0437\u043d\u0430\u044e, \u0447\u0442\u043e \u043f\u043e-\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438 \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 furniture, \u043d\u043e \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u0435\u0441\u0442\u044c \u0441\u043b\u043e\u0432\u043e \u0444\u0443\u0440\u043d\u0438\u0442\u0443\u0440\u0430 \u0438 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043b\u0433\u043e \u044f \u043d\u0435 \u0434\u0443\u043c\u0430\u043b:<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/xn\/xi\/5i\/xnxi5i40udu5f6tna08leupfwc4.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/xn\/xi\/5i\/xnxi5i40udu5f6tna08leupfwc4.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/xn\/xi\/5i\/xnxi5i40udu5f6tna08leupfwc4.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u041d\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u044f \u0440\u0435\u0448\u0438\u043b \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0442\u044c \u0441\u0430\u043c\u0443 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0431\u0435\u043b\u0438 \u043a\u043e\u0434\u043e\u043c. \u041c\u043d\u0435 \u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 \u0432\u0438\u0434\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f OpenSCAD, \u0433\u0434\u0435 \u043d\u0430\u0434\u043e \u0431\u044b\u043b\u043e \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u0443\u044e \u0434\u043e\u0441\u043a\u0443, \u0437\u0430\u0434\u0430\u0432\u0430\u044f \u0435\u0439 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u043f\u043e 3\u043c \u043e\u0441\u044f\u043c \u0438 \u0443\u0433\u043b\u044b \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0430. \u042d\u0442\u043e \u0432\u0441\u0451 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u043e \u0438 \u043d\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u0442\u0440\u0443\u0434\u043d\u043e \u0447\u0438\u0442\u0430\u0435\u043c\u043e \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u042f \u0445\u043e\u0442\u0435\u043b \u0447\u0435\u0433\u043e-\u0442\u043e \u043d\u043e\u0432\u043e\u0433\u043e. \u0418 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0443\u0442\u0438:<\/p>\n<ol>\n<li>\u0418\u0437\u0443\u0447\u0438\u0442\u044c \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u043d\u0443\u0436\u0434\u044b.<\/li>\n<li>\u041d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u0438 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434.<\/li>\n<\/ol>\n<p> \u0410 \u0447\u0442\u043e \u0442\u0443\u0442 \u0434\u0443\u043c\u0430\u0442\u044c? \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u043d\u043a\u0442! \u0415\u0449\u0451 \u0447\u0435\u0433\u043e-\u0442\u043e \u0438\u0437\u0443\u0447\u0430\u0442\u044c \u044f \u0431\u0443\u0434\u0443, \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u0447\u0435\u0433\u043e! \u041d\u043e \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e, \u0442\u043e \u0432 \u044d\u0442\u043e\u043c \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u043b\u044e\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0441\u044b. \u041c\u0438\u043d\u0443\u0441\u044b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u044f \u043c\u043e\u0433\u0443 \u00ab\u0438\u0437\u043e\u0431\u0440\u0435\u0441\u0442\u0438\u00bb \u0442\u043e, \u0447\u0442\u043e \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u044b\u043c-\u0434\u0430\u0432\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u043e \u0434\u043e \u043c\u0435\u043d\u044f, \u043f\u0440\u0438\u0447\u0451\u043c \u0438\u0437\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u043d\u0435 \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0432\u0438\u0434\u0435. \u0418\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0435\u0441\u0442\u0438 \u0447\u0442\u043e-\u0442\u043e \u043c\u0435\u0440\u0442\u0432\u043e\u0440\u043e\u0436\u0434\u0451\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043c\u0435\u043d\u044f \u043d\u0438 \u043a \u0447\u0435\u043c\u0443, \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u043f\u043b\u043e\u0445\u0430\u044f. \u041d\u043e \u043f\u043b\u044e\u0441\u044b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a \u044f \u0434\u0443\u043c\u0430\u044e \u0441\u0430\u043c, \u0438 \u044d\u0442\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c. \u0415\u0441\u043b\u0438 \u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u044e, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435, \u043c\u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u0441\u0432\u043e\u0451, \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0435\u0435\u0441\u044f. \u041c\u043e\u0437\u0433 \u0437\u0430\u0446\u0435\u043f\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430 \u043f\u0440\u043e\u0442\u043e\u043f\u0442\u0430\u043d\u043d\u0443\u044e \u0442\u0440\u043e\u043f\u0438\u043d\u043a\u0443 \u0438 \u043d\u0435 \u0445\u043e\u0447\u0435\u0442 \u0442\u043e\u043f\u0442\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0438\u0437\u0443\u0447\u0430\u043b, \u0434\u0430 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435, \u043d\u0435 \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u0432 \u043c\u0438\u0440\u0435 \u0435\u0441\u0442\u044c \u0435\u0449\u0435 \u0445\u043e\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0441\u0438\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0448\u0438\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0431\u0435\u043b\u044c PHP-\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u043c. \u0410 \u0435\u0441\u043b\u0438 \u043e\u043d \u0435\u0441\u0442\u044c, \u044f \u0431\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0451\u043b \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435, \u043c\u0430\u043b\u043e \u043b\u0438 \u0447\u0442\u043e \u0435\u043c\u0443 \u0435\u0449\u0451 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0432\u0437\u0431\u0440\u0435\u0434\u0451\u0442? \u0418 \u0432\u043e\u0442 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0434\u0438\u043b \u0438 \u0434\u0443\u043c\u0430\u043b. \u0418 \u0447\u0442\u043e-\u0442\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b. \u041a\u0432\u0430\u0434\u0440\u0430\u0442! \u0422\u043e\u0447\u043d\u0435\u0435, \u043d\u0435\u0442 \u2014 \u043a\u0443\u0431. \u0412\u0441\u0451 \u2014 \u043a\u0443\u0431. \u0410 \u0435\u0449\u0435 \u0442\u043e\u0447\u043d\u0435\u0435, \u0432\u0441\u0451 \u2014 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434. \u0418 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437 HTML\/CSS \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438. \u0422\u0430\u043a, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u043a\u0430\u043a-\u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c) \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u044e, \u0438\u0442\u0430\u043a, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043c\u0435\u0431\u0435\u043b\u044c \u0438\u0437 \u0414\u0421\u041f \u0432 99% \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443: \u043f\u0430\u043d\u0435\u043b\u044c \u043b\u043e\u0436\u0438\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e, \u043b\u0438\u0431\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e, \u0431\u0435\u0437 \u0445\u0438\u0442\u0440\u044b\u0445 \u0443\u0433\u043b\u043e\u0432 \u0438 \u043f\u0440\u0438\u0447\u0443\u0434\u043b\u0438\u0432\u044b\u0445 \u0444\u043e\u0440\u043c, \u043e\u043d\u0430 \u0441\u0430\u043c\u0430 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434 \u0438 \u0441\u0442\u044b\u043a\u0443\u0435\u0442\u0441\u044f \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434\u0430\u043c\u0438. \u0418 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434 (\u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e). \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0430\u0436\u0443 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e, \u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u043e\u043d\u044f\u0442\u043d\u043e \u043e \u0447\u0451\u043c \u044f \u0438 \u0447\u0442\u043e \u0443 \u043c\u0435\u043d\u044f \u0432\u044b\u0448\u043b\u043e.<\/p>\n<p> <i>\u0418\u0442\u0430\u043a, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0431\u044b\u043b \u0440\u0430\u0437\u043c\u0435\u0440.<\/i><\/p>\n<p> \u0412\u0441\u0451 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u043c\u0435\u0441\u0442\u043e \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0443\u0436\u043d\u043e \u044d\u0442\u0443 \u043c\u0435\u0431\u0435\u043b\u044c \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c, \u0438 \u043e\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e. (\u0421\u0440\u0430\u0437\u0443 \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 PHP.MEBEL.SCAD \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c) <\/p>\n<p> <i>\u0418 \u0441\u043e\u0437\u0434\u0430\u043b \u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e!<\/i><\/p>\n<pre><code class=\"php\">require_once \"scad.mebel.php\"; $box = box(500, 800, 600); draw_box($box); render_scad();<\/code><\/pre>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/li\/wt\/5-\/liwt5-ggzku5ttzprfk2yiqbb9g.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/li\/wt\/5-\/liwt5-ggzku5ttzprfk2yiqbb9g.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/li\/wt\/5-\/liwt5-ggzku5ttzprfk2yiqbb9g.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0412\u043e\u0442 \u043e\u043d, \u044d\u0442\u043e\u0442 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434 \u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u043a\u043e\u0439 \u043d\u0430\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438 \u0448\u0438\u0440\u0438\u043d\u043e\u0439 500\u043c\u043c, \u0432\u044b\u0441\u043e\u0442\u043e\u0439 800\u043c\u043c, \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 600\u043c\u043c. \u042f \u0441\u0440\u0430\u0437\u0443 \u0440\u0435\u0448\u0438\u043b \u043e\u043f\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435 x,y,z, \u0430 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u2014 \u0448\u0438\u0440\u0438\u043d\u0430 (h, \u043e\u043d \u0436\u0435 horizontal), \u0432\u044b\u0441\u043e\u0442\u0430 (v, \u043e\u043d \u0436\u0435 vertical) \u0438 \u0433\u043b\u0443\u0431\u0438\u043d\u0430 (d, \u043e\u043d \u0436\u0435 depth). \u0414\u0430\u043b\u044c\u0448\u0435 \u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043b \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f html\/css \u0440\u0430\u0437\u043c\u0435\u0442\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c div \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c border \u0438\u043b\u0438 padding, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0433\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442 \u0438 \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0443\u0436\u0435 \u0432 \u043c\u0435\u043d\u044c\u0448\u0435\u043c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0435.<\/p>\n<p> <i>\u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0437\u0434\u0430\u043b \u044f \u043f\u043e\u043b\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443 \u0438 \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u043d\u0435 \u043f\u043b\u043e\u0445\u043e \u044d\u0442\u043e:<\/i><\/p>\n<pre><code class=\"php\">require_once \"scad.mebel.php\"; $box = box(500, 800, 600); $box = wall_top($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); render_scad();<\/code><\/pre>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/s8\/0c\/aq\/s80caqwiy0nwbendjqtornbygga.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/s8\/0c\/aq\/s80caqwiy0nwbendjqtornbygga.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/s8\/0c\/aq\/s80caqwiy0nwbendjqtornbygga.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u041f\u0430\u043d\u0435\u043b\u044c \u043f\u0440\u0438\u043c\u0430\u0433\u043d\u0438\u0442\u0438\u043b\u0430\u0441\u044c \u043a \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0433\u0440\u0430\u043d\u0438 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434\u0430, \u0430 \u0441\u0430\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u043b\u0441\u044f \u043d\u0430 \u0442\u043e\u043b\u0449\u0438\u043d\u0443 \u044d\u0442\u043e\u0439 \u043f\u0430\u043d\u0435\u043b\u0438. \u041d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043f\u0430\u043d\u0435\u043b\u0438, \u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434\u0430, \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u043e\u043d\u0430 \u0432\u043e\u0437\u044c\u043c\u0451\u0442 \u043f\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b (\u043d\u0443 \u043b\u0430\u0434\u043d\u043e, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0437\u0430\u0434\u0430\u0442\u044c padding \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438, \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e).<\/p>\n<p> <i>\u0418 \u0441\u043e\u0437\u0434\u0430\u043b \u044f \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u043b\u043a\u0443 \u0441\u043d\u0438\u0437\u0443, \u0438 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u043c\u043d\u0435:<\/i><\/p>\n<pre><code class=\"php\">require_once \"scad.mebel.php\"; $box = box(500, 800, 600); $box = wall_top($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_bottom($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); render_scad();<\/code><\/pre>\n<p> <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yl\/ub\/x9\/ylubx9m2nvtoaxcxmx8dl6iwih4.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/yl\/ub\/x9\/ylubx9m2nvtoaxcxmx8dl6iwih4.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/yl\/ub\/x9\/ylubx9m2nvtoaxcxmx8dl6iwih4.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0441\u043d\u0438\u0437\u0443, \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u043a\u0430\u0440\u043a\u0430\u0441 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0438\u0437\u0434\u0435\u043b\u0438\u044f.<\/p>\n<p> <i>\u0418 \u0441\u043e\u0437\u0434\u0430\u043b \u044f \u0441\u0442\u0435\u043d\u043a\u0438 \u0431\u043e\u043a\u043e\u0432\u044b\u0435, \u043a\u0430\u043a \u043e\u043f\u043e\u0440\u044b \u043c\u0435\u0436 \u043f\u043e\u043b\u043e\u043a \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445:<\/i><\/p>\n<pre><code class=\"php\"> require_once \"scad.mebel.php\"; $box = box(500, 800, 600); $box = wall_top($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_bottom($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_left($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_right($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); render_scad();<\/code><\/pre>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/mt\/ce\/mh\/mtcemhdkqmuwmoyndkcklq1dwjk.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/mt\/ce\/mh\/mtcemhdkqmuwmoyndkcklq1dwjk.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/mt\/ce\/mh\/mtcemhdkqmuwmoyndkcklq1dwjk.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0418 \u0432\u043e\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u0440\u043e\u0431\u043a\u0430. \u041e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u0435\u0440\u0445\u043d\u044f\u044f \u0438 \u043d\u0438\u0436\u043d\u044f\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u0437\u0430\u0448\u043b\u0438 \u043d\u0430\u0434 \u0431\u043e\u043a\u043e\u0432\u044b\u043c\u0438, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438 \u0438\u0445 \u043f\u0435\u0440\u0432\u044b\u043c\u0438, \u0438 \u0431\u043e\u043a\u043e\u0432\u044b\u0435 \u0443\u0436\u0435 \u0440\u0438\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u043d\u043e\u043c \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434\u0435.<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/j7\/aw\/yn\/j7awyn--kmyuxyckdhgvdnwhiss.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/j7\/aw\/yn\/j7awyn--kmyuxyckdhgvdnwhiss.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/j7\/aw\/yn\/j7awyn--kmyuxyckdhgvdnwhiss.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u041d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u0442\u0435\u043d\u043e\u043a, \u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"php\">require_once \"scad.mebel.php\"; $box = box(500, 800, 600); $box = wall_left($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_right($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_top($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_bottom($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); render_scad();<\/code><\/pre>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ow\/8l\/lk\/ow8llkqytaoohbz_amlqy3virdg.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ow\/8l\/lk\/ow8llkqytaoohbz_amlqy3virdg.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ow\/8l\/lk\/ow8llkqytaoohbz_amlqy3virdg.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> <i>\u0418 \u0440\u0430\u0437\u0431\u0438\u043b \u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u0435\u0439 \u0440\u0430\u0432\u043d\u044b\u0445:<\/i><\/p>\n<pre><code class=\"php\">require_once \"scad.mebel.php\"; $box = box(500, 800, 600); $box = wall_top($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_bottom($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = padding($box, \"front=16\"); $box = wall_left($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_right($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_back($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $boxes = split_vertical($box, \"*,*,*,*,*\", 16); foreach ($boxes as $b) {     if (is_part($b)) {         draw_box($b);     } } render_scad();<\/code><\/pre>\n<p> <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/3w\/r7\/zw\/3wr7zw5v3ij6bqez31dmrqgexbi.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/3w\/r7\/zw\/3wr7zw5v3ij6bqez31dmrqgexbi.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/3w\/r7\/zw\/3wr7zw5v3ij6bqez31dmrqgexbi.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> \u0417\u0434\u0435\u0441\u044c \u043e\u043d\u0438 \u0440\u0430\u0437\u0431\u0438\u0442\u044b \u043d\u0430 \u0440\u0430\u0432\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043e\u043c \u0432 16 \u043c\u043c, \u044d\u0442\u043e \u043d\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e, \u0430 \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u044f\u0449\u0438\u043a\u043e\u0432 \u043a\u043b\u0430\u0441\u0442\u044c \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043e\u0431\u0440\u0435\u0437\u043e\u043a \u0414\u0421\u041f, \u0438 \u0442\u0430\u043a \u0438\u0445 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c. \u0420\u0430\u0437\u0431\u0438\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u043d\u043e &#171;*,*,*,*,*&#187;, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u043c\u0435\u0441\u0442\u043e * \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u0438\u0431\u043e % \u043e\u0442 \u0432\u0441\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430, \u043b\u0438\u0431\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0432 \u043c\u043c. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 \u043e\u0441\u0442\u0430\u0432\u0448\u0435\u0435\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 *.<\/p>\n<p> <i>\u0418 \u0437\u0430\u043a\u0440\u044b\u043b \u044f \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u043a\u0430\u0440\u043a\u0430\u0441\u043e\u043c \u0434\u0435\u0440\u0435\u0432\u044f\u043d\u043d\u044b\u043c:<\/i><\/p>\n<pre><code class=\"php\">require_once \"scad.mebel.php\"; $box = box(500, 800, 600); $box = wall_top($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_bottom($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_left($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_right($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_back($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $boxes = split_vertical($box, \"*,*,*,*,*\", 16); foreach ($boxes as $b) {     if (is_part($b)) {         $b = padding($b, \"left=10,right=10,back=5\");         $b = wall_front($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_bottom($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_back($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_left($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_right($b, \"\u042f\u0449\u0438\u043a: %W\");     } } render_scad();<\/code><\/pre>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/bo\/35\/4o\/bo354ojvs15hcwzxc2pymrkzv0i.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/bo\/35\/4o\/bo354ojvs15hcwzxc2pymrkzv0i.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/bo\/35\/4o\/bo354ojvs15hcwzxc2pymrkzv0i.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> <i>\u0418 \u043d\u0430\u0440\u0451\u043a \u044f \u0442\u0443\u043c\u0431\u043e\u044e \u0438\u0437\u0434\u0435\u043b\u0438\u0435 \u0441\u0432\u043e\u0451, \u043d\u043e \u0441\u043f\u0435\u0440\u0432\u0430 \u043e\u0431\u043b\u0430\u0433\u043e\u0440\u043e\u0434\u0438\u043b \u0435\u0451 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e:<\/i><\/p>\n<pre><code class=\"php\">require_once \"scad.mebel.php\"; $box = box(500, 800, 600); $box[\"closed\"][\"b\"] = true; $box = wall_top($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_bottom($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = padding($box, \"front=16\"); $box = wall_left($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_right($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = wall_back($box, \"\u041c\u0435\u0431\u0435\u043b\u044c: %W\"); $box = padding($box, \"top=10,bottom=10\"); $boxes = split_vertical($box, \"*,*,*,*,*\", 16); foreach ($boxes as $b) {     if (is_part($b)) {         wall_front($b, \"door=1,edge=f\", \"\u042f\u0449\u0438\u043a: %W\", \"front=-16,left=-16,right=-16,top=-6,bottom=-6\");         $b = padding($b, \"left=10,right=10,back=5\");         $b = wall_front($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_bottom($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_back($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_left($b, \"\u042f\u0449\u0438\u043a: %W\");         $b = wall_right($b, \"\u042f\u0449\u0438\u043a: %W\");     } } render_scad();<\/code><\/pre>\n<p> <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ci\/pw\/xw\/cipwxwz-qbjz7isiyyxngvurwrg.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ci\/pw\/xw\/cipwxwz-qbjz7isiyyxngvurwrg.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ci\/pw\/xw\/cipwxwz-qbjz7isiyyxngvurwrg.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/kg\/qk\/eh\/kgqkehlt2tpraxjaeieazlosf3q.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/kg\/qk\/eh\/kgqkehlt2tpraxjaeieazlosf3q.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/kg\/qk\/eh\/kgqkehlt2tpraxjaeieazlosf3q.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> \u0412\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0442\u0443\u043c\u0431\u043e\u0447\u043a\u0443. \u0418 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0448\u0451\u043b \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443. \u041c\u044b \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441\u043e \u0441\u0442\u0435\u043d\u043a\u0430\u043c\u0438 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438, \u043c\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0441 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434\u043e\u043c. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0430\u043c\u0438 \u0440\u0435\u0437\u0430\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043f\u0438\u043f\u0435\u0434\u043e\u0432, \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c \u0438\u043b\u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c. \u0410 \u043f\u043e\u0442\u043e\u043c \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043d\u0443\u0436\u043d\u044b\u0435 \u043d\u0430\u043c \u0441\u0442\u0435\u043d\u043a\u0438 \u043f\u0430\u043d\u0435\u043b\u044f\u043c\u0438. \u0418 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043a\u0443\u0447\u0443 \u0446\u0438\u0444\u0440 \u0432 \u0433\u043e\u043b\u043e\u0432\u0435, \u043a\u0430\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u044d\u0442\u0430 \u043f\u0430\u043d\u0435\u043b\u044c, \u043a\u0430\u043a \u0435\u0451 \u043f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c. \u0412\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0437\u0430 \u043d\u0430\u0441. \u0422\u0430\u043a\u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0435\u0434\u0443\u0433\u0430\u0434\u0430\u0442\u044c, \u0433\u0434\u0435 \u043d\u0443\u0436\u043d\u0430 \u043a\u0440\u043e\u043c\u043a\u0430, \u0430 \u0433\u0434\u0435 \u043d\u0435\u0442. \u0418\u043d\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f, \u043d\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0435\u0439 \u043f\u043e\u043c\u043e\u0447\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e. \u0412\u0441\u0435 \u043a\u0440\u0430\u044f, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u0442 \u043a\u0440\u043e\u043c\u043e\u043a, \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043a\u0440\u0430\u0441\u043d\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u0440\u0430\u0437\u0443 \u0431\u044b\u043b\u043e \u0432\u0438\u0434\u043d\u043e, \u0433\u0434\u0435 \u043a\u043e\u0441\u044f\u043a:<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/t_\/en\/0f\/t_en0ffb37eknzu_cntxdhdoe5e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/t_\/en\/0f\/t_en0ffb37eknzu_cntxdhdoe5e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/t_\/en\/0f\/t_en0ffb37eknzu_cntxdhdoe5e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0415\u0441\u043b\u0438 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"php\">view_cut_front(400);<\/code><\/pre>\n<p> <i>\u0418 \u0440\u0430\u0441\u0441\u0451\u043a \u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043c\u043e\u0433\u043b\u0438 \u043b\u0438\u0446\u0435\u0437\u0440\u0435\u0442\u044c \u0441\u0440\u0435\u0437 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u044f \u043c\u043e\u0435\u0433\u043e<\/i><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5w\/g2\/ut\/5wg2utyunftbfru3vdk42bhlw0y.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/5w\/g2\/ut\/5wg2utyunftbfru3vdk42bhlw0y.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/5w\/g2\/ut\/5wg2utyunftbfru3vdk42bhlw0y.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> \u0418 \u0432\u043e\u0442 \u043e\u043d\u0430 \u0432 \u0440\u0430\u0437\u0440\u0435\u0437\u0435 (OpenSCAD \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0442\u0430\u043a\u0438\u0435 \u0440\u0430\u0437\u0440\u0435\u0437\u044b \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430 (F6) \u0432\u0441\u0451 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0434\u043e, \u0430 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433 \u0442\u0443\u0442 \u043f\u043e\u0447\u0442\u0438 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439).<\/p>\n<p> \u0414\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 <\/p>\n<pre><code class=\"php\">render_parts_list();<\/code><\/pre>\n<p> \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0430\u0448\u0438\u043c \u0444\u0430\u0439\u043b\u043e\u043c \u0441 \u043a\u043e\u0434\u043e\u043c csv-\u0444\u0430\u0439\u043b \u0441 \u0447\u0430\u0441\u0442\u044f\u043c\u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0438\u043b\u0430:<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ry\/qh\/lz\/ryqhlz6xd_hbedoytfvwczywq1e.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ry\/qh\/lz\/ryqhlz6xd_hbedoytfvwczywq1e.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ry\/qh\/lz\/ryqhlz6xd_hbedoytfvwczywq1e.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u041d\u043e \u044d\u0442\u043e \u0432\u0441\u0451 \u0431\u0430\u043b\u043e\u0432\u0441\u0442\u0432\u043e, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u043b, \u043d\u043e \u0438 \u0441\u043e\u0431\u0440\u0430\u043b.<\/p>\n<h2><font color=\"#3AC1EF\">\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b<\/font><\/h2>\n<p> <\/p>\n<h4><font color=\"#3AC1EF\">\u258d \u0421\u0442\u043e\u043b-\u0441\u0442\u0435\u043b\u043b\u0430\u0436<\/font><\/h4>\n<p> \u0418\u0434\u0435\u044f \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u0434 \u0441\u0442\u043e\u043b\u043e\u043c \u0447\u0430\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043c \u0441\u0442\u0435\u043b\u043b\u0430\u0436, \u0438 \u043e\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u043f\u043e\u043b\u044c\u0437\u043e\u0439.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">require_once \"scad.mebel.php\";  $box = box(1400, 780 + 1516, 600); list($tableBox, $upperBox) = split_vertical($box, \"780,*\");  $thick = 24; $tableBox = set_thick($tableBox, $thick); $tableBox = set_edge_thick($tableBox, 2);  $tableBox = wall_top($tableBox, \"edge=f,round-front-left=100,round-front-right=100\", \"\u0421\u0442\u043e\u043b: %W\"); $tableBox = padding($tableBox, \"left=16,right=16,front=100\"); $tableBox = wall_left($tableBox, \"\", \"\u0421\u0442\u043e\u043b: %W\"); $tableBox = wall_right($tableBox, \"\", \"\u0421\u0442\u043e\u043b: %W\"); $tableBox = padding($tableBox, \"bottom=200\"); $tableBox = wall_back($tableBox, \"\", \"\u0421\u0442\u043e\u043b: %W\");  $shelfBox = split_vertical($tableBox, \"*,200\")[1]; $shelfBox = split_horizontal($shelfBox, \"25%,*\")[1]; $shelfBox = split_depth($shelfBox, \"200,*\")[0]; $shelfBox = wall_bottom($shelfBox, \"\", \"\u041f\u043e\u043b\u043a\u0430: %W\"); $shelfBox = wall_left($shelfBox, \"\", \"\u041f\u043e\u043b\u043a\u0430: %W\");  $thick = 16; $upperBox = set_thick($upperBox, $thick); $upperBox = set_edge_thick($upperBox, 0.4);  list($upperBottomBox, $upperTopBox) = split_vertical($upperBox, \"600,*\"); $upperBottomBox = split_depth($upperBottomBox, \"300,*\")[0]; $upperBottomBox = wall_left($upperBottomBox, \"\", \"\u041e\u043f\u043e\u0440\u044b \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430: %W\"); $upperBottomBox = wall_right($upperBottomBox, \"\", \"\u041e\u043f\u043e\u0440\u044b \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430: %W\");  $upperTopBox = split_depth($upperTopBox, \"400,*\")[0]; $upperTopBox = wall_top($upperTopBox, \"\", \"\u0421\u0442\u0435\u043b\u043b\u0430\u0436: %W\"); $upperTopBox = wall_left($upperTopBox, \"round-front-bottom=100\", \"\u0421\u0442\u0435\u043b\u043b\u0430\u0436: %W\"); $upperTopBox = wall_right($upperTopBox, \"round-front-bottom=100\", \"\u0421\u0442\u0435\u043b\u043b\u0430\u0436: %W\"); $upperTopBox = padding($upperTopBox, \"bottom=100,front=$thick\"); $upperTopShelfBoxes = split_vertical($upperTopBox, \"*,*,*\"); $n = 0; foreach ($upperTopShelfBoxes as $shelfBox) {     $shelfBox = wall_bottom($shelfBox, \"edge-back=0\", \"\u041f\u043e\u043b\u043a\u0430 \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430\");     $splitBox = split_horizontal($shelfBox, ($n % 2 == 0 ? \"58%,*\" : \"*,58%\"))[1];     $splitBox = wall_left($splitBox, \"edge-bottom=0,edge-top=0,edge-back=0\", \"\u041f\u0435\u0440\u0435\u0433\u043e\u0440\u043e\u0434\u043a\u0430 \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430\");     $n++; }  render_scad(); render_parts_list();<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> \u0420\u0435\u043d\u0434\u0435\u0440:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/l8\/sn\/ca\/l8snca5ohfbxf7ohq_vpgkeobgu.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/l8\/sn\/ca\/l8snca5ohfbxf7ohq_vpgkeobgu.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/l8\/sn\/ca\/l8snca5ohfbxf7ohq_vpgkeobgu.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> \u0412 \u0436\u0438\u0437\u043d\u0438 (\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a \u0441\u0442\u0435\u043d\u0435):<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/7x\/0q\/n_\/7x0qn_2-9eqggaaia2-t02g3fsu.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/7x\/0q\/n_\/7x0qn_2-9eqggaaia2-t02g3fsu.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/7x\/0q\/n_\/7x0qn_2-9eqggaaia2-t02g3fsu.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> <\/p>\n<h4><font color=\"#3AC1EF\">\u258d \u0424\u0440\u0430\u043d\u043a\u0435\u043d\u0448\u0442\u0435\u0439\u043d \u0438\u0437 \u0441\u0442\u043e\u043b\u0430-\u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430<\/font><\/h4>\n<p> \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0430-\u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430, \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0434 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0438 \u0441\u0437\u0430\u0434\u0438 \u043e\u0442\u0441\u0442\u0443\u043f \u043d\u0430 10 \u0441\u043c, \u0447\u0442\u043e\u0431\u044b \u0442\u0430\u043c \u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u0430 \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u044d\u0442\u043e \u043a\u0440\u044b\u0448\u043a\u043e\u0439 \u0432\u043d\u0438\u0437\u0443.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">require_once \"scad.mebel.php\";  $railsThick = 10;  $box = box(1500, 780 + 1516, 600, 1600); $box[\"closed\"][\"b\"] = true; list($tableBox, $upperBox) = split_vertical($box, \"780,*\"); $thick = 24; $tableBox = set_thick($tableBox, $thick); $tableBox = set_edge_thick($tableBox, 2);  $tableBox = wall_top($tableBox, \"edge=f,edge-back=0,round-front-left=100,round-front-right=100\", \"\u0421\u0442\u043e\u043b: %W\"); $tableBox = padding($tableBox, \"left=230,front=100\"); list($tableBox, $computerBox) = split_horizontal($tableBox, \"*,230\"); $tableBox = padding($tableBox, \"back=100\"); $tableBox = wall_left($tableBox, \"\", \"\u0421\u0442\u043e\u043b: %W\"); $tableBox = wall_right($tableBox, \"\", \"\u0421\u0442\u043e\u043b: %W\"); $computerBox = wall_bottom($computerBox, \"edge-left=0\", \"\u0421\u0442\u043e\u043b: \u041f\u043e\u0434 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\" );  list($tableCloseBox,$tablePartBox) = split_vertical($tableBox, \"360,*\"); $tableCloseBox = wall_back($tableCloseBox, \"edge=f\", \"\u0421\u0442\u043e\u043b: \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0448\u043a\u0430\"); $tablePartBox = wall_back($tablePartBox, \"\", \"\u0421\u0442\u043e\u043b: %W\");  $thick = 16; $upperBox = set_thick($upperBox, $thick); $upperBox = set_edge_thick($upperBox, 0.4);  list($upperBottomBox, $upperTopBox) = split_vertical($upperBox, \"600,*\"); $upperBottomBox = split_depth($upperBottomBox, \"300,*\")[0]; $upperBottomBox = wall_left($upperBottomBox, \"\", \"\u041e\u043f\u043e\u0440\u044b \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430: %W\"); $upperBottomBox = wall_right($upperBottomBox, \"\", \"\u041e\u043f\u043e\u0440\u044b \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430: %W\");  $upperTopBox = split_depth($upperTopBox, \"400,*\")[0]; $upperTopBox = wall_top($upperTopBox, \"\", \"\u0421\u0442\u0435\u043b\u043b\u0430\u0436: %W\"); $upperTopBox = wall_left($upperTopBox, \"round-front-bottom=100\", \"\u0421\u0442\u0435\u043b\u043b\u0430\u0436: %W\"); $upperTopBox = wall_right($upperTopBox, \"round-front-bottom=100\", \"\u0421\u0442\u0435\u043b\u043b\u0430\u0436: %W\"); $upperTopBox = padding($upperTopBox, \"bottom=100,front=$thick\"); $upperTopShelfBoxes = split_vertical($upperTopBox, \"*,*,*\"); $n = 0; foreach ($upperTopShelfBoxes as $shelfBox) {     $shelfBox = wall_bottom($shelfBox, \"edge-back=0\", \"\u041f\u043e\u043b\u043a\u0430 \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430\");     $splitBox = split_horizontal($shelfBox, ($n % 2 == 1 ? \"60%,*\" : \"*,60%\"))[1];     $splitBox = wall_left($splitBox, \"edge-bottom=0,edge-top=0,edge-back=0\", \"\u041f\u0435\u0440\u0435\u0433\u043e\u0440\u043e\u0434\u043a\u0430 \u0441\u0442\u0435\u043b\u043b\u0430\u0436\u0430\");     $n++; }  $box = box(1830, 780 - 24, 500); $box[\"closed\"][\"b\"] = true; $box = wall_top($box, \"edge-right=0\", \"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: %W\"); $box = padding($box, \"front=$thick\"); list($boxesBox, $centerBox) = split_horizontal($box, \"400,*\"); $boxesBox = wall_left($boxesBox, \"\", \"\u041f\u043e\u0434 \u044f\u0449\u0438\u043a\u0438: %W\"); $boxesBox = wall_right($boxesBox, \"\", \"\u041f\u043e\u0434 \u044f\u0449\u0438\u043a\u0438: %W\"); $boxesBox = wall_bottom($boxesBox, \"edge-left=0\", \"\u041f\u043e\u0434 \u044f\u0449\u0438\u043a\u0438: %W\");  $thick2 = $thick \/ 2; $space = $thick - 4; $space2 = $space \/ 2;  $boxesBoxes = split_vertical(padding($boxesBox, \"top=4\"), \"*,*,*,*,*\", $thick); foreach ($boxesBoxes as $boxBox) {     if (is_part($boxBox)) {         wall_front($boxBox, \"door=1,edge=f\", \"\u042f\u0449\u0438\u043a: %W\", \"front=-$thick,left=-$thick,right=-$thick,bottom=-$space\");         $boxBox = padding($boxBox, \"left=$railsThick,right=$railsThick,back=5\");         $boxBox = wall_front($boxBox, \"\", \"\u042f\u0449\u0438\u043a: %W\");         $boxBox = wall_bottom($boxBox, \"\", \"\u042f\u0449\u0438\u043a: %W\");         $boxBox = wall_back($boxBox, \"\", \"\u042f\u0449\u0438\u043a: %W\");         $boxBox = wall_left($boxBox, \"\", \"\u042f\u0449\u0438\u043a: %W\");         $boxBox = wall_right($boxBox, \"\", \"\u042f\u0449\u0438\u043a: %W\");     } }  $centerBox = wall_bottom($centerBox, \"edge-left=0,edge-right=0\", \"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: %W\"); list($bottomCenterBox, $upperCenterBox) = split_vertical($centerBox, \"320,*\");  $upperCenterBox = wall_bottom($upperCenterBox, \"edge-left=0,edge-right=0\", \"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\"); wall_left(split_horizontal($upperCenterBox, \"*,*\", $thick)[1], \"\", \"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\");  list($bottomCenterLeftBox, $bottomCenterSplitBox, $bottomCenterRightBox) = split_horizontal($bottomCenterBox, \"*,*\", $thick); wall_left($bottomCenterSplitBox, \"\", \"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u041d\u0438\u0436\u043d\u0438\u0439 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c\");  $bottomCenterLeftBox = wall_front($bottomCenterLeftBox, \"edge=f\", \"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u041b\u0435\u0432\u0430\u044f \u043a\u0440\u044b\u0448\u043a\u0430\", \"front=-$thick,top=-$thick,bottom=-$space,left=2,right=-$space2\"); $bottomCenterRightBox = wall_front($bottomCenterRightBox, \"edge=f\", \"\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c: \u041f\u0440\u0430\u0432\u0430\u044f \u043a\u0440\u044b\u0448\u043a\u0430\", \"front=-$thick,top=-$thick,bottom=-$space,right=2,left=-$space2\");  render_scad(); render_parts_list();<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> \u0420\u0435\u043d\u0434\u0435\u0440:<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/zc\/yq\/lf\/zcyqlf6evkl0l8jsztx__e3k5da.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/zc\/yq\/lf\/zcyqlf6evkl0l8jsztx__e3k5da.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/zc\/yq\/lf\/zcyqlf6evkl0l8jsztx__e3k5da.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yx\/ni\/qp\/yxniqpbcxzgzuzaotzsq-1dxn1s.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/yx\/ni\/qp\/yxniqpbcxzgzuzaotzsq-1dxn1s.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/yx\/ni\/qp\/yxniqpbcxzgzuzaotzsq-1dxn1s.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> \u0412 \u0436\u0438\u0437\u043d\u0438 (\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a \u0441\u0442\u0435\u043d\u0435):<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/0d\/va\/1v\/0dva1vssoqykfioetiwxtndyq48.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/0d\/va\/1v\/0dva1vssoqykfioetiwxtndyq48.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/0d\/va\/1v\/0dva1vssoqykfioetiwxtndyq48.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<h4><font color=\"#3AC1EF\">\u258d \u0421\u0442\u043e\u043b \u043d\u0430 \u043a\u0443\u0445\u043d\u044e<\/font><\/h4>\n<p> \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c \u0431\u044b\u043b\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0437\u0430 \u043d\u0438\u043c \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0441\u0438\u0434\u0435\u0442\u044c \u0441 \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u0442\u0440\u0451\u0445 \u0441\u0442\u043e\u0440\u043e\u043d, \u0438 \u043d\u043e\u0433\u0438 \u043d\u0435 \u0443\u043f\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043d\u0438 \u0432\u043e \u0447\u0442\u043e, \u0430 \u0442\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0438 \u0443\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u043f\u043e\u0434 \u043d\u0435\u0433\u043e \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u043e\u0441\u044c \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0435\u0435 \u043a\u0443\u0445\u043e\u043d\u043d\u044b\u0445 \u0443\u0433\u043e\u043b\u043a\u043e\u0432.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041a\u043e\u0434<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"php\">require_once \"scad.mebel.php\";  $thick = 24; $edgeThick = 2;  setEdgeThick($edgeThick); setThick($thick);  $tableBox = box(1200, 742, 800); $tableBox = wall_top($tableBox, \"round-right-front=100,round-right-back=100\", \"\u0421\u0442\u043e\u043b\u0435\u0448\u043d\u0438\u0446\u0430\"); $tableBox = padding($tableBox, \"left=30,right=400,front=50,back=50\"); $tableBox = wall_left($tableBox, \"\", \"\u0421\u0442\u043e\u043b: %W\"); $tableBox = padding($tableBox, \"front=110,back=110\"); $tableBox = wall_right($tableBox, \"\", \"\u0421\u0442\u043e\u043b: %W\");  $tableBox = split_vertical($tableBox, \"*,250\")[1]; $tableBox = wall_back(split_depth($tableBox, \"*,*\", $thick)[1], \"\", \"\u0421\u0442\u043e\u043b: \u041f\u0435\u0440\u0435\u0433\u043e\u0440\u043e\u0434\u043a\u0430\");  for ($i = 0; $i &lt; 2; $i++) {     for ($j = 0; $j &lt; 2; $j++) {         $chairBox = box(350, 452, 350, 60 + $i * 355, 0, $j * 450);         $chairBox = wall_top($chairBox, \"round=100\", \"\u0422\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0430: \u0421\u0438\u0434\u0435\u043d\u044c\u0435\");         $chairBox = padding($chairBox, \"left=60,right=60,back=60,front=60\");         $chairBox = wall_left($chairBox, \"\", \"\u0422\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0430: %W\");         $chairBox = wall_right($chairBox, \"\", \"\u0422\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0430: %W\");         $chairBox = split_vertical($chairBox, \"*,200\")[1];         $chairBox = wall_back(split_depth($chairBox, \"*,*\", $thick)[1], \"\", \"\u0422\u0430\u0431\u0443\u0440\u0435\u0442\u043a\u0430: \u041f\u0435\u0440\u0435\u0433\u043e\u0440\u043e\u0434\u043a\u0430\");     } }  render_scad(); render_parts_list();<\/code><\/pre>\n<p> <\/div>\n<\/p><\/div>\n<p> \u0420\u0435\u043d\u0434\u0435\u0440:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ln\/hq\/ts\/lnhqtsd3eytrrbfsdljnan-kuk8.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/ln\/hq\/ts\/lnhqtsd3eytrrbfsdljnan-kuk8.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/ln\/hq\/ts\/lnhqtsd3eytrrbfsdljnan-kuk8.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/div>\n<p> \u0412 \u0436\u0438\u0437\u043d\u0438:<\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/br\/9y\/uu\/br9yuufmvas5rdihj7q1jditp0u.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/br\/9y\/uu\/br9yuufmvas5rdihj7q1jditp0u.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/br\/9y\/uu\/br9yuufmvas5rdihj7q1jditp0u.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yc\/2g\/0v\/yc2g0vuvpludskunaa5vafeg_ve.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/yc\/2g\/0v\/yc2g0vuvpludskunaa5vafeg_ve.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/yc\/2g\/0v\/yc2g0vuvpludskunaa5vafeg_ve.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<p> <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cw\/qj\/cs\/cwqjcsd-ltjhsecvfd5dha6kfnm.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/cw\/qj\/cs\/cwqjcsd-ltjhsecvfd5dha6kfnm.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/cw\/qj\/cs\/cwqjcsd-ltjhsecvfd5dha6kfnm.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<h2><font color=\"#3AC1EF\">\u0418 \u0440\u0435\u0437\u044e\u043c\u0438\u0440\u0443\u044e<\/font><\/h2>\n<p> \u0415\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u0430\u043c \u0437\u0430\u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0435\u0431\u0435\u043b\u044c \u0442\u0430\u043a\u0436\u0435 \u0431\u0435\u0437\u0443\u043c\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u044f, \u0432\u043e\u0442 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e:<\/p>\n<ul>\n<li><a href=\"https:\/\/openscad.org\/downloads.html\">OpenSCAD<\/a> \u2014 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043d\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u043b\u0434, \u0430 \u043d\u0430\u0439\u0442\u043b\u0438, \u043e\u043d \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/li>\n<li><a href=\"https:\/\/www.php.net\/downloads.php\">PHP<\/a> \u2014 \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e 7.2. \u041d\u043e \u0432\u0441\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u2014 8.4<\/li>\n<li>\u041b\u044e\u0431\u043e\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440, \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <a href=\"https:\/\/code.visualstudio.com\/download\">VSCode<\/a> \u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u043c \u0434\u043b\u044f PHP, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043b\u0430\u0433\u0438\u043d F5 Anything, \u0447\u0442\u043e\u0431\u044b \u043f\u043e F5 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442. \u041e\u043d \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u0444\u0430\u0439\u043b \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .scad. \u0415\u0433\u043e \u043d\u0430\u0434\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 OpenSCAD. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442\u0435 \u043d\u0430\u0436\u0438\u043c\u0430\u0442\u044c F5 \u0432 VSCode, \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e scad \u0444\u0430\u0439\u043b \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0441\u044f \u0438 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<\/li>\n<li>\u0421\u0430\u043c\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439: <a href=\"https:\/\/github.com\/CodeName33\/php.mebel.scad\">https:\/\/github.com\/CodeName33\/php.mebel.scad<\/a><\/li>\n<\/ul>\n<p> \u041d\u0443 \u0438 \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e \u0432\u0441\u0451 MIT, \u0434\u0435\u043b\u0430\u0439\u0442\u0435 \u0441 \u044d\u0442\u0438\u043c \u0447\u0435\u0433\u043e \u0445\u043e\u0442\u0438\u0442\u0435.<\/p>\n<p> \u00a9 2025 \u041e\u041e\u041e \u00ab\u041c\u0422 \u0424\u0418\u041d\u0410\u041d\u0421\u00bb<\/p>\n<blockquote><p><b><font color=\"#3AC1EF\"><a href=\"https:\/\/t.me\/ruvds_community\">Telegram-\u043a\u0430\u043d\u0430\u043b \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u0430\u043c\u0438, \u0440\u043e\u0437\u044b\u0433\u0440\u044b\u0448\u0430\u043c\u0438 \u043f\u0440\u0438\u0437\u043e\u0432 \u0438 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 IT \ud83d\udcbb<\/a><\/font><\/b><\/p><\/blockquote>\n<p><a href=\"https:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=CodeName33&amp;utm_content=skaz_o_tom_kak_odin_programmist_sebe_mebel_iz_dsp_na_php_programmiroval\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yo\/se\/km\/yosekm4h_f7y7oia-ghbbpc0phi.png\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/yo\/se\/km\/yosekm4h_f7y7oia-ghbbpc0phi.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/yo\/se\/km\/yosekm4h_f7y7oia-ghbbpc0phi.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/904994\/\"> https:\/\/habr.com\/ru\/articles\/904994\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/companies\/ruvds\/articles\/904994\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/87\/oe\/zv\/87oezvuc0oxoygu4xiadjkr_udu.jpeg\" sizes=\"(max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/webt\/87\/oe\/zv\/87oezvuc0oxoygu4xiadjkr_udu.jpeg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/webt\/87\/oe\/zv\/87oezvuc0oxoygu4xiadjkr_udu.jpeg 781w\" loading=\"lazy\" decode=\"async\"\/><\/a><\/p>\n<p> \u0422\u0443\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043c\u0435\u0431\u0435\u043b\u0438 \u0438\u0437 \u0414\u0421\u041f \u043d\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0435\u0442\u043e\u0434\u043e\u043c, \u0430 \u0432 \u0432\u0438\u0434\u0435 PHP-\u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-460654","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/460654","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=460654"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/460654\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=460654"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=460654"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=460654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}