{"id":27845,"date":"2019-01-28T14:36:35","date_gmt":"2019-01-28T13:36:35","guid":{"rendered":"https:\/\/mascalagrimas.es\/dev-msi_old\/?p=27845"},"modified":"2023-08-02T08:37:36","modified_gmt":"2023-08-02T06:37:36","slug":"como-gestionar-los-datos-y-sus-listas-en-dynamo","status":"publish","type":"post","link":"https:\/\/mascalagrimas.es\/dev-msi_old\/como-gestionar-los-datos-y-sus-listas-en-dynamo\/","title":{"rendered":"C\u00f3mo gestionar los datos y sus listas en Dynamo"},"content":{"rendered":"<div>\n<p>Al iniciarse en el software <b>Dynamo<\/b>, resulta complicado interpretar c\u00f3mo funciona la <b>estructuraci\u00f3n <\/b>de datos que genera el programa. Por eso, es importante entender c\u00f3mo funciona, para, a partir de aqu\u00ed, poder tratar y escoger la informaci\u00f3n que nos interesa para trabajar con ella.<\/p>\n<p>&nbsp;<\/p>\n<p>Como vimos en el post anterior, <b>Dynamo<\/b> es un aplicaci\u00f3n que nos permite trabajar tanto en el modelado geom\u00e9trico en Revit como con la gesti\u00f3n de sus datos.<\/p>\n<p>Estos datos que tenemos en Revit, y que estamos acostumbrados a ver en la barra de propiedades o en una tabla de planificaci\u00f3n, en el software Dynamo los vemos de forma distinta.<\/p>\n<p>Normalmente, cuando pedimos datos desde Dynamo a Revit, lo solemos obtener en forma de lista. Si queremos obtener los nombres de todos los muros de nuestro modelo, le pediremos a Dynamo que, de la categor\u00eda muros, nos diga todos los elementos que existan y que finalmente nos de los nombres de estos elementos. Estos nombres se agrupan en una lista de datos.<\/p>\n<p>En el caso de que queramos gestionar datos de un modelo existente, partiremos de datos ya generados y que se visualizar\u00e1n en listas de Dynamo. En cambio, hay otros casos como, por ejemplo, cuando queramos modelar geometr\u00eda, donde podemos partir de cero. Por tanto, es posible que debamos generar listas de informaci\u00f3n nuevas.<\/p>\n<p>Para entender los primeros pasos, vamos a comenzar con <b>listas <\/b>de informaci\u00f3n cortas. Empezaremos generando una lista nueva de datos ficticios.<\/p>\n<h2>Generaci\u00f3n de Listas<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20120Muestra20de20distintas20formas20de20generar20una20lista20simple.20Fuente20propia.jpg\" alt=\"\" title=\"\"><\/p>\n<p>Imagen 1. Muestra de distintas formas de generar una lista simple. Fuente propia.<\/p>\n<p>Como vemos, podemos generar una lista de letras o de n\u00fameros consecutivos o aleatorios seg\u00fan c\u00f3mo lo escribamos. Pero hay que destacar que, en este caso, estamos generando una \u00fanica lista de datos. Y lo vemos porque en la parte inferior nos muestra @L2 @L1.<\/p>\n<p>Ahora vamos a crear una lista con m\u00e1s de una sub-lista.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20220Muestra20de20distintas20formas20de20generar20una20lista20con20sublistas.20fuente20propia.jpg\" alt=\"\" title=\"\"><\/p>\n<p>Imagen 2. Muestra de distintas formas de generar una lista con sub-listas. Fuente propia.<\/p>\n<p>Vemos que, al crear<b> listas que contienen sub-listas<\/b>, en la parte inferior del resultado ya nos aparece otro elemento m\u00e1s, que nos indica que hay un nivel nuevo en listas desde donde poder leer datos. Ahora vemos @L3 @L2 @L1.<\/p>\n<h2>Selecci\u00f3n de datos<\/h2>\n<p>Desde esta estructuraci\u00f3n, ahora podemos coger distintos datos seg\u00fan lo que seleccionemos:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20320Como20coger20la20primera20lista20de20una20lista.20Fuente20propia.jpg\" alt=\"\" title=\"\"><\/p>\n<p>Imagen 3. C\u00f3mo coger la primera lista de una lista. Fuente propia.<\/p>\n<p>Con un \u201cGetItemAtIndex\u201d o una inscripci\u00f3n tipo \u201cNombre[x]\u201d, podemos seleccionar una lista de las sub-listas y vemos como vuelve a convertirse en una \u00fanica lista de nivel 1 y 2. Pero vamos a fijarnos que con el nodo \u201cGetItemAtIndex\u201d, podemos escoger a qu\u00e9 nivel de estructura queremos entrar a coger la informaci\u00f3n. Si activamos la opci\u00f3n \u201cutilizar niveles\u201d, podemos coger informaci\u00f3n distinta:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20420Escoger20informaciC3B3n20dependiendo20del20nivel20de20lista20escogido.20Fuente20propia.jpg\" alt=\"\" title=\"\"><\/p>\n<p>Imagen 4. Escoger informaci\u00f3n dependiendo del nivel de lista escogido. Fuente propia.<\/p>\n<p>Partimos de que le estamos pidiendo la lista 0 de todo el conjunto:<\/p>\n<ul>\n<li>Si le indicamos nivel 1, vemos que nos da toda la informaci\u00f3n en una \u00fanica lista sin estar subdividida.<\/li>\n<\/ul>\n<ul>\n<li>Si le indicamos nivel 2, Dynamo entra en las sub-listas a buscar la informaci\u00f3n y, por tanto, nos da el \u00edndice 0 de cada una de las listas.<\/li>\n<\/ul>\n<ul>\n<li>Si le indicamos nivel de lista 3, vemos que nos da el mismo resultado que sin pedirle por \u201cutilizar niveles\u201d, pero nos genera un nivel de sub-lista m\u00e1s. En este caso, no nos da la lista en s\u00ed, sino que est\u00e1 generando una lista con la sub-lista. Poco \u00fatil puesto que estamos generando un nivel que no es necesario.<\/li>\n<\/ul>\n<p>Lo que m\u00e1s vamos a usar es la opci\u00f3n de escoger solo una lista sin activar \u201cUtilizar niveles\u201d, o ir a buscar \u00edndices de cada lista, como en el caso de indicarle \u201cnivel 2\u201d si lo que queremos obtener es informaci\u00f3n de sub-listas.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20520Coger20mC3A1s20de20una20lista20de20otra20lista.20fuente20propia.jpg\" alt=\"\" title=\"\"><\/p>\n<p>Imagen 5. Coger m\u00e1s de una lista de otra lista. Fuente propia<\/p>\n<p>En el caso que queramos coger m\u00e1s de una lista, debemos darle una lista a \u201cGetItemAtIndex\u201d.<\/p>\n<p>A partir de aqu\u00ed, podemos hacer lo que queramos con la informaci\u00f3n de las listas.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20620Ejemplos20de20selecciC3B3n20de20datos20en20listas.20Fuente20propia.jpg\" alt=\"\" title=\"\"><\/p>\n<p>Imagen&nbsp;<!-- [if supportFields]&gt;<span><span><\/span><span>&#160;<\/span>SEQ Ilustraci&#243;n * ARABIC <span><\/span><\/span>&lt;![endif]-->6<!-- [if supportFields]&gt;<span><span><\/span><\/span>&lt;![endif]-->.&nbsp;Ejemplos de selecci\u00f3n de datos en listas. Fuente propia.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20720Ejemplos20de20selecciC3B3n20de20datos20en20listas.20Fuente20propia.jpg\" alt=\"\" title=\"\"><\/p>\n<div>Imagen 7.&nbsp;Ejemplos de selecci\u00f3n de datos en listas. Fuente propia.<\/div>\n<h2>Principales acciones que podemos aplicar sobre listas<\/h2>\n<ul>\n<li><b>GetItemAtIndex<\/b>: Seleccionar \u00edndices de las listas. Como hemos visto en el ejemplo, nos permite seleccionar \u00edndices concretos de las listas.<\/li>\n<li><b>Slice<\/b>: Cortar la lista d\u00e1ndole un inicio de corte y un fin. Por ejemplo, contamos con una lista de n\u00fameros del 0 al 10 y solo necesitamos los valores del 3 al 6 para trabajar.<\/li>\n<li><b>Chop<\/b>: Hacer un corte en la lista con el valor de \u00edndices que contendr\u00e1 la primera sub-lista y el resto de \u00edndices que queden pertenecer\u00e1 a una segunda sub-lista.<\/li>\n<li><b>Sort<\/b>: Para ordenar los valores que tenga la lista si est\u00e1 desordenada.<\/li>\n<li><b>Count<\/b>: Contabilizar los elementos que contiene una lista.<\/li>\n<li><b>Flatten<\/b>: Quitar la ordenaci\u00f3n de sub-listas. Si hacemos un flatten a una lista que contiene dos sub-listas, nos quedar\u00e1 una \u00fanica lista con todos los valores.<\/li>\n<li><b>FilterByBoolMask<\/b>: Nos quedaremos con los elementos de las listas que son \u201ctrue\u201d o \u201cfalse\u201d, seg\u00fan lo que le hayamos pedido.<\/li>\n<li><b>GroupByFunction <\/b>\/ <b>GroupByKey<\/b>: Para agrupar la lista seg\u00fan una condici\u00f3n. Por ejemplo agrupar por nombre de Tipo o seg\u00fan alguna palabra clave.<\/li>\n<\/ul>\n<h2>Ejemplo sobre proyecto<\/h2>\n<p>Cuando <b>tratamos informaci\u00f3n<\/b> que nos viene de un modelo Revit, tambi\u00e9n es f\u00e1cil de gestionar. Vamos a poner un ejemplo pr\u00e1ctico:<\/p>\n<p>Queremos controlar la informaci\u00f3n de las habitaciones de nuestro modelo. Necesitamos que est\u00e9n agrupadas por el nombre de la habitaci\u00f3n, que el n\u00famero de la habitaci\u00f3n y el nombre sea un \u00fanico texto descriptivo y que de cada habitaci\u00f3n nos d\u00e9 su superficie.<\/p>\n<ol>\n<li>Obtener cada elemento de habitaci\u00f3n que tenemos del modelo.<\/li>\n<li><b>GroupByFunction<\/b>. Con la funci\u00f3n \u201cNombre\u201d. As\u00ed se nos estructura su informaci\u00f3n por su nombre. En este caso tenemos: Aula, Departamento, Lavabo\u2026<\/li>\n<li><b>Element.GetParameterValueByName<\/b>. Para obtener los par\u00e1metros de \u201cNombre\u201d \u201cN\u00famero\u201d y \u201c\u00c1rea\u201d.<\/li>\n<li>Crear una combinaci\u00f3n de n\u00famero m\u00e1s nombre con una f\u00f3rmula simple desde un <b>codeblock<\/b>: num+\u00bb-\u00ab+nomb. Obtendremos 161-Aula.<\/li>\n<li><b>List.Create<\/b>. Para unir la lista del nombre definitivo m\u00e1s sus \u00e1reas.<\/li>\n<li><b>List.Transpose<\/b>. Para combinar la primera sub-lista de nombres con la primera sub-lista de \u00e1reas.<\/li>\n<li><b>List.Transpose<\/b> con @L3 para unir cada habitaci\u00f3n con nombre completo con su \u00e1rea correspondiente.<\/li>\n<\/ol>\n<p><img decoding=\"async\" src=\"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-content\/uploads\/2019\/01\/Imagen20820Ejemplo20de20cC3B3mo20tratamos20la20informaciC3B3n20de20las20habitaciones20de20un20modelo.20Fuente20propia.png\" alt=\"\" title=\"\"><\/p>\n<p>Imagen 8. Ejemplo de c\u00f3mo tratamos la informaci\u00f3n de las habitaciones de un modelo. Fuente propia.<\/p>\n<p>De este modo tenemos la <b>informaci\u00f3n controlada<\/b> y la podemos tratar o exportar a <b>Excel<\/b>, por ejemplo.<\/p>\n<p>A partir de aqu\u00ed, las posibilidades son infinitas, pero la flexibilidad que nos da para tratar la informaci\u00f3n de nuestro modelo es mucho m\u00e1s amplia que con el propio software de modelado.<\/p>\n<p>Dynamo se ha convertido, actualmente, en una herramienta diaria para la gesti\u00f3n de proyectos. Nos ayuda a <b>agilizar procesos de introducci\u00f3n o gesti\u00f3n de datos<\/b> en el modelo que son exigidos por normativa o por requerimientos de clientes. Si somos capaces de trabajar la informaci\u00f3n con Dynamo, <b>reducimos tiempo de trabajo en Revit<\/b>.<\/p>\n<p>Os animo a que prob\u00e9is a jugar con la informaci\u00f3n en Dynamo, ver\u00e9is que ganareis en versatilidad dentro del proyecto.<\/p>\n<p>En pr\u00f3ximos posts, seguiremos explicando c\u00f3mo seguir tratando la informaci\u00f3n en Dynamo.<\/p>\n<\/div>\n\n\n<p>Si te ha gustado este art\u00edculo y te interesa formarte en BIM visita nuestra oferta de <a href=\"https:\/\/mascalagrimas.es\/dev-msi_old\/agenda-eventos-cursos\/\">cursos BIM<\/a> o convierte en un experto BIM con  todos nuestros <a href=\"https:\/\/mascalagrimas.es\/dev-msi_old\/master-bim\/\" data-type=\"URL\" data-id=\"https:\/\/mascalagrimas.es\/dev-msi_old\/master-bim\/\">M\u00e1ster BIM<\/a><\/p>\n<div style=\"display: none;\">   <a title=\"Videos Porno Gratis\" href=\"https:\/\/www.mespornogratis.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"text-decoration: underline; color: #ffffff; background-color: #000000;\"><em><strong>Porno Gratis<\/strong><\/em><\/span><\/a> <span style=\"text-decoration: underline; color: #ffffff; background-color: #003300;\"><em><strong><a style=\"color: #ffffff; text-decoration: underline; background-color: #003300;\" title=\"mejores videos porno xvideos en calidad hd\" href=\"https:\/\/www.mespornogratis.com\/category\/xvideos\/\" target=\"_blank\" rel=\"noopener\">X videos<\/a><\/strong><\/em><\/span> <span style=\"text-decoration: underline; color: #ffffff; background-color: #ff6600;\"><em><strong><a style=\"color: #ffffff; text-decoration: underline; background-color: #ff6600;\" title=\"mejores videos porno anal en calidad hd\" href=\"https:\/\/www.mespornogratis.com\/category\/anal\/\" target=\"_blank\" rel=\"noopener\">Sexo Anal<\/a><\/strong><\/em><\/span> <span style=\"color: #ffffff; background-color: #008080;\"><strong><em><span style=\"text-decoration: underline;\"><a style=\"color: #ffffff; text-decoration: underline; background-color: #008080;\" title=\"mejores videos porno azteca porno en calidad hd\" href=\"https:\/\/www.mespornogratis.com\/category\/aztecaporno\/\" target=\"_blank\" rel=\"noopener\">AztecaPorno<\/a><\/span><\/em><\/strong><\/span>  <\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Al iniciarse en el software Dynamo, resulta complicado interpretar c\u00f3mo funciona la estructuraci\u00f3n de datos que genera el programa. Por eso, es importante entender c\u00f3mo funciona, para, a partir de aqu\u00ed, poder tratar y escoger la informaci\u00f3n que nos interesa para trabajar con ella. \u00a0 Como vimos en el post anterior, Dynamo es un aplicaci\u00f3n [&#8230;]<\/p>\n","protected":false},"author":7,"featured_media":27855,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"_joinchat":[],"footnotes":""},"categories":[7],"tags":[11,16,17],"class_list":["post-27845","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-formacion","tag-bim","tag-bim-data","tag-dynamo","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/posts\/27845"}],"collection":[{"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/comments?post=27845"}],"version-history":[{"count":0,"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/posts\/27845\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/media\/27855"}],"wp:attachment":[{"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/media?parent=27845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/categories?post=27845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mascalagrimas.es\/dev-msi_old\/wp-json\/wp\/v2\/tags?post=27845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}