######################################
###  DM2_w25 # AGruber@tugraz.at   ###
### hu_08 Mary Poppins Regenschirm ### 
######################################


##############################
import rhinoscriptsyntax as rs
import random, time, sys   ###
sys.path.append("P:/")     ###
sys.path.append("P:/WWW/dx6419/dm2/") ###                                            
import DM_lib as dm        ### 
############################## dm.reload_lib(dm)

rs.UnitSystem(4)  # Meter
rs.ShowGrid(None, False)
rs.ShowGridAxes(None, False)
rs.ViewDisplayMode(rs.CurrentView(), "wireframe")
rs.Command("cplane w t enter", False)  # World Top
dm.PointRadius(displayModeX=0, rad=3, styl=3)
dm.PointRadius(displayModeX=1, rad=4, styl=1)
dm.PointRadius(displayModeX=2, rad=2, styl=0)
dm.printDisplay(state=False)

rs.EnableRedraw(False)

import rhinoscriptsyntax as rs
import math

def create_umbrella_safe():
    radius = 0.5
    pole_height = 0.6
    circle_drop = 0.1
    num_ribs = 8
    rib_drop = 0.12

    #Stab
    rs.AddLine((0, 0, 0), (0, 0, pole_height))

    #Schirmkreis Punkte
    circle_z = pole_height - circle_drop
    circle_points = []
    for i in range(num_ribs):
        angle = 2*math.pi*i/num_ribs
        x = radius * math.cos(angle)
        y = radius * math.sin(angle)
        z = circle_z
        pt_id = rs.AddPoint(x, y, z)
        circle_points.append(pt_id)

    #Streben (gebogen)
    for pt_id in circle_points:
        pt_coords = rs.PointCoordinates(pt_id)
        mid = ((0 + pt_coords.X)/2, (0 + pt_coords.Y)/2, (pole_height + pt_coords.Z)/2 + rib_drop)
        rs.AddCurve([(0,0,pole_height), mid, (pt_coords.X, pt_coords.Y, pt_coords.Z)], degree=2)

    #Schirmkante verbinden
    edge_points = [rs.PointCoordinates(pid) for pid in circle_points]
    edge_coords = [(pt.X, pt.Y, pt.Z) for pt in edge_points]
    edge_coords.append(edge_coords[0]) 
    rs.AddPolyline(edge_coords)

    rs.Command("_Zoom _Extents", False)
    print("Regenschirm")

create_umbrella_safe()



########## EOS / EndOfScript

