Dynamo
Primer for v2.0
Español
Español
  • Acerca de
  • Introducción
    • ¿Qué es Dynamo y cómo funciona?
    • Manual de introducción, comunidad y plataforma de Dynamo
  • Configuración de Dynamo
  • Interfaz de usuario
    • Espacio de trabajo
    • Biblioteca
  • Nodos y cables
  • Nodos y conceptos básicos
    • Índice de nodos
    • Geometría para el diseño computacional
      • Descripción general de la geometría
      • Vector, plano y sistema de coordenadas
      • Puntos
      • Curvas
      • Superficies
      • Sólidos
      • Mallas
    • Los bloques de construcción de los programas
      • Datos
      • Matemáticas
      • Lógica
      • Cadenas
      • Color
    • Diseño con listas
      • ¿Qué es una lista?
      • Trabajo con listas
      • Listas de listas
      • Listas de n dimensiones
    • Diccionarios en Dynamo
      • ¿Qué es un diccionario?
      • Nodos de diccionario
      • Diccionarios en bloques de código
      • Casos de uso de Revit
  • Nodos y paquetes personalizados
    • Nodos personalizados
      • Introducción a los nodos personalizados
      • Creación de un nodo personalizado
      • Publicación en la biblioteca
    • Paquetes
      • Introducción a los paquetes
      • Caso real de paquete: Kit de herramientas de malla
      • Desarrollo de un paquete
      • Publicación de un paquete
      • Importación de Zero-Touch
  • Dynamo para Revit
    • La conexión de Revit
    • Selección
    • Edición
    • Creación
    • Personalización
    • Documentación
  • Dynamo for Civil 3D
    • La conexión con Civil 3D
    • Introducción
    • Biblioteca de nodos
    • Flujos de trabajo de ejemplo
      • Carreteras
        • Colocación de farolas
      • Land
        • Colocación de servicios
      • Servicios
        • Renombrar estructuras
      • Raíl
        • Envolvente libre
      • Topografía
        • Administración de grupos de puntos
    • Temas avanzados
      • Enlace de objetos
      • Python y Civil 3D
    • Dynamo Player
    • Paquetes útiles
    • Recursos
  • Dynamo en Forma (beta)
    • Configurar Dynamo Player en Forma
    • Añadir y compartir gráficos en Dynamo Player
    • Ejecutar gráficos en Dynamo Player
    • Diferencias en el servicio de cálculo de Dynamo con la versión de escritorio de Dynamo
  • Codificación en Dynamo
    • Bloques de código y DesignScript
      • ¿Qué es un bloque de código?
      • Sintaxis de DesignScript
      • Abreviatura
      • Funciones
    • Geometría con DesignScript
      • Conceptos básicos de geometría con DesignScript
      • Primitivas geométricas
      • Matemáticas vectoriales
      • Curvas: puntos interpolados y de control
      • Traslación, rotación y otras transformaciones
      • Superficies: interpoladas, puntos de control, solevación y revolución
      • Parametrización geométrica
      • Intersección y recorte
      • Operaciones booleanas geométricas
      • Generadores de puntos de Python
    • Python
      • Nodos de Python
      • Python y Revit
      • Configurar su propia plantilla de Python
    • Cambios en el lenguaje
  • Prácticas recomendadas
    • Estrategias gráficas
    • Estrategias de creación de secuencias de comandos
    • Referencia de secuencias de comandos
    • Administración del programa
    • Trabajar de forma eficaz con grandes conjuntos de datos en Dynamo
  • Flujos de trabajo de ejemplo
    • Flujos de trabajo para empezar
      • Jarrón paramétrico
      • Puntos de atractor
    • Índice de conceptos
  • Guía de introducción para desarrolladores
    • Compilar Dynamo a partir del código fuente
      • Compilar DynamoRevit a partir del código fuente
      • Administración y actualización de dependencias en Dynamo
    • Desarrollo para Dynamo
      • Introducción
      • Caso real de Zero-Touch (nodo de rejilla)
      • Ejecución de secuencias de comandos de Python en nodos Zero-Touch (C#)
      • Conceptos avanzados de Zero-Touch
      • Personalización avanzada de nodos de Dynamo
      • Uso de tipos COM (interoperabilidad) en paquetes de Dynamo
      • Caso real de NodeModel (interfaz de usuario personalizada)
      • Actualización de paquetes y bibliotecas de Dynamo para Dynamo 2.x
      • Actualización de paquetes y bibliotecas de Dynamo para Dynamo 3.x
      • Extensiones
      • Definición de la organización de paquetes personalizados para Dynamo 2.0+
      • Interfaz de línea de comandos de Dynamo
      • Integración de Dynamo
      • Desarrollo para Dynamo for Revit
      • Publicar un paquete
      • Compilar un paquete desde Visual Studio
      • Extensiones como paquetes
    • Solicitudes de incorporación de cambios
    • Expectativas de las pruebas
    • Ejemplos
  • Apéndice
    • Preguntas frecuentes
    • Programación visual y Dynamo
    • Recursos
    • Notas de la versión
    • Paquetes útiles
    • Archivos de ejemplo
    • Mapa de integración de anfitriones
    • Descargar PDF
    • Métodos abreviados de teclado de Dynamo
Powered by GitBook
On this page
  • Trabajo con listas
  • Consulta
  • Acción
  • Ejercicio
  • Operaciones de lista
  • List.Count
  • List.GetItemAtIndex
  • List.Reverse
  • List.ShiftIndices
  • List.FilterByBooleanMask
Edit on GitHub
Export as PDF
  1. Nodos y conceptos básicos
  2. Diseño con listas

Trabajo con listas

Previous¿Qué es una lista?NextListas de listas

Last updated 1 month ago

Trabajo con listas

Ahora que hemos establecido lo que es una lista, hablemos de las operaciones que podemos realizar en ella. Imagine una lista como un mazo de cartas. El mazo es la lista y cada carta representa un elemento.

Consulta

¿Qué consultas se pueden realizar a partir de la lista? Esto permite acceder a las propiedades existentes.

  • ¿Número de cartas del mazo? 52.

  • ¿Número de palos? 4.

  • ¿Material? Papel.

  • ¿Longitud? 3,5" u 89 mm.

  • ¿Anchura? 2,5" o 64 mm.

Acción

¿Qué acciones se pueden realizar en la lista? Estas acciones cambian la lista en función de una operación especificada.

  • Podemos barajar el mazo de cartas.

  • Podemos ordenar el mazo por valor.

  • Podemos ordenar el mazo por palo.

  • Podemos dividir el mazo.

  • Podemos dividir el mazo repartiendo manos individuales.

  • Podemos seleccionar una carta específica del mazo.

Todas las operaciones mencionadas anteriormente tienen nodos análogos de Dynamo para trabajar con listas de datos genéricos. En las lecciones siguientes, se muestran algunas de las operaciones fundamentales que podemos realizar en las listas.

Ejercicio

Operaciones de lista

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.

La imagen siguiente es el gráfico base en el que se dibujan líneas entre dos círculos para representar operaciones de lista básicas. Exploraremos cómo administrar los datos de una lista y mostraremos los resultados visuales a través de las acciones de lista que aparecen a continuación.

  1. Comience con un bloque de código con un valor de 500;.

  2. Conéctelo a la entrada x de un nodo Point.ByCoordinates.

  3. Conecte el nodo del paso anterior a la entrada origin de un nodo Plane.ByOriginNormal.

  4. Con un nodo Circle.ByPlaneRadius, conecte el nodo del paso anterior en la entrada plane.

  5. Mediante el bloque de código, designe un valor de 50; para el radio. Este es el primer círculo que crearemos.

  6. Con un nodo Geometry.Translate, desplace el círculo hacia arriba 100 unidades en la dirección Z.

  7. Con un nodo Code Block, defina un rango de diez números entre 0 y 1 con esta línea de código: 0..1..#10;.

  8. Conecte el bloque de código del paso anterior a la entrada param de dos nodos Curve.PointAtParameter. Conecte Circle.ByPlaneRadius a la entrada "curve" del nodo superior y Geometry.Translate a la entrada curve del nodo situado debajo del mismo.

  9. Con un nodo Line.ByStartPointEndPoint, conecte los dos nodos Curve.PointAtParameter.

List.Count

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.

El nodo List.Count es sencillo: cuenta el número de valores de una lista y devuelve ese número. Este nodo presenta más detalles cuando se trabaja con listas de listas, pero eso lo veremos en las secciones siguientes.

  1. El nodo List.Count**** devuelve el número de líneas del nodo Line.ByStartPointEndPoint. En este caso, el valor es 10, lo que coincide con el número de puntos creados a partir del nodo Code Block original.

List.GetItemAtIndex

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.

List.GetItemAtIndex es una forma fundamental de consultar un elemento de la lista.

  1. En primer lugar, haga clic con el botón derecho en el nodo Line.ByStartPointEndPoint para desactivar su vista preliminar.

  2. Con el nodo List.GetItemAtIndex, seleccionamos el índice "0" o el primer elemento de la lista de líneas.

Cambie el valor del control deslizante entre 0 y 9 para seleccionar un elemento diferente mediante List.GetItemAtIndex.

List.Reverse

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.

List.Reverse invierte el orden de todos los elementos de una lista.

  1. Para visualizar correctamente la lista de líneas invertida, cree más líneas. Para ello, cambie el nodo Code Block a 0..1..#50;.

  2. Duplique el nodo Line.ByStartPointEndPoint, inserte un nodo List.Reverse entre Curve.PointAtParameter y el segundo nodo Line.ByStartPointEndPoint.

  3. Utilice los nodos Watch3D para obtener una vista preliminar de dos resultados diferentes. El primero muestra el resultado sin una lista invertida. Las líneas se conectan verticalmente con los puntos adyacentes. Sin embargo, la lista invertida conectará todos los puntos con la otra lista en el orden opuesto.

List.ShiftIndices

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.

List.ShiftIndices es una buena herramienta para crear torsiones o patrones helicoidales, así como cualquier otra manipulación de datos similar. Este nodo desplaza los elementos de una lista un determinado número de índices.

  1. En el mismo proceso que la lista inversa, inserte un nodo List.ShiftIndices en Curve.PointAtParameter y Line.ByStartPointEndPointPoint.

  2. Mediante un bloque de código, designe un valor de "1" para desplazar la lista un índice.

  3. Observe que el cambio es sutil, pero todas las líneas del nodo Watch3D inferior se han desplazado un índice al conectarlas al otro conjunto de puntos.

Al cambiar el bloque de código a un valor superior, por ejemplo "30", observamos una diferencia significativa en las líneas diagonales. El desplazamiento funciona como el iris de una cámara en este caso, creando una torsión en la forma cilíndrica original.

List.FilterByBooleanMask

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.

List.FilterByBooleanMask eliminará determinados elementos en función de una lista de operaciones booleanos o valores de "verdadero" o "falso".

Para crear una lista de valores de "verdadero" o "falso", necesitamos realizar un poco más de trabajo...

  1. Mediante un bloque de código, defina una expresión con la sintaxis: 0..List.Count(list);. Conecte el nodo Curve.PointAtParameter a la entrada list. Veremos más detalles sobre esta configuración en el capítulo del bloque de código, pero la línea de código en este caso nos proporciona una lista que representa cada índice del nodo Curve.PointAtParameter.

  2. Mediante un nodo %** (módulo)**, conecte la salida del bloque de código en la entrada x y un valor de 4 en la salida y. Esto nos dará el resto al dividir la lista de índices entre 4. El módulo es un nodo muy útil para la creación de patrones. Todos los valores serán los restos posibles de 4: 0, 1, 2, 3.

  3. En el nodo %** (módulo)**, sabemos que el valor 0 significa que el índice es divisible por 4 (0, 4, 8, etc.). Mediante un nodo ==, podemos probar la divisibilidad frente a un valor de "0".

  4. El nodo Watch muestra solo esto; disponemos de un patrón verdadero/falso que dice: verdadero,falso,falso,falso,falso....

  5. Mediante este patrón verdadero/falso, conéctelo a la entrada "mask" de dos nodos List.FilterByBooleanMask.

  6. Conecte el nodo Curve.PointAtParameter en cada una de las entradas "list" de los nodos List.FilterByBooleanMask.

  7. Las salidas de Filter.ByBooleanMask son "in" y "out". "In" representa los valores que tenían un valor de máscara de "Verdadero (True)" mientras que "out" representa los valores que tenían un valor de "Falso (False)". Al conectar las salidas "in" a las entradas startPoint y endPoint de un nodo Line.ByStartPointEndPoint, hemos creado una lista filtrada de líneas.

  8. El nodo Watch3D indica que hay menos líneas que puntos. Hemos seleccionado solo el 25 % de los nodos filtrando solo los valores verdaderos.

Fotografía de

Christian Gidlöf
7KB
List-Operations.dyn
8KB
List-Count.dyn
8KB
List-GetItemAtIndex.dyn
8KB
List-Reverse.dyn
8KB
List-ShiftIndices.dyn
11KB
List-FilterByBooleanMask.dyn
cartas
Conteo
Ejercicio
Ejercicio
Ejercicio
Ejercicio