Untitled
unknown
plain_text
a month ago
3.0 kB
3
Indexable
Never
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()
Leave a Comment