###hausuebung 4### ###Lorene Seufert# ###Gruber 3####### import rhinoscriptsyntax as rs import random, time, sys import math sys.path.append("P:/WWW/los2003/dm2/03_hausuebung") sys.path.append("P:/") import DM_lib as dm rs.UnitSystem(3) rs.ShowGrid(view=None, show=0) rs.ShowGridAxes(view=None, show=0) rs.ViewDisplayMode(view=None, mode="Arctic") rs.EnableRedraw(0) dm.PointRadius(displayModeX=0, rad=1, styl=1) rs.DeleteObjects(rs.AllObjects()) anz = random.choice( range(2**4, 2**8, 4) ) coordsCir = dm.allCoords[0] coordsCub = dm.allCoords[1] randomVec = [random.uniform(-30,30) for i in range(3)] coordsCub = [rs.VectorRotate(cor, randomVec[0], randomVec) for cor in coordsCub] coordsCir = [rs.VectorRotate(cor, randomVec[0], randomVec) for cor in coordsCir] siz = rs.Distance( coordsCub[0], coordsCub[1] ) vecX = rs.VectorSubtract( coordsCub[1], coordsCub[0] ) vecY = rs.VectorSubtract( coordsCub[-1], coordsCub[0] ) vecZ = dm.normVec3pnts(coordsCub[0], coordsCub[1], coordsCub[-1]) vecZ = rs.VectorScale( vecZ, siz ) ptA = coordsCub[0] ptB = rs.VectorAdd( ptA, rs.VectorScale( vecX, anz/4) ) ptC = rs.VectorAdd( ptB, rs.VectorScale( vecY, anz/4) ) ptD = rs.VectorAdd( ptC, rs.VectorScale( vecX, -anz/4) ) ptE = rs.VectorAdd( ptA, rs.VectorScale( vecZ, anz/4) ) ptF = rs.VectorAdd( ptB, rs.VectorScale( vecZ, anz/4) ) ptG = rs.VectorAdd( ptC, rs.VectorScale( vecZ, anz/4) ) ptH = rs.VectorAdd( ptD, rs.VectorScale( vecZ, anz/4) ) baseCrv = rs.AddCurve( [ptA, ptB, ptC, ptD, ptA], 1 ) topCrv = rs.AddCurve( [ptE, ptF, ptG, ptH, ptE], 1 ) if 0: for i,car in enumerate(["A","B","C","D","E","F","G","H"]): rs.AddTextDot( car, [ptA, ptB, ptC, ptD,ptE, ptF, ptG, ptH][i] ) rs.ZoomExtents() dirX = rs.CurveArrows (rs.AddLine(ptA, ptB), 2) dirY = rs.CurveArrows (rs.AddLine(ptA, ptD), 2) dirZ = rs.CurveArrows (rs.AddLine(ptA, ptE), 2) rs.ObjectColor(rs.AllObjects()[2], [200,20,20] ) rs.ObjectColor(rs.AllObjects()[1], [20,200,20] ) rs.ObjectColor(rs.AllObjects()[0], [20,20,200] ) k = rs.AddLine(ptB, ptF) l = rs.AddLine(ptD, ptH) m = rs.AddLine(ptC, ptG) n = rs.AddLine(ptA, ptE) centerpnt = dm.pntInbetween(ptA, ptG) # wuerfel mittelpnt #rs.AddPoint(centerpnt) #rs.AddLine(ptA, centerpnt) #rs.AddLine(ptB, centerpnt) #rs.AddLine(ptC, centerpnt) #rs.AddLine(ptD, centerpnt) #rs.AddLine(ptE, centerpnt) #rs.AddLine(ptF, centerpnt) #rs.AddLine(ptG, centerpnt) #rs.AddLine(ptH, centerpnt) line = [k,l,m,n] A1 = dm.pntInbetween(ptA, centerpnt) #rs.AddPoint(A1) a = dm.pntInbetween(ptA, A1) #rs.AddPoint(a) B1 = dm.pntInbetween(ptB, centerpnt) b = dm.pntInbetween(ptB, B1) #rs.AddPoint(b) C1 = dm.pntInbetween(ptC, centerpnt) c = dm.pntInbetween(ptC, C1) #rs.AddPoint(c) D1 = dm.pntInbetween(ptD, centerpnt) d = dm.pntInbetween(ptD, D1) #rs.AddPoint(d) E1 = dm.pntInbetween(ptE, centerpnt) e = dm.pntInbetween(ptE, E1) #rs.AddPoint(e) F1 = dm.pntInbetween(ptF, centerpnt) f = dm.pntInbetween(ptF, F1) #rs.AddPoint(f) G1 = dm.pntInbetween(ptG, centerpnt) g = dm.pntInbetween(ptG, G1) #rs.AddPoint(g) H1 = dm.pntInbetween(ptH, centerpnt) h = dm.pntInbetween(ptH, H1) #rs.AddPoint(h) cube1 = rs.AddLine(a,b) cube2 = rs.AddLine(b,c) cube3 = rs.AddLine(c,d) cube4 = rs.AddLine(d,a) cube5 = rs.AddLine(e,f) cube6 = rs.AddLine(f,g) cube7 = rs.AddLine(g,h) cube8 = rs.AddLine(h,e) cube9 = rs.AddLine(a,e) cube10 = rs.AddLine(d,h) cube11 = rs.AddLine(c,g) cube12 = rs.AddLine(f,b) cube13 = rs.AddLine(e,ptE) cube14 = rs.AddLine(f,ptF) cube15 = rs.AddLine(g,ptG) cube16 = rs.AddLine(h,ptH) cube17 = rs.AddLine(a,ptA) cube18 = rs.AddLine(d,ptD) cube19 = rs.AddLine(c,ptC) cube20 = rs.AddLine(b,ptB) lines = [cube1, cube2,cube3,cube4,cube5,cube6,cube7,cube8,cube9,cube10,cube11,cube12,cube13,cube14,cube15,cube16,cube17,cube18,cube19,cube20] ################################################################# rs.ObjectColor(lines,[2,106,82]) rs.ObjectColor(baseCrv,[2,106,82]) rs.ObjectColor(topCrv,[2,106,82]) rs.ObjectColor(line,[2,106,82]) dm.eA() baseCoords = [ptA, ptB, ptC, ptD, ptA, ptB, ptC] topCoords = [ptE, ptF, ptG, ptH, ptE, ptF, ptG] rs.AddCurve( baseCoords[0:5], 1 ) rs.AddCurve( topCoords[0:5], 1 ) if 0: pairs = [] for i in range(4): pairs.append( [ baseCoords[i], topCoords[i+2] ]) baseCoords = [] topCoords = [] rand_Unten = random.uniform(0.05, 0.3) rand_Oben = random.uniform(0.05, 0.3) for pair in pairs: p0 = dm.pntInbetween( pair[0], pair[1], random.uniform(0.05, 0.3) ) p1 = dm.pntInbetween( pair[1], pair[0], random.uniform(0.05, 0.3) ) #p0 = dm.pntInbetween( pair[0], pair[1], rand_Unten ) #p1 = dm.pntInbetween( pair[1], pair[0], rand_Oben ) #rs.AddLine( p0, p1 ) baseCoords.append( p0 ) topCoords.append( p1 ) baseCoords.append(baseCoords[0]) baseCoords.append(baseCoords[1]) baseCoords.append(baseCoords[2]) topCoords.extend( topCoords[0:3] ) #rs.AddCurve( baseCoords[0:5], 1 ) #rs.AddCurve( topCoords[0:5], 1 ) allCoords = [ [baseCoords, topCoords] ] for j in range(3): pairs = [] for i in range(4): pairs.append( [ allCoords[-1][0][i], allCoords[-1][1][i+2] ]) baseCoords = [] topCoords = [] rand_Unten = random.uniform(0.05, 0.3) rand_Oben = random.uniform(0.05, 0.3) for pair in pairs: p0 = dm.pntInbetween( pair[0], pair[1], random.uniform(0.05, 0.3) ) p1 = dm.pntInbetween( pair[1], pair[0], random.uniform(0.05, 0.3) ) #p0 = dm.pntInbetween( pair[0], pair[1], rand_Unten ) #p1 = dm.pntInbetween( pair[1], pair[0], rand_Oben ) #rs.AddLine( p0, p1 ) baseCoords.append( p0 ) topCoords.append( p1 ) baseCoords.extend( baseCoords[0:3] ) topCoords = [ topCoords[2], topCoords[3], topCoords[0], topCoords[1], topCoords[2], topCoords[3] ] allCoords.append( [baseCoords, topCoords] ) dm.eA() print len(allCoords) for listPair in allCoords: baseX = listPair[0] topX = listPair[1] rs.AddCurve( baseX, 1 ) rs.AddCurve( topX, 1 ) ### 1.rund base_0 = allCoords[0][0] top_0 = allCoords[0][1] base_1 = allCoords[1][0] top_1 = allCoords[1][1] ### 2.runde base_2 = allCoords[2][0] top_2 = allCoords[2][1] base_3 = allCoords[3][0] top_3 = allCoords[3][1] #dm.textDots(base_0[0:4]) #dm.textDots(top_0[0:4]) coords = [] anz = 14 for i in range(4): lin = rs.AddLine( base_0[i], base_1[i] ) coords.append( rs.DivideCurve( lin, anz, 0) ) ab = rs.AddLine( top_0[i], top_1[i] ) # coords.append( rs.DivideCurve( ab, anz, 0)) bc = rs.AddLine(base_2[i], base_3[i]) # coords.append( rs.DivideCurve( bc, anz, 0) ) cd = rs.AddLine(top_2[i], top_3[i]) # coords.append( rs.DivideCurve( cd, anz, 0) ) coords.append(coords[0] ) for i in range(4): coords_0 = coords[i] coords_1 = coords[i+1] random.shuffle( coords_0 ) random.shuffle( coords_1 ) for j in range(anz): rs.AddLine( coords_0[j], coords_1[j] ) ### #names = [ "lori"] #print names[-1]