import rhinoscriptsyntax as rs import sys ### import random import math #sys.path.append("P:/") ### add path where "DM_lib.py" can be found !!! sys.path.append("C:/DM2/") ### add path where "DM_lib.py" can be found !!! #sys.path.append("P:/dm2/") ### add path where "DM_lib.py" can be found !!! import DM_lib as dm ### reload(dm) ############################## if 1: rs.EnableRedraw(0) #delete absolutely all dm.eA() #print "pntRandVec",dm.pntRandVec(-1,1) anz = 500 deltaAngle = 360/anz rad = random.uniform(5.0,10) vec = [rad, 0,0] vec1 = [20, 0,0] vec2 = [0,0,20] vec3 = [0,20,0] for i in range(anz): vecX = rs.VectorRotate(vec,deltaAngle*i,dm.pntRandVec(-1,1)[0]) rs.AddPoint(vecX) vecX1 = rs.VectorRotate(vec1, random.uniform(0,360), [0,0,10]) rs.ObjectColor(rs.AddPoint(vecX1),[0,0,0]) vecX2 = rs.VectorRotate(vec2, random.uniform(0,360), [0,10,0]) rs.ObjectColor(rs.AddPoint(vecX2),[0,0,0]) vecX3 = rs.VectorRotate(vec3, random.uniform(0,360), [10,0,0]) rs.ObjectColor(rs.AddPoint(vecX3),[0,0,0]) print deltaAngle*i def DistributeCirclesOnSphere(position): sphere_radius = 2.0#rs.GetReal("Radius of sphere", 10.0, 0.01) if not sphere_radius: return circle_radius = 0.1#rs.GetReal("Radius of packing circles", 0.05*sphere_radius, 0.001, 0.5*sphere_radius) if not circle_radius: return vertical_count = int( (math.pi*sphere_radius)/(2*circle_radius) ) rs.EnableRedraw(False) phi = -0.5*math.pi phi_step = math.pi/vertical_count while phi<0.5*math.pi: horizontal_count = int( (2*math.pi*math.cos(phi)*sphere_radius)/(2*circle_radius) ) if horizontal_count==0: horizontal_count=1 theta = 0 theta_step = 2*math.pi/horizontal_count while theta<2*math.pi-1e-8: eye_point = (sphere_radius*math.cos(theta)*math.cos(phi)+(position/2), sphere_radius*math.sin(theta)*math.cos(phi)+(position/2), sphere_radius*math.sin(phi)-(position/2)) rs.AddPoint(eye_point) eye_point = (sphere_radius*math.cos(theta)*math.cos(phi)-(position/2), sphere_radius*math.sin(theta)*math.cos(phi)+(position/2), sphere_radius*math.sin(phi)-(position/2)) theta += theta_step phi += phi_step rs.EnableRedraw(True) #dm.PointRadius(displayModeX=1, rad=2, styl=3, verbose=1) DistributeCirclesOnSphere(position=(-20)) DistributeCirclesOnSphere(position=(20)) def Kreis( rad = 20, mid = (0,0,0), circDiv = 20): circ = rs.AddCircle(mid, rad) rs.ObjectPrintWidth(circ, 0.5) rs.ObjectColor(circ, [139,115,85]) deltaAng = 360/circDiv circsegments=rs.DivideCurve(circ, circDiv, False) print circsegments for i in range(10): top_arc = rs.AddArc3Pt( circsegments[i],circsegments[19-i],spitze) #top_arc1 = rs.AddArc3Pt( circsegments[10-i],circsegments[20-i],spitze) rs.DeleteObject(circ) return circsegments rad = 30 circDiv = 20 num_kreise = 15 spitze = [0,0,30] for i in range(num_kreise): circ= Kreis( rad, mid = (0,0,i-20), circDiv = circDiv)