Untitled
unknown
plain_text
a year ago
3.0 kB
14
Indexable
import bpy
# Tworzy podstawowy klocek LEGO 2x4
def create_lego_brick():
# Wymiary klocka LEGO (w jednostkach Blender)
width = 3.2 # Szerokość klocka (2 studsy)
length = 6.4 # Długość klocka (4 studsy)
height = 3.2 # Wysokość klocka
stud_radius = 0.5 # Promień studa
stud_height = 0.2 # Wysokość studa
stud_spacing = 0.8 # Odstęp między studami
# Tworzenie podstawy klocka (prostopadłościan)
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, align='WORLD')
brick = bpy.context.object
brick.scale = (width / 2, length / 2, height / 2)
brick.location.z = height / 2
# Nazwij klocek
brick.name = "LEGO_Brick_2x4"
# Tworzenie wypustek na górze klocka (studs)
for i in range(2): # Dwa studsy w szerokości
for j in range(4): # Cztery studsy w długości
# Dodanie cylindrycznego studa
bpy.ops.mesh.primitive_cylinder_add(radius=stud_radius, depth=stud_height, enter_editmode=False, align='WORLD')
stud = bpy.context.object
stud.location = (i * 3.2 - width / 2 + 1.6, j * 3.2 - length / 2 + 1.6, height / 2 + stud_height / 2)
# Połącz cylindry z klockiem
bpy.context.view_layer.objects.active = brick
bpy.ops.object.select_all(action='DESELECT')
stud.select_set(True)
brick.select_set(True)
bpy.context.view_layer.objects.active = brick
bpy.ops.object.join() # Łączenie obiektów
# Tworzenie wnęk na spodzie klocka (recesses)
recess_radius = stud_radius * 0.95 # Trochę mniejszy niż stud
recess_depth = height / 2 # Wnęki sięgają na połowę wysokości klocka
for i in range(1): # Jedna kolumna wnęk między studsami w szerokości
for j in range(3): # Trzy kolumny wnęk w długości
# Dodanie cylindrycznej wnęki pod spodem
bpy.ops.mesh.primitive_cylinder_add(radius=recess_radius, depth=recess_depth, enter_editmode=False, align='WORLD')
recess = bpy.context.object
recess.location = (i * 3.2 - width / 2 + 1.6, j * 3.2 - length / 2 + 3.2, -height / 2 - recess_depth / 2)
recess.rotation_euler = (0, 0, 0)
# Dodanie modyfikatora boolean do odjęcia wnęki od klocka
bpy.context.view_layer.objects.active = brick
bpy.ops.object.modifier_add(type='BOOLEAN')
bpy.context.object.modifiers["Boolean"].operation = 'DIFFERENCE'
bpy.context.object.modifiers["Boolean"].object = recess
bpy.ops.object.modifier_apply(modifier="Boolean")
bpy.data.objects.remove(recess) # Usunięcie obiektu po zastosowaniu modyfikatora
return brick
# Usuwanie domyślnej kostki w scenie
if "Cube" in bpy.data.objects:
bpy.data.objects['Cube'].select_set(True)
bpy.ops.object.delete()
# Tworzenie klocka LEGO
create_lego_brick()
Editor is loading...
Leave a Comment