Files
Snippets/Blender.md
T

2.5 KiB

Blender

Vom Cursor eine Linie in negativer y-Richtung mit Länge 11.2 mm

import bpy
from mathutils import Vector

# Definiere die Länge der Linie
line_length = -1.12  # 11.2 mm
 
# Hole die 3D-Cursor-Position
cursor_position = bpy.context.scene.cursor.location

# Berechne die Endposition der Linie
end_position = cursor_position + Vector((line_length, 0, 0))

# Erstelle eine neue Linie
vertices = [cursor_position, end_position]
edges = [(0, 1)]
mesh = bpy.data.meshes.new(name="LineMesh")
line_obj = bpy.data.objects.new(name="LineObject", object_data=mesh)
bpy.context.collection.objects.link(line_obj)
mesh.from_pydata(vertices, edges, [])
mesh.update()

Ein bestehendes Objekt mittel bmesh verändern

https://www.youtube.com/watch?v=TFQMNcTj5Jw

import bpy
import bmesh


# Holen einer Referenz auf das aktuelle Objekt
mesh_obj = bpy.context.active_object

# Erzeugen eines neuen bmesh-Objektes
bm = bmesh.new()

# Initialisieren des bmesh-Objektes mit den Daten des vorhandenen Objektes
bm.from_mesh(mesh_obj.data)

bmesh.ops.bevel(bm, geom=bm.verts, offset=0.5)


# Schreiben der bmesh-Daten in die mesh-Daten
bm.to_mesh(mesh_obj.data)

# Optional: updaten der mesh-Daten
mesh_obj.data.update()

# freigeben des Speichers der von bmesh genutzt wurde
bm.free()

import bpy
import bmesh


# Holen einer Referenz auf das aktuelle Objekt
mesh_obj = bpy.context.active_object

# Erzeugen eines neuen bmesh-Objektes
bm = bmesh.new()

# Initialisieren des bmesh-Objektes mit den Daten des vorhandenen Objektes
bm.from_mesh(mesh_obj.data)

bmesh.ops.bevel(
                bm, 
                geom=bm.edges,
                offset=0.2,
                segments=4,
                affect="EDGES",
                profile=0.5,
)


# Schreiben der bmesh-Daten in die mesh-Daten
bm.to_mesh(mesh_obj.data)

# Optional: updaten der mesh-Daten
mesh_obj.data.update()

# freigeben des Speichers der von bmesh genutzt wurde
bm.free()

Blender2

Erzeugen eines Objektes von stretch

import bpy

obj_name = "my_shape"


# Erzeugen der mesh Daten
mesh_data = bpy.data.meshes.new(f"{obj_name}_data")

# Erzeugen des Mesh-Objektes unter Nutzng der Mesh-Daten 
mesh_obj = bpy.data.objects.new(obj_name, mesh_data)

# Hinzufügen des Mesh-Obektes zur Szene
bpy.context.scene.collection.objects.link(mesh_obj)

https://www.youtube.com/watch?v=N3U2noAHgBo&t=88s