Categories
Cursos

Curso Processing CECLEC 2008/2009

Hola.

En enero de 2009 empiezan las clases de Processing dentro del curso CECLEC 2008/2009. Según creo el primer día es el martes 27, y el bloque lectivo acabará antes de semana santa. Con este motivo comienzo a escribir en este blog los asuntos relacionados con el tema, y pretendo utilizarlo como vía de comunicación colocando aquí los contenidos asociados a la materia y vínculos a otros sitios donde obtener información y ampliar conocimientos.

El programa del curso se basa en el libro de Reas & Fry (creadores del proyecto Processing) llamado “Processing, a programming handbook for visual designers and artist”. Este libro y otros sobre el tema están en la biblioteca de la universidad. Los interesados y/o inscritos ya debéis tener el programa del curso, y si no es así podéis echarle un vistazo aquí.

Para una información exhaustiva sobre Processing lo mejor es visitar la página web oficial (en inglés) http://www.processing.org

A finales de noviembre publicaron la primera versión “estable” de Processing (hasta el momento todo eran versiones “beta”). El día 24 salió la 1.0 y el día 29 salió la revisión 1.0.1. Se pueden descargar en la página web indicada anteriormente.

El software no se instala, sino que sencillamente se copia en una carpeta del disco duro (después de descomprimir el archivo zip de la descarga) y luego basta crear en el escritorio un acceso directo al fichero ejecutable processing.exe. Trae bastantes ejemplos para curiosear coger ideas. Echadles un vistazo!

Seguiremos informado.

VITO

Categories
Cursos

SunSurfaceSplit

 

Os subimos el script para utilizar la inclinación del sol como parámetro que explicamos en la última clase

 

 

‘Script written by Miguel Mesa

‘Script copyrighted by {LAC}

‘Script version martes, 26 de agosto de 2008 3:18:07

 

Call SunSurfaceSplit()

Sub SunSurfaceSplit()

Dim strSurfaceID : strSurfaceID = Rhino.GetObject(“Selecciona una Superficie”, 8, True, True)

Dim strDirSolID: strDirSolID = Rhino.GetObject(“Selecciona Dirección del Sol”, 4, True, True)

If IsNull (strSurfaceID) Then Exit Sub

If IsNull (strDirSolID) Then Exit Sub

Dim intCount1 : intCount1 = Rhino.GetInteger(“¿Número de Frames en u?”, 10, 2, 2000)

If IsNull(inCount) Then Exit Sub

Dim intCount2 : intCount2 = Rhino.GetInteger(“¿Número de Frames en v?”, 10, 2, 2000)

Dim uDomain : uDomain = Rhino.SurfaceDomain(strSurfaceID, 0)

Dim vDomain : vDomain = Rhino.SurfaceDomain(strSurfaceID, 1)

Dim uStep : uStep = (uDomain(1) – uDomain(0))/intCount1

Dim vStep : vStep = (vDomain(1) – vDomain(0))/intCount2

Dim u, v

Dim pt

Dim srfFrame

Call Rhino.EnableRedraw(False)

For u = uDomain(0) To uDomain(1) Step uStep

For v = vDomain(0) To vDomain(1) Step vStep

pt = Rhino.EvaluateSurface(strSurfaceID, Array(u, v))

If Rhino.Distance(pt, Rhino.BrepClosestPoint(strSurfaceID, pt)(0)) < 0.1 Then

srfFrame = Rhino.SurfaceFrame(strSurfaceID, Array(u, v))

Dim VectorPerp : VectorPerp = Rhino.SurfaceNormal(strSurfaceID, Array(u, v))

VectorPerp = Rhino.VectorScale(VectorPerp, 10)

Dim ExtrudePath : ExtrudePath = Rhino.AddLine(pt,Rhino.VectorAdd(pt,VectorPerp))

Dim A : A = Rhino.CurveStartPoint(strDirSolID)

Dim B : B = Rhino.CurveEndPoint(strDirSolID)

Dim C : C = Pt

Dim D : D = Rhino.CurveEndPoint(ExtrudePath)

‘Dim VSol : VSol = Rhino.VectorCreate(A, B)

Dim dblAngulo : dblAngulo = Rhino.Angle2(array(A,B), array(C,D))

 

 

Dim Circle : Circle = Rhino.AddCircle(srfFrame,0.01*dblAngulo(0))

Dim Cilindro : Cilindro = Rhino.ExtrudeCurve(Circle,ExtrudePath)

Dim CilindroMoved : CilindroMoved = Rhino.MoveObject(Cilindro, pt, Rhino.VectorSubtract(pt, Rhino.VectorDivide(VectorPerp, 2)))

 

Dim SplitBrep : SplitBrep = Rhino.SplitBrep(strSurfaceID, CilindroMoved, True)

If Not IsNull (SplitBrep(0)) Then

strSurfaceID = SplitBrep(0)

Call Rhino.DeleteObject(SplitBrep(1))

End If

Call Rhino.DeleteObject(CilindroMoved)

Call Rhino.DeleteObject(Circle)

Call Rhino.DeleteObject(ExtrudePath)

End If

Next

Next

Call Rhino.EnableRedraw(True)

End Sub

Categories
Cursos Foro

Voronoi en Grasshopper

[kml_flashembed movie="http://www.youtube.com/v/iEynRywJIb4" width="425" height="350" wmode="transparent" /]

A continuación os dejamos una definición en Grasshopper que permite realizar Voronoi con los que podemos interactuar viendo los cambios producidos al cambiar los puntos en tiempo real.

Esta definición es obra de Dimitrie Stefanescu, estudiante de arquitectura en la universidad Ion Mincu de Bucarest.

Podeis ver más trabajos trabajos suyos en su weblog, UN DIDI.

Para descargar la definición, haced click aquí. Si no os funciona, tendreis que actualizar vuestra versión del Grasshopper. Podeis encontrar el enlace a la última versión en la barra lateral.

Categories
Cursos Foro

CNC – Discretización de superficie (v.2)

Haciendo click aquí podeis descargar una nueva versión, más simple, del script para discretizar superficies en una serie de vigas, que colgamos la semana pasada. Esta versión hace las vigas en las direcciones X e Y, por lo que teneis que orientar la superficie de acuerdo a estas condiciones para obtener el resultado más adecuado a lo que busquéis.

Categories
Cursos

Workshops Processing/PureData/Arduino. MUA

Estos días se están celebrando en el MUA workshops de Processing, Pure Data y Arduino. Aquí tenéis el LINK a la web creada para los talleres con tutoriales, ejemplos y enlaces relacionados.

Categories
Cursos

Suavizar políneas

Este es el Script para suavizar polilíneas:

Option Explicit
‘Script para suavizar polilíneas y hacer un offset de las mismas
Call SuavizarPolilineas()
Sub SuavizarPolilineas()
Dim arrCrvs,strCrv, arrPoints,arrPoint
Dim K,i,arrNPt,hh,kk, Offset, Degree
arrCrvs = Rhino.GetObjects(“Select curves”, 4)
Offset = Rhino.GetReal(“Offset?”)
Degree = Rhino.GetReal(“Degree?”,3,1,100)
If IsNull(arrCrvs) Then Exit Sub
ReDim arrCC(UBound(arrCrvs))
hh=0
For Each strCrv In arrCrvs
If Rhino.IsPolyline(strCrv) Then
arrPoints = Rhino.PolylineVertices(strCrv)
If IsArray(arrPoints) Then
k=UBound(arrPoints)
kk=(k+1)*2-2
ReDim arrNPt(kk)
Dim nn : nn=0
For i=1 To kk Step 2
arrNPt(i) = Array((arrPoints(nn)(0)+arrPoints(nn+1)(0))/2, (arrPoints(nn)(1)+arrPoints(nn+1)(1))/2, (arrPoints(nn)(2)+arrPoints(nn+1)(2))/2 )
nn=nn+1
Next
nn=0
For i=0 To kk Step 2
arrNPt(i) = arrPoints(nn)
nn=nn+1
Next
arrCC(hh) = Rhino.AddCurve (arrNPt ,Degree)
Dim arrCentro : arrCentro = Rhino.CurveAreaCentroid(arrCC(hh))
Call Rhino.OffsetCurve(arrCC(hh), arrCentro(0), Offset)
hh=hh+1
End If
End If
Next

Rhino.SelectObjects arrCC

Rhino.DeleteObjects arrCC

Rhino.DeleteObjects arrCrvs

End Sub

Categories
Cursos Foro

CNC – Discretización de superficie

A continuación os dejo lo que sería la traslación del script que vimos hace unas semanas en clase (el fabRibs), al grashopper. Lo que hace este script es discretizar una superficie dada, en una serie de costillas cuyo número, altura y espesor podemos definir, viendo las diferentes soluciones al instante. Ésta solución, ofrece dos geometrías como resultado, por un lado, la geometría real 3d, para poder usarla en documentación, renders, etc…, y por otro lado, la geometría en superficies para, usando el script unrollSrf, obtener en el plano todas las costillas para pasarlas a la máquina CNC.

Está recién “cocinado” , con lo que es posible que pueda dar algunos errores. Podeis usar los comentarios para indicarlos, o para cualquier otra estimación que querrais hacer al respecto, ya sea sobre el uso del archivo dentro del grasshopper (aunque creo que está todo bien indicado y no deberíais de tener problemas para usarlo sin liaros), sobre soluciones alternativas a la propuesta, o mejoras que pudiéseis implantar a la misma.

Os lo podeis bajar haciendo click aquí

Categories
Cursos

Descargas para la clase del 2008.11.17

Para la clase de hoy es imprescindible que os bajéis y os instaléis estos dos plugins.

Grasshopper (http://grasshopper.rhino3d.com/)

y Point Set Reconstruction (http://en.wiki.mcneel.com/default.aspx/McNeel/PointsetReconstruction.html)

Además, os recomendamos una página interesante con bastantes ejemplos

http://rhinoscriptingresources.blogspot.com/

Categories
Cursos Foro

Ejercicio 2008.11.11 – Unir los puntos

Una posible solución al ejercicio que se planteó al final de la clase del pasado día 11:

Option Explicit

Dim arrPuntos
Dim n
Call Main()

Sub Main()
arrPuntos=Rhino.GetPointCoordinates (“seleccionar los puntos”)
n=UBound(arrPuntos)+1
Rhino.Print(n & ” puntos seleccionados”)
If IsArray(arrPuntos) Then
Enlazar()
End If
End Sub

Function Enlazar()
Dim i,j
For i=0 To UBound(arrPuntos)
For j=0 To UBound(arrPuntos)
If i<>j Then
If Rhino.Distance(arrPuntos(i),arrPuntos(j))<100 Then
Rhino.addline arrPuntos(i),arrPuntos(j)

End If
End If
Next
Next
End Function

Categories
Cursos

CURSO CECLEC 2008-2009

Estrategias Digitales en Arquitectura: Processing, RhinoScript y Sistemas de Información Geográfica.

Curso Ceclec

Programa del curso.