Blender 3D to 2d DXF

Small Python script witch can make 2d from selected 3D objects in Blender. Useful for furniture. For 2D I use qCad (free version).

import bpy, os

# get the current selection
selection = bpy.context.selected_objects

# initialize a blank result variable
element_width = "-x"
element_height = "z"

list_dims = []

# Put Origin to middle
#bpy.ops.object.origin_set( type = 'ORIGIN_GEOMETRY' )
bpy.ops.object.transform_apply(location=True, rotation=True, scale=True)
bpy.ops.object.origin_set(type='ORIGIN_CENTER_OF_VOLUME', center='MEDIAN')


# iterate through the selected objects
for sel in selection:
    # get the current object's dimensions
    dims = sel.dimensions
    
    # fix dimensions
    a = dims.x*1000
    b = dims.y*1000
    c = dims.z*1000
    
    # fix locations
    lcx = sel.location.x*1000
    lcy = sel.location.y*1000
    lcz = sel.location.z*1000
    
    w = 0
    h = 0
    
    lx = 0
    ly = 0

    x_and_width = {
    	# w, lx
    	"x": [round(a, 1), round(lcx - a/2, 3)],
    	"y": [round(b, 1), round(lcy - b/2, 3)],
    	"z": [round(c, 1), round(lcz - c/2, 3)],
    	"-x": [round(a, 1), round(-(lcx) - a/2, 3)],
    	"-y": [round(b, 1), round(-(lcy) - b/2, 3)],
    	"-z": [round(c, 1), round(-(lcz) - c/2, 3)]
    }

    y_and_height = {
    	"x": [round(a, 1), round(lcx - a/2, 3)],
    	"y": [round(b, 1), round(lcy - b/2, 3)],
    	"z": [round(c, 1), round(lcz - c/2, 3)],
    	"-x": [round(a, 1), round(-(lcx) - a/2, 3)],
    	"-y": [round(b, 1), round(-(lcy) - b/2, 3)],
    	"-z": [round(c, 1), round(-(lcz) - c/2, 3)]
    }

    celX = x_and_width[element_width]
    celY = y_and_height[element_height]

    list_dims.append( [ celX[0], celY[0], celX[1], celY[1] ] )


print("");
prnt_rect_funct = """
function rect(x, z, m){
    var doc = getDocument();
    var pList = [new RVector(0,0), new RVector(x,0), new RVector(x,z), new RVector(0,z)];
    var poly = new RPolyline(pList, true);
    var polyData = new RPolylineData(poly);
    var n = new RPolylineEntity(doc, polyData);
    addEntity(n);
    move(n, m);
}
"""
print(prnt_rect_funct)

for x in list_dims:
    print("rect(", x[0], ", ", x[1], ",", "[", x[2], ", ", x[3], "])")

Share and Enjoy !

Shares

Kitchen cabinet calculator

Написах един инструмент, който да ми помогне при калкулирането на необходимите плоскости за сглобяване на кухненски шкафове. Интрумента представлява един HTML файл, който може да се стартира от всяко устройство. Кода е респонзив. Най-полезната за мен опция е възможността за експортиране на модела в Blender чрез генериране на Python скрипт. Кръстих го Kitchen cabinet calculator и е на английски, за да мога да обхвана по-голяма аудитория. Като ми остане време, ще направя и версия на български, но за сега мисля, че е достатъчно разбираем. Кода е напълно свободен и всеки с PHP 7 и по-висока версия може да си го компилира.

Demo: Kitchen cabinet calculator

Download: Kitchen cabinet calculator
Source: Kitchen cabinet calculator – Source

Видео ръководство, как се използва инструмента:
https://youtu.be/LPJBfQQgEp8

Share and Enjoy !

Shares

Идея за разтегателно легло (extendable bed idea)

Хрумна ми една идея за разтегателно легло и реших да я запиша. Някой ден може да реализирам или да направя нещо друго на базата на тази идея. Точно такова разтегателно легло не съм виждал, а мисля, че има смисъл в подобна конструкция. Може да се ползва в ограничени пространства или като легло за гости. Боунус е възможността за монтиране на голямо чекмедже. Ренднах в Blender няколко картинки, които показват, каква точно ми е идеята за разтегателно легло.
Това е свития, компактен вариант на леглото:
Разтегателно легло, extendable bed
Разтягането става, като се издърпа лявата страница:
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Скарата на леглото е изградена от летвички 950x40x20mm, а материал примерно липа:
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Летвичките са разположени шахматно. На плъзгащата част е монтирана ограничаваща летвичка.
Разтегателно легло, extendable bed
Разтегателно легло, extendable bed
Матрака може да е двойно сгъваем с размери на отделните части 820x950x100mm. При разпъване се получава матрак 1900x820x100mm. За по-голямо удобство, след разтягане може да се метне отгоре един топ-матрак, примерно от тук:
топ матрак
Летвичките профил 4x2cm могат да се вземат от тук:
летвички липа 40x20x2000
Корпуса на леглото е проектиран от ЛПДЧ 18mm. Страниците и дъното на чекмеджето са проектирани от суров МДФ 12mm.
Има какво още да се помисли, като например при компактния вариант на леглото има луфт от страни между матраците и страницата. Като ми дойде музата, ще помисля, как мога да го подобря.

Ето и кратко видео, което показва цялата ми идея за разтегателно легло:

If your browser doesn’t support HTML5 video. Here is a link to the video instead.

Blender файл на проекта с размери 1:1: leglo_divan-82x190cm.zip

Share and Enjoy !

Shares




Blender 2.79 тест на 2 нови функции – Denoising и Filmic Color Management

Днес е ден за айляк и докато се ровех за нещо интересно с изненада установих, че в новата версия на Blender са добавени 2 много готини функции. Една драстично намаля шума и времето на ренване – Denoising. Другата функция нормализира динамичния баланс, така че да се избегне прегаряне в рендваното изображение – Filmic Color Management. Засърбяха ме ръчичките да направя набързо един тест и много се накефих на новите опции!
Blender файла: Kyshticha_v_ezero-v.001.zip
Blender 3D - къщичка в езеро

Share and Enjoy !

Shares




Snowman – Blender 3D

Тъй като тази Коледа няма сняг и на мен и дъщеря ми ужасно ни липсва, решихме да си нарисуваме поне снежен човек.
Весели празници на всички!
Blender 3D - snowman

Сорс файл: Snejen_chovek-blender.zip
Рендер: GPU, Cycles render

Share and Enjoy !

Shares




November wallpaper – 2015

November_2015_Full
Заиграх се с Blender, че ми трябваше календар на десктопа за ноември.
Файла е малко дървен, но ще го кача, ако някой иска да си го редактира. Не е advanced, има само един DOF на камерата.
Допълнително генерирах с вградения календар в Inkscape един датник за ноември. Сглобих всичко във Photoshop.
Сорс с файловете

================================

Тези 3D макрота много ме забавляват. Направих още една версия на календар за ноември. Опитах се да придам някакъв псевдо кубичен стил.
Blender 3D - Calendar November 2015
Сорс – v.002
Следващият път ще се пробвам в стил тотален “Майнкрафт”.
ПС: Имам нужда от нова видео-карта, че с тая чакам маса време за просто HD-рендер. Само че не знам на какво да наблегна и кое е по-важно за рендване – процесора, скоростта на паметта, големината на паметта? Не играя игри и може би някакво балансирано решение от сорта на 2Gb GDDR5, би ми свършило добра работа. Отворен съм за предложения.

Share and Enjoy !

Shares




Проектиране на мебели в Blender 3D – ръководство и видео урок

RENDERED етажерка
Ще се опитам да напиша един урок за просто проектиране, моделиране и програмиране на мебели в Blender. Програмата поддържа езика за програмиране Python, който разполага с безкрайни възможност за създаване и управление на обекти. Ще се постарая да се изразявам максимално простичко и ясно.

Необходими инструменти:
1. Молив
2. Лист хартия
3. Blender 3D – по възможност версия 2.67 или по-нова

Първо да скицираме някакъв по-простичък обект (мебел), който искаме да проектираме. Аз ще създам проста етажерка за окачване на стена. За да улесня максимално процеса, моята етажерка ще е от 4 детайла – 2 еднакви по размер страници + 2 една по размер елемента, които ще са гръб и под. Ето как изглежда моята етажерка:
Схема на етажерка
Сега е време да се сблъскаме с назъбения интерфейс на моделера Blender. Програмата е малко плашеща за нови потребители. Но има голямо комюнити и много уроци, които помагат за овладяването и. Лично аз много харесвам тази програма и използвам предимно базовите и фукнции, които често ми олесняват живота. Нека да започнем със забавата.
Стартираме програмата и натискаме Delete бутона от клавиатурата, за да изтрием куба, който се зарежда под дефолт.
Blender 3D interface
Старайте се да не кликате никъде с мишката, докато не разберете каква е логиката на програмата. Кликовете с мишока са:
– Левия клик поставя 3Д-курсора в точката на кликане
– десния клик върху обект го селектира
– Скролирането в 3D фрейма зумва
– Натиснат среден бутон върти 3Д-фрейма
– среден бутон + задържан Shift мести 3Д-фрейма

Има и доста допълнителни команди, но за тях по-късно.

Сега, докато не сме почнали с експериментите, нека разгледаме координатната система. Намира се долу в ляво:
Blender координатна система
Сега да помислим как да си разположим елементите от нашата етажерка:
Проектиране на етажерка
Важно е да се отбележи, че ще използваме метричната система. Това трябва да му го кажем на Blender, иначе ще прави глупости. За целта правим следните настройки:
Елементите, които трябва да създадем в 3Д са:
– 2 броя страници: 18x240x222mm
– 2 броя плоскости за гръб и под: 850x222x18mm
Тези елементи по-късно ще ги добавим в нашия програмен код. Размерите на всеки елемент могат да се групират в масив. Примерно такъв:
stranici=[0.018, 0.240, 0.222]
gryb=[0.850, 0.222, 0.018]
dyno=[0.850, 0.018, 0.222]

Можем да ги създадем по поне 10 начина, но аз ще ви покажа един много нестандартен подход, който често се оказва най-оптимален и бърз вариант. Ще използвам много просто програмиране на Python. За целта трябва да отворим редактора за въвеждане на Python скриптове. Това също може да стане по много начини, но аз ще използвам предефинираните полета на Blender:
Кликнете бутона Choose Screen layout и изберете Scripting
Blender scripting
Кликнете на бутона +New
Blender new script
!!! Супер важно: Старайте се курсора на мишката винаги да е във фрейма в който работите. Примерно, ако искате да въвеждате текст в текстовия редактор, курсора ви трябва да е в този прозорец (фрейм).
В текстовия редактор пейстнете следния код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import bpy
 
strani=[0.018, 0.240, 0.222]
gryb=[0.850, 0.222, 0.018]
dyno=[0.850, 0.018, 0.222]
 
# създаваме 2-те страници. Те лежат в едно направление
# и можем да използваме цикъл
for x in range(2): # изпълни 2 пъти
    bpy.ops.mesh.primitive_cube_add(radius=1)
    bpy.context.object.dimensions=strani
 
# създаваме гръб
bpy.ops.mesh.primitive_cube_add(radius=1)
bpy.context.object.dimensions=gryb
 
# създаваме пода
bpy.ops.mesh.primitive_cube_add(radius=1)
bpy.context.object.dimensions=dyno

Прозореца със скрипта трябва да изглежда така:
Blender Python script
Командите:

1
2
bpy.ops.mesh.primitive_cube_add
bpy.context.object.dimensions

са въведени в API-интерфейса на Blender. Всяка версия на програмата има документация в която са описани всички команди, които могат да се изпълняват от програмата. Как лесно да разберем коя команда как се ползва ще опиша някой друг път.

Сега трябва да изпълним кода. Натискаме Text->Run Script:
Blender run script
От тук насетне следва местене и рендване в Blender. Действията, които съм извършил в програмата, могат да се видят в по-долното видео:
[flv:https://blog.nediko.info/examples/blender/Etajerka_tutorial.flv https://blog.nediko.info/examples/blender/Etajerka_tutorial.jpg 584 316]

Share and Enjoy !

Shares




Blender Perpendicular Camera

Търсих си готов файл за Blender 3D с перпендикулярна камера, спрямо обект. Не намерих и реших да си направя сам такава сцена, защото в някои случаи ми се иска да рендвам изглед точно срещу (перпендикулярно над) обекта:
Blender_Camera_Perpendicular
Ето примерната сцена в която ренднах някакви обръчи:
Blender_perpendicular_camera

Файла може да се изтегли от тук: Blender – Perpendicular Camera

Share and Enjoy !

Shares




Blender + Photoshop – Winter wallpaper

Хвана ме Коледното настроение. Може би е заради Jim Beam-а и лошото време :)! Мек бърбън за кеф! моите приятели не го харесват, но на мен ми е една голяма мазня, от готните. И изобщо Jim Beam-а ми влиза в челната 3-ка на любимите алкохоли. Естествено, че ми действа депресарски липсата на всякакви видове сняг. Искам сняг бе хора! Айде, развалете го малко т’ва време, да му се не види! Ама ми е гот де :)! Все още е само лееекинко Коледно, но пък с тенденция!
Докато си мислих (недей да мислиш, бъди себе си …пффффф :)) и слушах Коледния албум на Pink Martini – Joy to the World реших да рисувам. Пийньето действа на музите, ако ти се намират. Изразни средства, които ползвам: Blender 3D (вездесъщия моделер!) и Photoshop, не че и с GIMP не става, това дето го драща.
Ето я картинката:
Коледа Wallpaper
Прилагам и сорса – 3D-файла и PSD-Photoshop файла: Blender + Photoshop Winter wallpaper
Идеята иска още много работа, като примерно да и надълбая една пъртина, да мацна някоя зарязана шейна, да заваля сняг и дъра-бъра. Но и така стилизирано ми харесва на деКстопа. Ако ви се вали сняг, завалете си го.

Share and Enjoy !

Shares