El diseño suele implicar establecer relaciones visuales, sistémicas o geométricas entre las partes de un diseño. Por lo general, estas relaciones se desarrollan mediante flujos de trabajo que nos llevan del concepto al resultado mediante el uso de reglas. Quizás sin saberlo, estamos trabajando de forma algorítmica, definiendo un conjunto de acciones paso a paso que siga una lógica básica de entrada, procesamiento y salida. La programación nos permite seguir trabajando de esta forma, pero formalizando nuestros algoritmos.
Aunque ofrece algunas oportunidades interesantes, el término algoritmo puede dar lugar a algunas ideas erróneas. Los algoritmos pueden generar elementos inesperados, salvajes o increíbles, pero no son mágicos. De hecho, en realidad, son componentes bastantes básicos. Usemos un ejemplo tangible como una grulla de papiroflexia. Comenzaremos con un trozo de papel cuadrado (entrada), seguiremos con una serie de pasos de plegado (acciones de procesamiento) y obtendremos una grulla (salida).
Por lo tanto, ¿dónde está el algoritmo? Es el conjunto abstracto de pasos, que podemos representar de estas dos maneras: textualmente o gráficamente.
Instrucciones textuales:
Comience con un trozo de papel cuadrado, con la parte de color hacia arriba. Dóblelo a la mitad y ábralo. Dóblelo a la mitad por el otro lado.
Gire el papel por el lado blanco. Doble el papel por la mitad, pliéguelo bien y ábralo; a continuación, vuelva a doblarlo en la otra dirección.
Con los pliegues creados, lleve las tres esquinas superiores del modelo a la esquina inferior. Aplane el modelo.
Doble las pestañas triangulares de la parte superior en el centro y despliéguelo.
Doble la parte superior del modelo hacia abajo, pliéguelo bien y despliéguelo.
Abra la pestaña superior del modelo, trayéndola hacia arriba y presionando los lados del modelo hacia dentro al mismo tiempo. Aplánelo y pliéguelo bien.
Gire el modelo y repita los pasos 4 a 6 en el otro lado.
Doble las pestañas superiores en el centro.
Repita esta operación en el otro lado.
Doble ambas "patas" del modelo hacia arriba, pliegue el modelo muy bien y, a continuación, despliéguelo.
Doble hacia dentro las "patas" a lo largo de los pliegues que acaba de crear.
Doble hacia dentro un lado para crear una cabeza y, a continuación, doble hacia abajo las alas.
Ya tiene una grulla.
Instrucciones gráficas:
El uso de cualquiera de estos conjuntos de instrucciones debería dar como resultado una grulla y, si se ha seguido el proceso, ya ha aplicado un algoritmo. La única diferencia es la forma en que leemos la formalización de ese conjunto de instrucciones y que nos lleva a la programación. La programación, un término abreviado de programación informática, es el acto de formalizar el procesamiento de una serie de acciones en un programa ejecutable. Si hemos convertido las instrucciones anteriores para crear una grulla en un formato que el equipo puede leer y ejecutar, esto significa que estamos programando.
La clave y el primer obstáculo que encontramos en la programación es que debemos utilizar alguna forma de abstracción para comunicarnos eficazmente con nuestro ordenador. Esto adopta la forma de diversos lenguajes de programación, como JavaScript, Python o C. Si podemos escribir un conjunto repetible de instrucciones, como en el caso de la grulla de papiroflexia, solo necesitamos traducirlo para que lo entienda el ordenador. Estamos intentando que el ordenador cree una grulla o incluso multitud de grullas diferentes con ligeras variaciones entre ellas. Este es el poder de la programación: el ordenador ejecutará repetidamente cualquier tarea o conjunto de tareas que le asignemos, sin retrasos ni errores humanos.
Definición de programación visual
Descargue el archivo de ejemplo. Para ello, haga clic en el vínculo siguiente.
En el Apéndice, se incluye una lista completa de los archivos de ejemplo.
Si se le encomendase la tarea de escribir instrucciones para crear una grulla de papiroflexia, ¿cómo lo haría? ¿Lo haría con gráficos, texto o una combinación de ambos?
Si su respuesta es con gráficos, la programación visual es definitivamente para usted. El proceso es básicamente el mismo tanto para la programación como para la programación visual. Utilizan el mismo marco de formalización. Sin embargo, definimos las instrucciones y las relaciones de nuestro programa a través de una interfaz de usuario gráfica (o "visual"). En lugar de escribir texto vinculado a la sintaxis, conectamos nodos preconfigurados. A continuación, se incluye una comparación del mismo algoritmo ("dibujar un círculo a través de un punto") programado tanto con nodos como con código:
Programa visual:
Programa textual:
Los resultados del algoritmo:
El aspecto visual de la programación permite reducir la barrera en relación con la entrada y, con frecuencia, ofrece mayor claridad a los diseñadores. Dynamo se incluye en el paradigma de la programación visual, pero, como veremos más adelante, podemos seguir utilizando también la programación textual en la aplicación.
Esta página wiki se ha diseñado para obtener información sobre el desarrollo mediante la API de Dynamo, e incluye bibliotecas y herramientas.
https://github.com/DynamoDS/Dynamo/wiki
Este blog es la colección más actualizada de artículos del equipo de Dynamo, donde se explican las nuevas funciones, los flujos de trabajo y todos los aspectos relacionados con Dynamo.
Se crean lenguajes de programación para expresar ideas, normalmente, con lógica y cálculo. Además de estos objetivos, el lenguaje textual de Dynamo (anteriormente, DesignScript) se ha creado para expresar las intenciones del diseño. Por lo general, se reconoce que el diseño computacional es exploratorio y Dynamo intenta apoyar esto: esperamos que el lenguaje le resulte flexible y lo suficientemente rápido como para desarrollar un diseño desde el concepto y las iteraciones de diseño hasta la forma final. Este manual se ha organizado para ofrecer a los usuarios sin conocimientos de programación o geometría arquitectónica información completa sobre diversos temas de estas dos disciplinas relacionadas.
http://dynamobim.org/wp-content/links/DesignScriptGuide.pdf
Dynamo Primer es un proyecto de código abierto iniciado por Matt Jezyk y el equipo de desarrollo de Dynamo de Autodesk. La primera versión de este manual de introducción fue desarrollada por Mode Lab. Para colaborar, bifurque el repositorio, añada contenido y envíe una solicitud de extracción.
https://github.com/DynamoDS/DynamoPrimer
En esta página, se describe el proceso de desarrollo de un nodo de Dynamo personalizado en C# mediante la interfaz de "Zero Touch". En la mayoría de los casos, se pueden importar clases y métodos estáticos de C# sin modificaciones. Si la biblioteca solo necesita funciones de llamada y no crear nuevos objetos, esto se puede conseguir muy fácilmente con métodos estáticos. Cuando Dynamo carga el archivo DLL, eliminará el espacio de nombres de las clases y mostrará todos los métodos estáticos como nodos.
https://github.com/DynamoDS/Dynamo/wiki/Zero-Touch-Plugin-Development
Python es un lenguaje de programación interpretado, interactivo y orientado a objetos. Incorpora módulos, excepciones, escritura dinámica, tipos de datos dinámicos de alto nivel y clases. Python combina una potencia notable con una sintaxis muy clara. Incluye interfaces para muchas llamadas y bibliotecas del sistema, así como para diversos sistemas de ventanas, y es extensible en C o C++. También se puede utilizar como lenguaje de extensión para aplicaciones que necesitan una interfaz programable. Por último, Python es portátil: se ejecuta en muchas variantes de Unix, en Mac, y en Windows 2000 y versiones posteriores. La guía para principiantes de Python ofrece vínculos a otros aprendizajes y recursos de introducción para el aprendizaje de Python.
https://www.python.org/about/gettingstarted
AForge.NET es un marco de trabajo de C# de código abierto diseñado para desarrolladores e investigadores de los campos de la visión y la inteligencia artificiales: procesamiento de imágenes, redes neuronales, algoritmos genéticos, lógica indefinida, aprendizaje automático, robótica, etc.
http://www.aforgenet.com/framework/
MathWorld es un recurso en línea de matemáticas recopilado por Eric W. Weisstein con ayuda de miles de colaboradores. Desde que su contenido apareció por primera vez en línea en 1995, MathWorld se ha convertido en un nexo de información matemática tanto en las comunidades matemáticas como en las educativas. Sus entradas hacen referencia ampliamente a diarios y libros que abarcan todos los niveles educativos.
Estas publicaciones tratan principalmente sobre la plataforma Revit, con recomendaciones sobre cómo disfrutarla.
Este bloc de notas intenta solucionar algunas "deficiencias de recursos" en el aprendizaje y la aplicación de la API de Revit en el contexto de un flujo de trabajo de diseño.
http://wiki.theprovingground.org/revit-api
RevitPythonShell añade un intérprete de IronPython a Autodesk Revit y Vasari. Este proyecto es anterior a Dynamo y es una excelente referencia para el desarrollo mediante Python. Proyecto RPS:
https://github.com/architecture-building-systems/revitpythonshell
Blog del desarrollador:
http://darenatwork.blogspot.com/
Un completo catálogo de flujos de trabajo de la API de Revit de uno de los expertos más importantes de BIM.
En esta sección, encontrará recursos adicionales para ampliar sus conocimientos sobre Dynamo. También hemos añadido un índice de nodos importantes, una colección de paquetes útiles y un repositorio de los archivos de ejemplo de este manual de introducción. No dude en añadir lo que desee a esta sección... Recuerde que Dynamo Primer es un proyecto de código abierto.
A continuación, se incluye una lista de algunos de los paquetes más populares de la comunidad de Dynamo. Es recomendable que los desarrolladores los añadan a la lista. Recuerde que Dynamo Primer es una solución de código abierto.
archi-lab es una colección de más de 50 paquetes personalizados que amplían considerablemente la capacidad de Dynamo para interactuar con Revit. Los nodos incluidos en el paquete de archi-lab van desde nodos de operaciones básicas de lista a nodos de marcos avanzados de visualización de análisis para Revit. archi-lab está disponible en Package Manager.
BimorphNodes es un conjunto versátil de potentes nodos de utilidad. El paquete incluye nodos de detección de conflictos e intersección de geometría muy eficaces, nodos de conversión de curvas ImportInstance (CAD) y recopiladores de elementos vinculados que resuelven las limitaciones de la API de Revit. Para obtener más información sobre la gama completa de nodos disponibles, visite el diccionario de BimorphNodes. BimorphNodes está disponible en Package Manager.
Bumblebee es un módulo de extensión de interoperabilidad de Excel y Dynamo que mejora considerablemente la capacidad de Dynamo para leer y escribir archivos de Excel.
Clockwork es un conjunto de nodos personalizados para el entorno de programación visual de Dynamo. Contiene muchos nodos relacionados con Revit, pero también una gran cantidad de nodos para distintos fines, como la gestión de listas, las operaciones matemáticas, las operaciones de cadenas, las conversiones de unidades, las operaciones geométricas (principalmente, cuadros delimitadores, mallas, planos, puntos, superficies, UV y vectores) y paneles.
DataShapes es un paquete cuyo objetivo es ampliar la funcionalidad de las secuencias de comandos de Dynamo para el usuario. Se centra principalmente en incorporar una mayor funcionalidad al Reproductor de Dynamo. Para obtener más información, visite https://data-shapes.net/. ¿Desea crear impresionantes flujos de trabajo del Reproductor de Dynamo? Utilice este paquete.
DynamoSAP es una interfaz paramétrica para SAP2000 desarrollada sobre la base de Dynamo. El proyecto permite a los diseñadores y los ingenieros crear y analizar de forma genérica sistemas estructurales en SAP mediante el uso de Dynamo para controlar el modelo de SAP. El proyecto establece varios flujos de trabajo comunes que se describen en los archivos de ejemplo incluidos y ofrece una amplia gama de oportunidades para la automatización de tareas típicas en SAP.
Esta biblioteca amplía la funcionalidad de Dynamo/Revit al permitir a los usuarios desplegar geometría de superficie y PolySurface. La biblioteca permite a los usuarios convertir superficies en topología triangular plana y, a continuación, desplegarlas con las herramientas de protogeometría de Dynamo. Este paquete también incluye algunos nodos experimentales, así como algunos archivos de ejemplo básicos.
Importe imágenes vectoriales desde Illustrator o la Web mediante .svg. Esto permite importar dibujos creados manualmente en Dynamo para operaciones paramétricas.
Energy Analysis for Dynamo permite el modelado energético paramétrico y los flujos de trabajo de análisis energético de todo el edificio en Dynamo 0.8. Energy Analysis for Dynamo permite al usuario configurar el modelo energético desde Autodesk Revit, enviarlo a Green Building Studio para el análisis energético DOE2 y explorar los resultados devueltos por el análisis. El paquete está siendo desarrollado por CORE studio de Thornton Tomasetti.
Firefly es un conjunto de nodos que permiten a Dynamo comunicarse con dispositivos de entrada y salida, como el microcontrolador Arduino. Como el flujo de datos se produce "en directo", Firefly ofrece muchas oportunidades para crear prototipos interactivos entre el mundo digital y el físico a través de cámaras web, teléfonos móviles, controladores de juegos, sensores, etc.
Genius Loci es una compilación de nodos para Dynamo. Consta de nodos útiles para los usuarios de Revit. Instale el paquete para explorar algunas de las funciones; por ejemplo, interactúe fácilmente con los archivos vinculados y los documentos de Revit.
Mantis Shrimp es un proyecto de interoperabilidad que permite importar fácilmente geometría de Griciopper o Rhino a Dynamo.
El Kit de herramientas de malla de Dynamo proporciona muchas herramientas útiles para trabajar con la geometría de malla. La funcionalidad de este paquete incluye la posibilidad de importar mallas desde formatos de archivo externos, generar mallas a partir de objetos de geometría de Dynamo existentes y crear manualmente mallas a través de información de vértices y conectividad. Además, este kit incluye herramientas para modificar y reparar la geometría de malla.
🧐 MONOCLE
Monocle es una extensión de visualización para Dynamo 2.0.x. Monocle contiene un conjunto de herramientas útiles para la identificación de paquetes, la limpieza de gráficos y mucho más. Monocle tiene como objetivo integrar funciones en la interfaz de usuario de Dynamo de forma tan asombrosa hasta el punto de preguntarse, "¿Está realmente integrado en Dynamo?". Monocle está disponible en Package Manager.
Optimo ofrece a los usuarios de Dynamo la capacidad de optimizar los problemas de diseño autodefinidos mediante diversos algoritmos evolutivos. Los usuarios pueden definir el objetivo del problema o un conjunto de objetivos, así como funciones de adecuación específicas.
La biblioteca de nodos de Rhynamo permite a los usuarios leer y escribir archivos 3DM de Rhino en Dynamo. Rhynamo convierte la geometría de Rhino en geometría utilizable en Dynamo mediante la biblioteca OpenNURBS de McNeel, lo que ofrece nuevos flujos de trabajo que pueden intercambiar geometría y datos con fluidez entre Rhino y Revit. Este paquete contiene también algunos nodos experimentales que permiten el acceso "en directo" a la línea de comandos de Rhino.
Rhythm es un conjunto de nodos útiles que permite al proyecto de Revit seguir el ritmo de Dynamo. Básicamente, realiza de forma eficaz algunas tareas. Rhythm es de código abierto y está principalmente integrado en C#, y añade nodos de Revit, nodos principales y una extensión de vista a Dynamo. Rhythm está disponible en Package Manager.
El objetivo principal de Spring Nodes es mejorar la interacción de Dynamo con Revit. El objetivo más amplio es explorar todos y cada uno de los medios que pueden ayudar a agilizar los flujos de trabajo centrados en BIM. Muchos de los nodos utilizan IronPython o DesignScript y pueden ser un buen punto de partida para aprender la sintaxis específica y los aspectos más sutiles de ambos. Spring Nodes está disponible en Package Manager.
ARCHI-LAB
BIMORPH NODES
BUMBLEBEE PARA DYNAMO
CLOCKWORK PARA DYNAMO
DATA|SHAPES
DYNAMO SAP
DYNAMO UNFOLD
DYNASTRATOR
ENERGY ANALYSIS FOR DYNAMO
FIREFLY PARA DYNAMO
GENIUS LOCI
MANTIS SHRIMP
KIT DE HERRAMIENTAS DE MALLA
OPTIMO
RHYNAMO
RHYTHM
Spring Nodes