############################## ### DM2_w24 hu_03_setUp ### ### _diag / 2024 10 17 ### ############################## import rhinoscriptsyntax as rs import random, time, sys ### sys.path.append("P:\WWW\mori21\DM2") ### add path where "DM_lib.py" can be found !!! import DM_lib as dm ### reload(dm) ############################## rs.UnitSystem(3) rs.ShowGrid(view=None, show=0) rs.ShowGridAxes(view=None, show=0) rs.ViewDisplayMode(view=None, mode="Wireframe") rs.EnableRedraw(0) dm.PointRadius(displayModeX=0, rad=3, styl=1) rs.DeleteObjects(rs.AllObjects()) #Morena Kocijan 4DM2 HUE #farben fuer die Kugel und Wuerfel colors = [(0, 128, 128), #tuerkis fuer die Kugel (192, 192, 192), #silver fuer den ersten Wuerfel (128, 0, 128), #lila fier den zweiten Wuerfel (128, 0, 0)] #dunkelrot fuer den dritten Wuerfel #erster Wuerfel if 1: cube_corner = [50, 100, 100] cube_size = 2000 points = 6000 cube1_points = [] for i in range(points): rand_x = random.uniform(cube_corner[0], cube_corner[0] + cube_size) rand_y = random.uniform(cube_corner[1], cube_corner[1] + cube_size) rand_z = random.uniform(cube_corner[2], cube_corner[2] + cube_size) pt = rs.AddPoint([rand_x, rand_y, rand_z]) cube1_points.append(pt) for pt in cube1_points: rs.ObjectColor(pt, colors[1]) #zweiter Wuerfel etwas kleiner if 1: cube_corner = [-100, 2500, 2000] cube_size = 1200 points = 7000 cube3_points = [] for i in range(points): rand_x = random.uniform(cube_corner[0], cube_corner[0] + cube_size) rand_y = random.uniform(cube_corner[1], cube_corner[1] + cube_size) rand_z = random.uniform(cube_corner[2], cube_corner[2] + cube_size) pt = rs.AddPoint([rand_x, rand_y, rand_z]) cube3_points.append(pt) for pt in cube3_points: rs.ObjectColor(pt, colors[2]) #dritter Wuerfel noch kleiner if 1: cube_corner = [-1000, 1200, 2000] cube_size = 900 points = 2000 cube4_points = [] for i in range(points): rand_x = random.uniform(cube_corner[0], cube_corner[0] + cube_size) rand_y = random.uniform(cube_corner[1], cube_corner[1] + cube_size) rand_z = random.uniform(cube_corner[2], cube_corner[2] + cube_size) pt = rs.AddPoint([rand_x, rand_y, rand_z]) cube4_points.append(pt) for pt in cube4_points: rs.ObjectColor(pt, colors[3]) #Kugel in der Mitte if 1: vec = [100, 10, 10] #rs.AddPoint( vec ) anz = 8000 rad = 12.0 center = [random.randint(0,10),1900,1900] deltaAngle = 360/anz sphere_points = [] for i in range(anz): angX = deltaAngle*i #print angX vecX = rs.VectorRotate( vec, angX , [random.uniform(-1,1),random.uniform(-1,1),random.uniform(-1,1)] ) vecX = rs.VectorScale( vecX, random.uniform( 5,rad) ) vecX = rs.VectorAdd( vecX, center) pt = rs.AddPoint(vecX) sphere_points.append(pt) for pt in sphere_points: rs.ObjectColor(pt, colors[0]) #Linien die durch die Kugel und Wuerfel durchdringt if 1: curves = 4000 all_points = rs.ObjectsByType(1) if len(all_points) < 2: print("Not enough points to connect.") else: for i in range(curves): pt1 = rs.coerce3dpoint(all_points[random.randint(0, len(all_points) - 1)]) pt2 = rs.coerce3dpoint(all_points[random.randint(0, len(all_points) - 1)]) if pt1 and pt2: rs.AddCurve([pt1, pt2]) #rs.ZoomExtents()