'declarar variables dim srf dim uDomain dim vDomain dim uParam dim vParam dim i dim j dim srf2 dim srf3 dim srf4 dim uDomain2 dim vDomain2 dim uParam2 dim vParam2 dim uSecciones dim vSecciones dim uSecciones2 dim vSecciones2 'Determino la cnatidad de secciones uSecciones=10 vSecciones=10 uSecciones2=10 vSecciones2=10 'declaro mi array para almacenar puntos redim colect2d(uSecciones,vSecciones) redim colect2d2(uSecciones2,vSecciones2) 'get a surface srf= Rhino.getObject("Seleccione surface", 8) srf2= Rhino.getObject("Seleccione surface2", 8) srf3= Rhino.getObject("Seleccione surface3", 8) srf4= Rhino.getObject("Seleccione surface4", 8) 'get the u and v domains uDomain = Rhino.SurfaceDomain(srf,0) vDomain = Rhino.SurfaceDomain(srf,1) uDomain2 = Rhino.SurfaceDomain(srf2,0) vDomain2 = Rhino.SurfaceDomain(srf2,1) 'loop through the surface for i= 0 to uSecciones for j = 0 to vSecciones 'calculate the uParam 'uparam = Umin + (Umin-Umin)/secciones uParam = uDomain(0) + i*(uDomain(1)-uDomain(0))/uSecciones vParam = vDomain(0) + j*(vDomain(1)-vDomain(0))/vSecciones 'get the point array from parameter point = Rhino.EvaluateSurface(srf, Array(uParam, vParam)) colect2d(i,j) = point 'add point to rhino 'Rhino.addPoint(point) next next for i= 0 to uSecciones2 for j = 0 to vSecciones2 'calculate the uParam 'uparam = Umin + (Umin-Umin)/secciones uParam2 = uDomain2(0) + i*(uDomain2(1)-uDomain2(0))/uSecciones2 vParam2 = vDomain2(0) + j*(vDomain2(1)-vDomain2(0))/vSecciones2 'get the point array from parameter point = Rhino.EvaluateSurface(srf2, Array(uParam2, vParam2)) colect2d2(i,j) = point 'add point to rhino 'Rhino.addPoint(point) next next 'declaramos variables para obtener esquinas dim esquina1 dim esquina2 dim esquina3 dim esquina4 dim toppoint dim lineapuntomedio dim puntomedio dim midpointUV dim midpointNORMAL redim puntosnuevos(uSecciones-2,vSecciones-2) redim colec2dbox(uSecciones, vSecciones) 'ciclos through colec2d for i = 0 to uSecciones-1 for j = 0 to vSecciones-1 'draw point in rhino 'Rhino.addpoint(colect2d(i,j)) 'Calculate corner points esquina1 = colect2d(i,j) esquina2 = colect2d(i+1,j) esquina3 = colect2d(i+1,j+1) esquina4 = colect2d(i,j+1) colec2dbox(i,j) = Array(esquina1, esquina2, esquina3, esquina4) next next redim midpoints(uSecciones2-1, vSecciones2-1) 'ciclos through colec2d for i = 0 to uSecciones2-1 for j = 0 to vSecciones2-1 'draw point in rhino 'Rhino.addpoint(colect2d(i,j)) 'Calculate corner points esquina1 = colect2d2(i,j) esquina2 = colect2d2(i+1,j) esquina3 = colect2d2(i+1,j+1) esquina4 = colect2d2(i,j+1) lineapuntomedio = lineacruzada(esquina1,esquina2,esquina3,esquina4) puntomedio = Rhino.CurveMidPoint(lineapuntomedio) Rhino.deleteobject(lineapuntomedio) 'call Rhino.AddPoint(puntomedio) midpointUV=Rhino.surfaceclosestpoint(srf2,puntomedio) midpointNORMAL=Rhino.SurfaceNormal(srf2,midpointUV) 'call Rhino.addPoint(midpointNORMAL(0)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(0)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(1)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(2)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(3)) midpoints(i,j) = midpointNORMAL(0) 'crea shapes para hacer espesores de pilares circuloprincipal = Rhino.AddCircle(midpointNORMAL(0), 0.5) circulosecundario1 = Rhino.AddCircle(colec2dbox(i,j)(0), 0.5) circulosecundario2 = Rhino.AddCircle(colec2dbox(i,j)(1), 0.5) circulosecundario3 = Rhino.AddCircle(colec2dbox(i,j)(2), 0.5) circulosecundario4 = Rhino.AddCircle(colec2dbox(i,j)(3), 0.5) 'le da espesores a los pilares Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario1) Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario2) Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario3) Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario4) 'agrega encuentros call Rhino.AddSphere(midpointNORMAL(0), 1) call Rhino.AddSphere(colec2dbox(i,j)(0), 1) call Rhino.AddSphere(colec2dbox(i,j)(1), 1) call Rhino.AddSphere(colec2dbox(i,j)(2), 1) call Rhino.AddSphere(colec2dbox(i,j)(3), 1) next next dim morepoints Rhino.print("arrrr") redim retpoints(uSecciones2-1, vSecciones2-1) morepoints = pointasrf(midpoints, srf3, uSecciones2-1, vSecciones2-1) Rhino.print("ay caramba") Rhino.print(Pt2Str(morepoints(0,0))) redim retpoints(uSecciones2-2, vSecciones2-2) call pointasrf(morepoints, srf4, uSecciones2-2, vSecciones2-2) Rhino.print("b") 'redim points(vSecciones2-1) 'redim curves(uSecciones2-1) 'for i = 0 to uSecciones2-1 'for j = 0 to vSecciones2-1 ' points(j) = midpoints(i,j) 'next 'curves(i) = Rhino.addInterpCurve(points) 'next function pointasrf(pts, surf, usec, vsec) for i = 0 to usec-1 for j = 0 to vsec-1 'draw point in rhino 'Rhino.addpoint(colect2d(i,j)) 'Calculate corner points esquina1 = pts(i,j) esquina2 = pts(i+1,j) esquina3 = pts(i+1,j+1) esquina4 = pts(i,j+1) colec2dbox(i,j) = Array(esquina1, esquina2, esquina3, esquina4) next next uDomain2 = Rhino.SurfaceDomain(surf,0) vDomain2 = Rhino.SurfaceDomain(surf,1) for i= 0 to uSec for j = 0 to vSec 'calculate the uParam 'uparam = Umin + (Umin-Umin)/secciones uParam2 = uDomain2(0) + i*(uDomain2(1)-uDomain2(0))/uSec vParam2 = vDomain2(0) + j*(vDomain2(1)-vDomain2(0))/vSec 'get the point array from parameter point = Rhino.EvaluateSurface(surf, Array(uParam2, vParam2)) colect2d2(i,j) = point 'add point to rhino 'Rhino.addPoint(point) next next 'mas variables dim circuloprincipal dim circulosecundario1 dim circulosecundario2 dim circulosecundario3 dim circulosecundario4 for i = 0 to uSec-1 for j = 0 to vSec-1 'draw point in rhino 'Rhino.addpoint(colect2d(i,j)) 'Calculate corner points esquina1 = colect2d2(i,j) esquina2 = colect2d2(i+1,j) esquina3 = colect2d2(i+1,j+1) esquina4 = colect2d2(i,j+1) lineapuntomedio = lineacruzada(esquina1,esquina2,esquina3,esquina4) puntomedio = Rhino.CurveMidPoint(lineapuntomedio) Rhino.deleteobject(lineapuntomedio) 'call Rhino.AddPoint(puntomedio) midpointUV=Rhino.surfaceclosestpoint(surf,puntomedio) midpointNORMAL=Rhino.SurfaceNormal(surf,midpointUV) 'call Rhino.addPoint(midpointNORMAL(0)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(0)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(1)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(2)) call Rhino.addLine(midpointNORMAL(0), colec2dbox(i,j)(3)) 'crea shapes para hacer espesores de pilares circuloprincipal = Rhino.AddCircle(midpointNORMAL(0), 0.5) circulosecundario1 = Rhino.AddCircle(colec2dbox(i,j)(0), 0.5) circulosecundario2 = Rhino.AddCircle(colec2dbox(i,j)(1), 0.5) circulosecundario3 = Rhino.AddCircle(colec2dbox(i,j)(2), 0.5) circulosecundario4 = Rhino.AddCircle(colec2dbox(i,j)(3), 0.5) 'le da espesores a los pilares Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario1) Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario2) Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario3) Rhino.AddLoftSrf Array(circuloprincipal,circulosecundario4) 'agrega encuentros call Rhino.AddSphere(midpointNORMAL(0), 1) call Rhino.AddSphere(colec2dbox(i,j)(0), 1) call Rhino.AddSphere(colec2dbox(i,j)(1), 1) call Rhino.AddSphere(colec2dbox(i,j)(2), 1) call Rhino.AddSphere(colec2dbox(i,j)(3), 1) retpoints(i,j) = Array(midpointNORMAL(0)(0), midpointNORMAL(0)(1), midpointNORMAL(0)(2)) next next 'nueva puntos pointasrf = retpoints end function function miFunction(pt1, pt2, pt3, pt4) 'cross truss Rhino.addline pt1,pt3 Rhino.addline pt2,pt4 end function function miFunction2(pt1, pt2, pt3, pt4) 'planos Rhino.AddSrfPt(Array(esquina1, esquina2, esquina3, esquina4)) end function function lineacruzada(pt1, pt2, pt3, pt4) 'cross single line lineacruzada = Rhino.addline(pt1,pt3) end function