Advertisement
Guest User

Blender Fehlerhafter Skript

a guest
Jun 15th, 2023
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.34 KB | Source Code | 0 0
  1. import bpy
  2. import math
  3. import csv
  4. import os
  5. import bmesh
  6.  
  7. # Radius des Viertelkreises
  8. radius = 0.25  #Anzahl der Segmente für den Umfang
  9. segments = 30
  10.  
  11. # Pfad zur CSV-Datei
  12. csv_file = os.path.join(os.path.dirname(bpy.data.filepath), "Einstellzahlen_ab_2013.csv")
  13.  
  14.  
  15. # Lese die CSV-Datei ein
  16. with open(csv_file, 'r') as file:
  17.     reader = csv.reader(file, delimiter=';')
  18.     data = list(reader)
  19.  
  20. # Anzahl der Spalten in der CSV-Datei
  21. num_columns = len(data[0]) -1
  22. print(num_columns)
  23. # Erstelle eine neue Kurve für jede Spalte
  24. for column_index in range(num_columns):
  25.     # Erstelle eine neue Kurve
  26.     curve_data = bpy.data.curves.new('Viertelkreis', 'CURVE')
  27.     curve_data.dimensions = '2D'
  28.  
  29.     # Erstelle einen neuen Spline
  30.     spline = curve_data.splines.new('POLY')
  31.  
  32.     # Setze die Punkte des Splines
  33.     spline.points.add(segments)  # Addiere 1, um den Startpunkt zu berücksichtigen
  34.  
  35.     for i in range(segments + 1):  # Addiere 1, um den Startpunkt zu berücksichtigen
  36.         angle = (math.pi / 2) / segments * i
  37.         x = radius * math.cos(angle)
  38.         y = radius * math.sin(angle)
  39.         z = 0
  40.         spline.points[i].co = (x, y, z, 1)
  41.  
  42.     # Verschiebe den Viertelkreis, um vom Ursprung aus zu starten
  43.     curve_obj = bpy.data.objects.new('Viertelkreis', curve_data)
  44.     curve_obj.location = (0, -num_columns * 0.25, 0)  # Verschiebe um das doppelte des Radius entlang der y-Achse
  45.  
  46.     # Erstelle ein neues Objekt und füge die Kurve hinzu
  47.     bpy.context.collection.objects.link(curve_obj)
  48.     radius = radius + 0.25
  49. durchmesservonallen = 0.25 * num_columns
  50.  
  51. import bpy
  52. bpy.ops.mesh.primitive_cube_add(enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(0.1, 0.25 / 2, 0.1))
  53.  
  54.  
  55. obj = bpy.data.objects["Cube"]
  56.  
  57. me = obj.data
  58. bpy.ops.object.editmode_toggle()
  59. bm = bmesh.from_edit_mesh(me)
  60.  
  61. bm.faces.ensure_lookup_table()
  62.  
  63. # notice in Bmesh polygons are called faces
  64. bm.faces[1].select = False  
  65. bm.faces[2].select = False  
  66. bm.faces[3].select = False  
  67. bm.faces[4].select = False  
  68. bm.faces[5].select = False  
  69. # Show the updates in the viewport
  70. bpy.context.area.type = 'VIEW_3D'
  71. bpy.ops.view3d.snap_cursor_to_selected()
  72. bpy.ops.object.editmode_toggle()
  73. bpy.ops.object.origin_set(type='ORIGIN_CURSOR', center='MEDIAN')
  74. bpy.ops.object.location_clear(clear_delta=False)
  75. bpy.ops.object.editmode_toggle()
  76. bpy.ops.object.modifier_add(type='ARRAY')
  77. bpy.context.object.modifiers["Array"].count = num_columns
  78. bpy.context.object.modifiers["Array"].relative_offset_displace[0] = 0
  79. bpy.context.object.modifiers["Array"].relative_offset_displace[1] = -1
  80. bpy.ops.object.editmode_toggle()
  81. bpy.ops.object.modifier_apply(modifier="Array")
  82. bpy.ops.object.editmode_toggle()
  83. bpy.ops.mesh.select_all(action='SELECT')
  84. bpy.ops.mesh.separate(type='LOOSE')
  85. for obj in bpy.data.objects:
  86.     if obj.type == 'MESH':
  87.         # Hier kannst du beliebige Operationen für jedes Mesh-Objekt durchführen
  88.         # Wechsle in den Edit-Modus des aktuellen Mesh-Objekts
  89.         bpy.context.view_layer.objects.active = obj
  90.         bpy.ops.object.editmode_toggle()
  91.         bpy.context.area.type = 'VIEW_3D'
  92.        
  93.         win      = bpy.context.window
  94.         scr      = win.screen
  95.         areas3d  = [area for area in scr.areas if area.type == 'VIEW_3D']
  96.         region   = [region for region in areas3d[0].regions if region.type == 'WINDOW']
  97.  
  98.         override = {'window':win,
  99.             'screen':scr,
  100.             'area'  :areas3d[0],
  101.             'region':region[0],
  102.             'scene' :bpy.context.scene,
  103.             }
  104.         # Führe die Loop Cut & Slide-Operation aus
  105.         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})
  106.  
  107.         # Beende den Edit-Modus
  108.         bpy.ops.object.editmode_toggle()
  109.         obj.select = False
  110.  
  111.        
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement