################################### ### DM2_w24 # AGruber@tugraz.at ### ### ue_05 UN_headquaters NYC ### ################################### ############################## import rhinoscriptsyntax as rs import random, time, sys sys.path.append("P:/WWW/arhitekt0811/DM2") import DM_lib as dm # reload(dm) ############################## rs.UnitSystem(4) # km = 5, meters = 4, cm = 3 etc rs.ShowGrid(None, 0) # grid > 0 = off rs.ShowGridAxes(None, 1) # y/y/z axes display > 0/1 = off/on rs.ViewDisplayMode(rs.CurrentView(), "wireframe") rs.Command("cplane w t enter", 0) # cPlane World Top dm.PointRadius(displayModeX="all", rad=3, styl=3) dm.printDisplay(0) # nomen est omen rs.EnableRedraw(0) # MAC >> uncomment dm.newEmptyLayer("PROJ", [0, 0, 200]) dist = 60.0 anz = 10 for i in range(8): start = [1100 + dist * i, 1600, 0] ziel = rs.VectorAdd(start, [random.uniform(60, 120), random.uniform(-300, -300) - i * 10, 0]) lin = rs.AddCurve([start, ziel]) coords = rs.DivideCurve(lin, anz, 0) rs.DeleteObject(lin) if 1: coordsX = [] for j in range(0, anz - 1): print(j) coordsX.append(rs.VectorAdd(coords[j], [random.uniform(-40, 40), random.uniform(-40, 20), 0])) coordsX.append(ziel) crv = rs.AddCurve(coordsX[0:], 2) crv = rs.AddCurve(coordsX[0:], 3) crv = rs.AddCurve(coordsX[0:], 4) crv = rs.AddCurve(coordsX[0:], 5) crv = rs.AddCurve(coordsX[0:], 6) rs.ObjectName(crv, "slalom_{}".format(i)) poleRadius = 0.25 poleHeight = 3 poleSpacing = 2 for i in range(8): crv_name = "slalom_{}".format(i) crv = rs.ObjectsByName(crv_name)[0] coords = rs.CurveEditPoints(crv) for j in range(1, len(coords), 2): base = coords[j] top = rs.VectorAdd(base, [0, 0, poleHeight]) #print("Base:", base) basePlane = rs.PlaneFromNormal(base, [0, 0, 1]) rs.AddCylinder(basePlane, poleHeight, poleRadius) offsetV = [poleSpacing, 0, 0] secondPoint = rs.VectorAdd(base, offsetV) #print("Second point:", secondPoint) secondPlane = rs.PlaneFromNormal(secondPoint, [0, 0, 1]) rs.AddCylinder(secondPlane, poleHeight, poleRadius) surfaceOffset = poleHeight * 0.8 base1 = rs.VectorAdd(base, [0, 0, poleHeight * 0.3]) base2 = rs.VectorAdd(secondPoint, [0, 0, poleHeight * 0.3]) offsetBase = rs.VectorAdd(base, [0, 0, surfaceOffset]) offsetSecondPoint = rs.VectorAdd(secondPoint, [0, 0, surfaceOffset]) rs.AddSrfPt([offsetBase, base1, base2, offsetSecondPoint])