Lad00706 Revit API U2
Lad00706 Revit API U2
Primeros pasos
REVIT API – Primeros pasos
© Structuralia 2
REVIT API – Primeros pasos
ÍNDICE
ÍNDICE........................................................................................................................................................................... 3
1. INTRODUCCIÓN ....................................................................................................................................................... 4
3 © Structuralia
REVIT API – Primeros pasos
1. INTRODUCCIÓN
Ya hemos entendido un poco de qué va todo esto de la API de Revit, aunque como todo, lleva
tiempo familiarizarnos con ella y sus particularidades. Por otro lado, ya habéis aprendido las
bases de dos potentísimos lenguajes de programación: Python y C#, lo cual os va a venir
fenomenal para entender todo lo que sigue.
Así que vamos a ir aprendiendo con ejemplos muy sencillitos. En este capítulo y los siguientes
voy a ir haciendo algunas cosas en Dynamo con Python y otras con macros con C#. Procuraré
que los ejemplos sean complementarios.
Alguien me podría decir que por qué no hacemos los macros en Python. Bueno, la verdad es
que por poder se puede, pero la razón principal es que hay muchos foros y comunidad de
programación con código con C# y es uno de los lenguajes que tenemos en el HTML de la API
de Revit.
Por lo tanto, bien está que nos manejemos con los dos.
La idea es que pasando de un lado a otro veáis lo que tienen en común (casi todo) y las
particularidades de cada herramienta (temas muy concretos).
© Structuralia 4
REVIT API – Primeros pasos
2. TASKDIALOG CLASS
Pues empezamos entonces. Al igual que un niño empieza a conocer el mundo, nosotros lo
vamos a hacer de una manera parecida. Vamos a empezar a decir nuestras primeras palabras
y siguiendo con la analogía del niño, a empezar a tomar cosas y a reconocerlas.
Vamos pues a la API y vamos a buscar una clase que se llama TaskDialog como en la Figura
1.
Recomendación: siempre leer la descripción. Nos dice que es una caja de diálogo que puede
ser utilizada para mostrar información y recibir simples inputs del usuario.
Ahora fijémonos por debajo, en Syntax. Nos dice que es public (grado de accesibilidad). La
clase se llama TaskDialog y vemos que es una subclase de APIObject (lo que vemos en rojo).
Bien, pues ahora vamos a sus miembros (Figura 2). Vemos que tenemos una serie de métodos
que son Show dependiendo de los argumentos. Fijémonos que hay uno con una S delante que
es Show(String, String) como en la Figura 3.
Fijémonos en la descripción: Nos muestra un task dialog con título, instrucción principal y un
botón de cerrar. Vamos a clicarlo y a entrar dentro. Deberíamos ver algo como en la Figura 4.
5 © Structuralia
REVIT API – Primeros pasos
© Structuralia 6
REVIT API – Primeros pasos
Figura 4: Fijémonos en la sintaxis del método: Nos devuelve un TaskDialogResult y necesita de dos strings.
Como vemos es un método estático, es decir, que se aplica sobre la clase no sobre un objeto
(public static). Como vemos nos devuelve un TaskDialogResult y el método Show, requiere de
dos argumentos: un título como string y una instrucción principal también como string.
Bien, pues vamos a aplicar este método en un Python Script. La primera cosa que tenemos
que saber es que necesitamos un dll fundamental como es RevitAPIUI. De la misma forma que
en módulos anteriores añadíamos referencias, aquí vamos a hacer lo mismo. De este dll vamos
a utilizar el namespace Autodesk.Revit.UI y nos vamos a traer todas las clases.
Si nos hemos fijado, sino lo vuelvo a mostrar en la Figura 5, TaskDialog es una clase que
pertenece al namespace: Autodesk.Revit.UI (Fijarse en la parte superior de la imagen) y por
debajo nos dice que el Assembly es en RevitAPIUI.dll. Nada es casual ¿verdad?.
Pues entonces teniendo todo esto en cuenta me voy a Dynamo y con dos code blocks y un
Python Script puedo hacer lo que aparece en la Figura 6. En OUT pondremos siempre algo
porque suele dar error si lo dejamos vacío, así que pongo algo por ejemplo para que cuando
nos pongamos por encima del nodo Python Script nos aparezca algo. Nos debería aparecer lo
que vemos en la Figura 7.
7 © Structuralia
REVIT API – Primeros pasos
Figura 6: Desde Dynamo trabajamos con la RevitAPIUI.dll y del namespace nos traemos todo para utilizar
TaskDialog
Figura 7: Vemos que nos aparece una pequeña interfaz (un task dialog) en la que aparece el título y la main
instruction.
© Structuralia 8
REVIT API – Primeros pasos
Todavía podemos llegar a ser más sencillos, sin preparar las variables ni nada. Colocamos los
dos strings como argumentos y voila!!.
9 © Structuralia
REVIT API – Primeros pasos
Simplificándolo al máximo el proceso, lo podéis directamente pasar por OUT, lo único es que
cuando paséis el cursor por el nodo os aparecerá Cancel.
© Structuralia 10
REVIT API – Primeros pasos
¿Dónde los encontramos?. En la ficha de Gestionar, tenemos un grupo que se llama Macros, y
un icono que se llama Administrador de Macros. Por si acaso mirad la Figura 10.
Cuando clicamos este Administrador de macros, pasamos a una interfaz como la que vemos
en la Figura 11.
Nos aparecen dos grandes opciones: Aplicación o el nombre del proyecto en el que estamos,
en este caso Máster en programación…
¿Qué quiere decir todo esto?. Pues básicamente que tenemos dos opciones. La primera es
desarrollar el macro como aplicación de tal manera que todos los que desarrolle aquí los veré
en mi instalación de Revit. Mientras que si elijo la opción en el proyecto, esos macros serán en
exclusiva para ese proyecto en concreto. Sea cual sea la opción, siempre podemos después
cambiar de opinión y reconvertirlo a la otra opción. El tema es que esa reconversión requiere
de un cierto conocimiento.
Entonces vamos a coger la opción Aplicación, porque este macro en concreto lo quiero en mi
instalación de Revit, de tal manera que lo pueda aplicar en otros proyectos.
Ahora solo tengo una opción de crear, que es la de crear un nuevo Módulo. Dentro de esos
módulos tendré los macros que quiera. En un mismo proyecto, puedo tener un montón de
módulos y en cada uno de estos, otro montón de macros. Es una manera de ir
compartimentando las cosas. Así que nos vamos a crear un módulo y nos aparecerá algo como
esto en la Figura 12.
Así pues, vamos a darle un nombre, por ejemplo: AprenderApi (convención Pascal) y en el
lenguaje tenemos 4 opciones.
Como vemos podría también utilizar Python entre otros. Personalmente utilizo C# como ya he
contado porque en cuanto a código para Revit sigue siendo el más popular. Por otro lado
siempre es bienvenido que hagamos una descripción de en qué consiste dicho módulo.
11 © Structuralia
REVIT API – Primeros pasos
Figura 10: En la ficha de Gestionar tenemos el apartado de macros y el Administrador de macros en la parte
superior
Figura 11: El administrador de macros tiene dos grandes fichas: Aplicación y la del proyecto (en este caso
Máster…)
© Structuralia 12
REVIT API – Primeros pasos
Figura 12: Creamos nuestro primer módulo, escogemos el lenguaje y le damos una descripción
Dentro de ese módulo voy a crear mi primer macro, así que nos vamos al botón Macro (Crear)
en la parte derecha de la interfaz.
Deberíamos ver cómo se nos abre SharpDevelop. Éste va a hacer las veces de Visual Studio
pero dentro de Revit.
13 © Structuralia
REVIT API – Primeros pasos
Como podemos apreciar se nos aparecen un montón de cosas que pueden intimidar bastante a
un neófito. Como no es vuestro caso ya que ya conocéis C#, no tengo necesidad de explicaros
qué son esos using. Ya sabemos que son directivas que nos permiten utilizar bibliotecas
creadas por otros y así utilizar sus clases y métodos.
Así pues lo importante aquí es saber que por defecto se nos aparecen toda una serie de
directivas y ya vemos que Autodesk.Revit.UI y Autodesk.Revit.DB cobran mucha importancia.
La primera se refiere a la user interface (UI) así pues a la interfaz de usuario y la otra es la data
base o base de datos.
Ya vamos viendo por encima que nos aparece namespace como keyword y justo después el
nombre del módulo que le hemos dado: AprenderApi.
Dentro de este namespace hay un montón de cosas con las que ahora no me quiero meter.
Las iremos descubriendo poco a poco. Lo importante aquí es quedarnos con la idea de que se
me ha generado un namespace y dentro hay una clase que nos aparece por defecto llamada
ThisApplication y eso es porque lo hemos hecho dentro de Aplicación en el Administrador de
macros.
© Structuralia 14
REVIT API – Primeros pasos
A partir de ahí, vemos que nos aparece en gris encuadrado: Revit Macros generated code. A
partir de aquí vamos a poner los macros que queramos dentro de este módulo.
Ya vemos que nos aparece: public void MiPrimerMacro(). Public porque es de acceso público,
es decir lo puedo ver desde el administrador de macros, void porque no me devuelve ningún
valor y el nombre del macro como si fuera un método sin parámetros.
Figura 14: En el administrador de macros me aparece MiPrimerMacro, como vemos le he dado una descripción
Sin problemas podría crear dentro de esta clase, un macro que fuera de acceso privado, es
decir que no pudiera verlo desde mi Administrador de macros (Figura 15).
15 © Structuralia
REVIT API – Primeros pasos
Figura 15: Puedo crear también macros privados o no accesibles desde el Administrador de macros
Así que puedo llamarlo: MiMacroNoVisible() y pongo private por delante. Ahora si vuelvo al
administrador de macros, no veré este macro que acabo de crear (Figura 16).
Figura 16: Vemos que no aparece el macro privado que acabo de crear en SharpDevelop
© Structuralia 16
REVIT API – Primeros pasos
Figura 17: Volvemos a la clase TaskDialog y nos fijamos que su namespace es: Autodesk.Revit.UI
17 © Structuralia
REVIT API – Primeros pasos
Figura 18: Al haber suprimido la directiva Autodesk.Revit.UI en la parte superior tengo que escribirlo si quiero usar
TaskDialog
Por supuesto todo esto no tiene sentido, así que vuelvo a ponerlo como estaba. Solo tengo que
invocar la clase TaskDialog ya que el método Show es estático y pongo los dos parámetros
que necesito.
Así pues me invento los mensajes que quiero que aparezcan en el task dialog, por ejemplo los
de la Figura 19.
© Structuralia 18
REVIT API – Primeros pasos
Figura 19: Utilizo el método Show de la clase TaskDialog y me invento sus mensajes correspondientes
Perfecto, ahora solo tenemos que hacer un último paso para ver si algún error y es Generar
Solución, lo tenemos en la parte superior en Generar (Figura 20).
19 © Structuralia
REVIT API – Primeros pasos
Figura 20: Ahora solo nos queda ir a Generar Solución y como vemos debajo todo ha ido bien
Como podemos apreciar debajo, todo ha ido bien. Nos dice: “Generación iniciada. Compilando
AprenderApi Generación completada correctamente. Así que todo está bien y no ha habido
errores.
Ahora solo nos queda ir a nuestro Administrador de macros. Nos vamos al que acabamos de
crear y le damos a Ejecutar en la parte superior derecha (Figura 21).
© Structuralia 20
REVIT API – Primeros pasos
Figura 21: Vamos al Administrador de macros, buscamos el que acabamos de hacer, nos ponemos por encima y le
damos a ejecutar.
Figura 22: Nos aparece el mensaje que acabamos de crear. Todo ha funcionado
Nos debería aparecer algo como lo que vemos en la Figura 22. Efectivamente, funciona. Ya
tenemos nuestro primer macro. Enhorabuena, si no te ha quedado muy claro, no te preocupes
porque vamos a repetir este proceso varias veces.
Para rematar este macro, pongamos por caso que quiero que el usuario que ve este task dialog
pueda interactuar. Como ejemplo, podría ser lanzar una pregunta y que responda o bien si o
bien no. En función de lo que haya respondido, le aparecerá otro task dialog.
21 © Structuralia
REVIT API – Primeros pasos
Así que manos a la obra. Vamos de nuevo a la API y vemos que el método Show tiene otras
opciones como la tercera de Show en la Figura 23.
Figura 23: Tenemos un método Show que requiere también de common buttons
© Structuralia 22
REVIT API – Primeros pasos
Figura 24: Este método Show requiere de tres parámetros entre otros TaskDialogCommonButtons
Como vemos requiere de los dos parámetros que hemos visto antes más
TaskDialogCommonButtons. Para ver en qué consisten estos últimos vamos adentro.
Vemos en la Figura 25 que se trata de una enumeration con una serie de botones standard.
Tenemos desde None hasta Cancel pasando por entre otros, Yes y No.
Estos dos últimos nos pueden venir muy bien así que vamos a utilizarlos.
Por lo tanto nos vamos a nuestro macro y vamos a cambiarlo para tener estos dos botones.
23 © Structuralia
REVIT API – Primeros pasos
© Structuralia 24
REVIT API – Primeros pasos
Así que cambiamos el macro y ponemos una pregunta tipo: ¿Te gusta programar? Y dos
botones separados por una barra vertical |.
Nos tendría que dar lo que vemos en la Figura 27. Vemos que nos aparecen los dos botones.
Sin embargo tanto si le doy a Sí como a No, no ocurre nada.
Figura 27: Nos aparece la pregunta con las dos opciones que no nos llevan a ninguna parte.
Tenemos por tanto que recurrir a utilizar los conceptos de programación que hemos aprendido.
La idea es clara: si le damos a Sí que nos aparezca otro task dialog dándonos la enhorabuena
y si le damos a No, que nos devuelva un mensaje de ánimo. Podemos utilizar un if / else
stament.
Vamos a darle a Generar Solución de nuevo y nos vamos al Administrador de macros para
ejecutarlo.
Para ello, ya podemos fijarnos que el método nos devuelve un TaskDialogResult que es otra
enumeration (Figura 28).
Si nos fijamos entre los miembros de esta enumeration, tenemos Yes, que en la descripción
nos dice que es el return value o valor de retorno de TaskDialogCommonButtons.Yes y lo
mismo podríamos ver para No, que es el valor de retorno de TaskDialogCommonButtons.No.
25 © Structuralia
REVIT API – Primeros pasos
Figura 28: El método Show nos devuelve una TaskDialogResult Enumeration con una serie de miembros
© Structuralia 26
REVIT API – Primeros pasos
Así que si le das a Sí, te aparecerá un mensaje y si a No aparecerá otro. Vamos a Generar
Solución y a ejecutar nuestro macro. Nos aparece primero el mensaje con la pregunta (Figura
30) y cuando le doy a Sí me aparece otro mensaje de enhorabuena como en la Figura 31.
27 © Structuralia
REVIT API – Primeros pasos
© Structuralia 28
REVIT API – Primeros pasos
Figura 33: Con ActiveUIDocument obtenemos un objeto que representa el proyecto activo actualmente
29 © Structuralia
REVIT API – Primeros pasos
Como vemos es una propiedad que pertenece a la clase UIApplication y lo que nos devuelve el
un UIDocument (en rojo). Este UIDocument representa como nos dice un proyecto abierto en
nuestra UI (interfaz de usuario) (Figura 34).
Bueno, vámonos entonces a Dynamo y como comentaba vamos a añadir una nueva referencia
y a traernos este UIDocument (proyecto abierto en nuestra UI).
Para ello tenemos que hacer una serie de cosas un poco alambicadas. No os asustéis porque
yo tampoco me las sé de memoria, al final utilizamos plantillas, pero para irnos familiarizando
sería lo que veis en la Figura 35.
Figura 34: Como vemos este UIDocument representa un proyecto de Revit abierto en la interfaz de usuario
© Structuralia 30
REVIT API – Primeros pasos
Figura 35: Ya vemos que conseguimos un UIDocument y veremos que se le suele representar por uidoc
Ya vemos que le hemos puesto un nombre: uidoc. Éste es el nombre que más se ve en foros y
demás, así que aplico la misma terminología. Si exploro un poco veo que UIDocument tiene
una serie de propiedades (Figura 36). Entre otras, tengo ActiveView que nos devuelve la vista
activa de ese proyecto abierto en la UI. Yo la que tengo activa es una axonométrica de un
proyecto de ejemplo, así que voy a verificar que funciona (Figura 37).
31 © Structuralia
REVIT API – Primeros pasos
Figura 37: Con ActiveView puedo tener acceso a la vista actual en mi interfaz de usuario.
Si seguimos, veríamos que ActiveView nos devuelve una View y esa clase View tiene una
propiedad llamada Category y entre las propiedades de Category hay una que es nombre. Así
que podemos ver por pantalla el nombre de la categoría. Vemos que es Vistas como en la
Figura 38.
Figura 38: Siguiendo el hilo podríamos ver el nombre de la categoría a la que pertenece la vista activa
© Structuralia 32
REVIT API – Primeros pasos
Otra de las propiedades de la Figura 36 es Selection. Nos dice que nos devuelve o nos
recupera los elementos actualmente seleccionados. (Figura 39)
Figura 39: Utilizando la propiedad Selection de UIDocument obtenemos los elementos actualmente seleccionados.
Nos devuelve una Selection que tiene otros métodos y propiedades. Entre otros tenemos el
método GetElementIds que nos devuelve los ids de los elementos que hayamos seleccionados.
33 © Structuralia
REVIT API – Primeros pasos
Figura 40: Tenemos el método GetElementIds que nos devuelve los ids de los elementos seleccionados
Así que vamos a seleccionar algo previamente de un proyecto cualquiera, por ejemplo lo que
se ve en la Figura 41.
Ahora utilizando el método que acabamos de ver GetElementIds puede mostrar en el nodo los
ids de dichos elementos. Lo tenemos en la Figura 42.
Después de haber aprendido todo esto, lo vamos a combinar con TaskDialog porque la idea es
enseñar los ids en un task dialog.
Así que podríamos hacer algo como lo que aparece en la Figura 43.
© Structuralia 34
REVIT API – Primeros pasos
Figura 41: Seleccionamos una serie de elementos en nuestra vista activa, por ejemplo estos
Figura 42: Conseguimos mostrar los ids de lo que acabo de seleccionar utilizando GetElementIds()
35 © Structuralia
REVIT API – Primeros pasos
Figura 43: Podemos utilizar el bucle for y mostrar en un task dialog los ids
Utilizando un bucle for y definiendo un string vacío (ids_textos) puedo mostrar los ids sin
problemas como en la Figura 44, sabiendo que los ids (ElementId class) tienen un método
llamado ToString para obtener una representación como string de los strings.
Figura 44: Mostramos los ids de lo seleccionado en Revit a través de un task dialog
© Structuralia 36
REVIT API – Primeros pasos
Lo que hemos hecho está bien, ahora sin embargo lo que vamos a hacer es seleccionar un
elemento individualmente, pero a diferencia de cómo lo hacíamos con anterioridad, esto es
preseleccionándolo, ahora nos va a aparecer un mensaje incitándonos a que seleccionemos un
elemento. Vamos a ello entonces.
Si vamos a Selection class de nuevo, veremos que podemos hacerlo mediante un método
llamado PickObject, lo podemos ver en la Figura 45.
37 © Structuralia
REVIT API – Primeros pasos
La verdad es que hay varias posibilidades, vámonos a la primera que requiere un ObjectType.
(Figura 46)
Como vemos este método requiere de un ObjectType y nos devuelve una Reference. Si vamos
a ObjectType veremos que es una enumeration con una serie de miembros. Vemos que esos
miembros van desde Nothing (nada) hasta Subelement pasando por Element o Face. Así que
tenemos que especificar en suma, qué tipo de objecto vamos a seleccionar. En este caso es
claro que es un Element (Whole element). (Figura 47)
© Structuralia 38
REVIT API – Primeros pasos
Figura 47: ObjectType es una enumeration que tiene distintos miembros como Element (Whole element)
Figura 48: Reference nos lo define como una referencia a un objeto geométrico en un modelo de Revit.
39 © Structuralia
REVIT API – Primeros pasos
Por otro lado la Reference no es más que una referencia a un objeto geométrico, como
aparece en la Figura 48.
Figura 49: Con el método PickObject seleccionamos un elemento devolviéndonos una Reference
Bien, con todo esto hemos conseguido una referencia, pero no en si el elemento y esto es lo
verdaderamente fundamental: obtener el elemento a partir de una referencia. ¿Cómo lo
hacemos?.
Para ello tenemos que ver la clase Document, como en la Figura 50. Nos viene a decir que es
un objeto que representa un proyecto de Revit abierto. El tema es bastante parecido a primera
vista al UIDocument, lo que pasa es que este nos habla desde la UI o interfaz de usuario.
© Structuralia 40
REVIT API – Primeros pasos
Figura 50: Document class nos dice que representa un proyecto abierto de Revit
En suma representa el proyecto abierto activo. Si exploramos entre los métodos tenemos
GetElement(Reference), como vemos en la Figura 51. Nos dice que nos da el elemento
referenciado por la referencia como input. Veámoslo más de cerca (Figura 52).
Con esto ya vamos bien encaminados. Para ello también necesitaremos este documento actual
y lo podemos hacer utilizando de nuevo DocumentManager y lo podemos llamar doc. Toda la
operación la vemos en la Figura 53.
41 © Structuralia
REVIT API – Primeros pasos
Figura 52: El método GetElement tiene como resultado un Element y necesita de una referencia
Figura 53: Como he seleccionado un árbol me aparece el nombre del elemento y su id.
© Structuralia 42
REVIT API – Primeros pasos
Ahora podríamos mostrar por pantalla dos propiedades del elemento: su id y su nombre. Las
dos las tenemos en Element class (Figura 54) y las podemos mostrar por pantalla (Figura 55).
Figura 55: Podemos enseñar por pantalla el id y el nombre del elemento seleccionado
43 © Structuralia
REVIT API – Primeros pasos
Vamos a crear un nuevo macro por ejemplo le podemos llamar SeleccionarElemento, lo vamos
a hacer desde Aplicación porque lo queremos para nuestra instalación de Revit (Figura 57).
Debería abrirse SharpDevelop como en la Figura 57.
© Structuralia 44
REVIT API – Primeros pasos
Figura 57: Se abre SharpDevelop y nos aparece el macro que acabamos de nombrar SeleccionarElemento
La primera cosa que podemos ir haciendo es traernos uidoc y doc (UIDocument y Document).
No tiene mucha complicación. Para un macro de aplicación lo hacemos de esta manera (Figura
58).
45 © Structuralia
REVIT API – Primeros pasos
Conseguidos los dos, lo demás es muy similar. Primero tendremos que conseguir la referencia
del elemento con el método PickObject. Fijémonos que esta vez no necesito hacer
Selection.ObjectType.Element, sino ObjectType.Element ya que entre las directivas tengo
using Autodesk.Revit.UI.Selection. (Figura 59)
Ahora nos queda conseguir el elemento a partir de la referencia, lo podemos hacer con el
método GetElement de la clase Document (Figura 60).
Bien, pues ahora solo resta enseñar si queremos por pantalla, a través de un task dialog el id y
el nombre por ejemplo del elemento seleccionado. (Figura 61). Fijémonos que como estoy en
C# no necesito transformar el id a string con el método ToString.
© Structuralia 46
REVIT API – Primeros pasos
Figura 61: Enseñamos información (id y nombre) del elemento con un task dialog
Con lo que tenemos solo tenemos que ejecutar el macro y seleccionando un elemento
cualquiera, nos aparecerá algo parecido a lo que vemos en la Figura 62.
Figura 62: Seleccionando un elemento nos aparece un task dialog con su id y nombre respectivo
47 © Structuralia
REVIT API – Primeros pasos
Vamos a ahora a seleccionar en vez de uno, varios elementos. En este caso lo vamos a hacer
con otro método aunque muy parecido. Si me voy a Selection en la API veré que también
tenemos un método que se llama PickObjects (en plural) (Figura 63). Entramos en él para ver
en qué consiste (Figura 64).
Figura 64: Este método PickObjects nos sirve para seleccionar varios objectos y nos devuelve un Ilist
© Structuralia 48
REVIT API – Primeros pasos
Figura 65: Utilizamos uidoc y doc y conseguimos las referencias de los elementos
Ahora necesitaremos hacer un foreach loop para conseguir los elementos respectivos y sus ids
y nombres (Figura 66).
Figura 66: Con un foreach loop podemos conseguir los ids y los nombres de los elementos seleccionados
49 © Structuralia
REVIT API – Primeros pasos
Solo nos queda mostrarlos por pantalla. Ya sabemos que lo podemos hacer con un task dialog
(Figura 67).
Ahora le damos a generar y cuando ejecutamos el macro, nos invita a que vayamos
seleccionando uno a uno los elementos. Hay que fijarse que el cursor tiene un signo más para
irlos seleccionando uno a uno. También si lo pasamos por uno ya seleccionado, nos invita a
que lo deseleccionemos si queremos. (Figura 68)
Finalmente, una vez seleccionado lo que queremos, le damos a Finalizar (en la parte superior
izquierda) y ya nos debería aparecer el task dialog como en la Figura 69.
© Structuralia 50
REVIT API – Primeros pasos
Figura 68: Podemos seleccionar uno a uno y finalmente le damos a Finalizar en la parte superior izquierda
Figura 69: Nos aparece un task dialog con la información de los elementos seleccionados
51 © Structuralia
REVIT API – Primeros pasos
Por supuesto lo podemos hacer también utilizando el método que habíamos visto
GetElementIds. Este método nos permite seleccionar varios a la vez de golpe y hay que
seleccionar esos elementos previamente. Para no extenderlo demasiado ya que ya lo hemos
visto, lo pongo todo el código de golpe (Figura 70).
Figura 71: Nos aparece un task dialog de nuevo con la información del elemento
© Structuralia 52