117 lines
2.5 KiB
Markdown
117 lines
2.5 KiB
Markdown
# Blender
|
|
|
|
## Vom Cursor eine Linie in negativer y-Richtung mit Länge 11.2 mm
|
|
|
|
```python
|
|
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
|
|
|
|
```python
|
|
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()
|
|
```
|
|
|
|

|
|
|
|
```python
|
|
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()
|
|
```
|
|
|
|

|
|
|
|
## 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 |