Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import bpy
- import math
- import csv
- import os
- import bmesh
- # Radius des Viertelkreises
- radius = 0.25 #Anzahl der Segmente für den Umfang
- segments = 30
- # Pfad zur CSV-Datei
- csv_file = os.path.join(os.path.dirname(bpy.data.filepath), "Einstellzahlen_ab_2013.csv")
- # Lese die CSV-Datei ein
- with open(csv_file, 'r') as file:
- reader = csv.reader(file, delimiter=';')
- data = list(reader)
- # Anzahl der Spalten in der CSV-Datei
- num_columns = len(data[0]) -1
- print(num_columns)
- # Erstelle eine neue Kurve für jede Spalte
- for column_index in range(num_columns):
- # Erstelle eine neue Kurve
- curve_data = bpy.data.curves.new('Viertelkreis', 'CURVE')
- curve_data.dimensions = '2D'
- # Erstelle einen neuen Spline
- spline = curve_data.splines.new('POLY')
- # Setze die Punkte des Splines
- spline.points.add(segments) # Addiere 1, um den Startpunkt zu berücksichtigen
- for i in range(segments + 1): # Addiere 1, um den Startpunkt zu berücksichtigen
- angle = (math.pi / 2) / segments * i
- x = radius * math.cos(angle)
- y = radius * math.sin(angle)
- z = 0
- spline.points[i].co = (x, y, z, 1)
- # Verschiebe den Viertelkreis, um vom Ursprung aus zu starten
- curve_obj = bpy.data.objects.new('Viertelkreis', curve_data)
- curve_obj.location = (0, -num_columns * 0.25, 0) # Verschiebe um das doppelte des Radius entlang der y-Achse
- # Erstelle ein neues Objekt und füge die Kurve hinzu
- bpy.context.collection.objects.link(curve_obj)
- radius = radius + 0.25
- durchmesservonallen = 0.25 * num_columns
- import bpy
- bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(0.1, 0.25 / 2, 0.1))
- obj = bpy.data.objects["Cube"]
- me = obj.data
- bpy.ops.object.editmode_toggle()
- bm = bmesh.from_edit_mesh(me)
- bm.faces.ensure_lookup_table()
- # notice in Bmesh polygons are called faces
- bm.faces[1].select = False
- bm.faces[2].select = False
- bm.faces[3].select = False
- bm.faces[4].select = False
- bm.faces[5].select = False
- # Show the updates in the viewport
- bpy.context.area.type = 'VIEW_3D'
- bpy.ops.view3d.snap_cursor_to_selected()
- bpy.ops.object.editmode_toggle()
- bpy.ops.object.origin_set(type='ORIGIN_CURSOR', center='MEDIAN')
- bpy.ops.object.location_clear(clear_delta=False)
- bpy.ops.object.editmode_toggle()
- bpy.ops.object.modifier_add(type='ARRAY')
- bpy.context.object.modifiers["Array"].count = num_columns
- bpy.context.object.modifiers["Array"].relative_offset_displace[0] = 0
- bpy.context.object.modifiers["Array"].relative_offset_displace[1] = -1
- bpy.ops.object.editmode_toggle()
- bpy.ops.object.modifier_apply(modifier="Array")
- bpy.ops.object.editmode_toggle()
- bpy.ops.mesh.select_all(action='SELECT')
- bpy.ops.mesh.separate(type='LOOSE')
- for obj in bpy.data.objects:
- if obj.type == 'MESH':
- # Hier kannst du beliebige Operationen für jedes Mesh-Objekt durchführen
- # Wechsle in den Edit-Modus des aktuellen Mesh-Objekts
- bpy.context.view_layer.objects.active = obj
- bpy.ops.object.editmode_toggle()
- bpy.context.area.type = 'VIEW_3D'
- win = bpy.context.window
- scr = win.screen
- areas3d = [area for area in scr.areas if area.type == 'VIEW_3D']
- region = [region for region in areas3d[0].regions if region.type == 'WINDOW']
- override = {'window':win,
- 'screen':scr,
- 'area' :areas3d[0],
- 'region':region[0],
- 'scene' :bpy.context.scene,
- }
- # Führe die Loop Cut & Slide-Operation aus
- bpy.ops.mesh.loopcut_slide(override,MESH_OT_loopcut={"number_cuts": 15, "smoothness": 0, "falloff": 'INVERSE_SQUARE', "object_index": 0, "edge_index": 11, "mesh_select_mode_init": (False, False, True)}, TRANSFORM_OT_edge_slide={"value": 0, "single_side": False, "use_even": False, "flipped": False, "use_clamp": True, "mirror": True, "snap": False, "snap_elements": {'INCREMENT'}, "use_snap_project": False, "snap_target": 'CLOSEST', "use_snap_self": True, "use_snap_edit": True, "use_snap_nonedit": True, "use_snap_selectable": False, "snap_point": (0, 0, 0), "correct_uv": True, "release_confirm": False, "use_accurate": False})
- # Beende den Edit-Modus
- bpy.ops.object.editmode_toggle()
- obj.select = False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement