import rhinoscriptsyntax as rs import random, time, sys sys.path.append("P:/WWW/ortii/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=0, rad=3, styl=3) dm.printDisplay(state=1) # nomen est omen / printDisplay(state=1, scale=1000, thickness=1, color="Display") rs.EnableRedraw(0) # MAC >> problem ! dm.eA dm.newEmptyLayer("myPROJ", [100, 100, 100]) dm.newEmptyLayer("leitcrv", [0, 0, 0]) rs.CurrentLayer("myPROJ") px = (800, 300, 2100) p1 = rs.VectorAdd(px, [0, 1000, 0]) p2 = rs.VectorAdd(p1, [1000, 0, 50]) p3 = rs.VectorAdd(p2, [0, -1000, 50]) p4 = rs.VectorAdd(p3, [0, 0, 100]) p5 = rs.VectorAdd(p4, [-50, 100, 100]) p6 = rs.VectorAdd(p5, [-500, 0, 50]) p7 = rs.VectorAdd(p6, [0, 25, 0]) p8 = rs.VectorAdd(p7, [-75, 0, 100]) p9 = rs.VectorAdd(p8, [0, 400, 0]) p10 = rs.VectorAdd(p9, [-200, 50, -200]) p11 = rs.VectorAdd(p10, [-300, 75, -25]) p12 = rs.VectorAdd(p11, [-200, 0, -25]) p13 = rs.VectorAdd(p12, [-200, 0, -25]) p14 = rs.VectorAdd(p13, [-150, -500, 150]) coords = (px, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14) rs.CurrentLayer("leitcrv") crv = rs.AddCurve(coords, 23) rs.ObjectName(crv, "leitcurve") rs.HideObject(rs.ObjectsByName("leitcurve")[0]) rs.CurrentLayer("myPROJ") anzCircs = 650 divCircs = 75 coords = rs.DivideCurve(crv, anzCircs, create_points=0) allCircCoordsLists = [] for cor in coords: paraX = rs.CurveClosestPoint(crv, cor) planeX = rs.CurvePerpFrame(crv, paraX) circ = rs.AddCircle(planeX, 50) circCoords = rs.DivideCurve(circ, divCircs, 0) rs.DeleteObject(circ) allCircCoordsLists.append(circCoords) verbindungen = [] for i in range(divCircs): dm.esc() coords = [] for j in range(anzCircs): shift = (i + j) % divCircs cor = allCircCoordsLists[j][shift] coords.append(cor) crv = rs.AddCurve(coords, 1) rs.ObjectName(crv, "schlange") rs.DeleteObjects(rs.ObjectsByName("schlange")[5:]) coords_opposite = [] for j in range(anzCircs): opposite_shift = (i + divCircs // 2 + j) % divCircs # Calculate shift for the opposite curve cor = allCircCoordsLists[j][opposite_shift] coords_opposite.append(cor) crv_opposite = rs.AddCurve(coords_opposite, 1) rs.ObjectName(crv_opposite, "schlange_opposite") rs.DeleteObjects(rs.ObjectsByName("schlange_opposite")[5:]) if len(verbindungen) > 0: rs.DeleteObjects(verbindungen) for j in range(anzCircs): p1 = coords[j] p2 = coords_opposite[j] verbindungen.append(rs.AddLine(p1, p2)) if i % 1 == 0: rs.Redraw() dm.zA(proz=0.95) rs.EnableRedraw(1) # For the MACs rs.CurrentLayer("Default")