domingo, 5 de noviembre de 2017

Desarrollador Revit API

Hola a todos.

Estoy en busca de una persona en México que cumpla con los siguientes requisistos:


Funciones:
  • Desarrollar aplicaciones para software Autodesk Revit. 
  • Apoyo en tareas relacionadas a programación a los miembros del personal. 
Requisitos:
  • Lenguajes de programación: C# y/o Python. 
  • Conocimiento de la API de Revit. 
  • Conocimiento en la utilización de Revit. 
  • Experiencia desarrollando aplicaciones para Revit.

Gracias.

Saludos.

jueves, 2 de noviembre de 2017

Revit + Dynamo Player | Localización de Elementos

   En este corto video podremos observar cómo Dynamo BIM nos ayuda a automatizar tareas como la localización de vigas y muros basados en un sistema de ejes. Con la utilización de Dynamo Player los scripts pueden ejecutarse de una manera más sencilla e intuitiva.


Saludos.

Revit + Dynamo Player + WinForms | Creación de Elementos

   El uso de WinForms en combinación con Dynamo BIM nos permite generar elementos de interfaz gráfica más manejables y amigables con el usuario. En el siguiente video se muestra un ejemplo de ello:


Saludos.

viernes, 6 de enero de 2017

NODOS | Escribir información de Rooms en Ceilings.

   En algún momento se me presentó la tarea de obtener información de las Rooms de un proyecto, para posteriormente escribir o sobreescribir esa información en algún parámetro de los Ceilings pertenecientes a cada room. Manualmente esta tarea es bastante tediosa y sobretodo consume mucho tiempo y es propensa a errores. Es posible resolver esta situación mediante la API de Revit, pero vamos a apoyarnos en Dynamo para encontrar la solución.

   La lógica que he utilizado para la solución que propongo es la de elementos intersectándose con elementos. En Revit tanto los Ceilings como las Rooms son elementos tridimensionales de los cuales es posible obtener un objeto geométrico. Siendo así, entonces es posible comprobar que room se intersecta con que ceiling. Bueno, vamos a la solución:


   1.- Obtener la geometría de los elementos.



   2.- Comprobar y seleccionar los elementos que se intersectan entre sí.



   3.- Obtener el parámetro o parámetros de las Rooms y escribirlo o sobreescribirlo en algún parámetro de los Ceilings.



La definición completa:

El resultado:



El archivo:
Ceilings In Rooms .dyn

P.D. Es necesario que los contonos superiores de las Rooms estén intersectando los Ceilings. De no ser así deben ajustarse los límites.


Saludos.

miércoles, 9 de marzo de 2016

REVIT PYTHON SHELL | Otra forma de acceder a la API de Revit

Ya desde hace tiempo existen herramientas que nos permiten acceder a la API de Revit, como el Macro Manager y Visual Studio. Hace unos años surgió también Dynamo BIM y Revit PythonShell. Realmente todas son bastante útiles y cada una tiene sus diferencias al momento de utilizarlos. En este post únicamente me centraré en este último.

RevitPythonShell es una aplicación externa a modo de consola que sirve como un intérprete para IronPython (que según entiendo es como una integración del lenguaje de programación  Python con .NET Framework y lenguajes .NET). Esta consola permite movernos en un ambiente de programación que puede acceder a la API de Revit. 


Al principio estuve renuente de usarlo, pues ya usaba el Macro Manager ,Visual Studio y Dynamo BIM, así que por un tiempo lo dejé arrumbado. Pero últimamente que se me han presentado distintos flujos de trabajo durante la programación de comandos he decidido volver a utilizarlo. La razón principal ha sido porque es algo así como un híbrido entre el Macro Manager y Visual Studio, y lo digo en el sentido de que te permite crear un comando que ya aparece directamente en la interfaz del usuario y aunque siempre muestre el mismo icono, eso no lastima mis sentimientos. Pues muchas veces me dije a mi mismo: ¡Qué rayos! Voy a tener que crear un icono sólo para este simple comandito... Además es muy intuitivo, fácil de usar y no se anda con rodeos.


Por cierto, les dejo algunos enlaces en donde pueden encontrar información más específica:


Saludos.

miércoles, 3 de febrero de 2016

PYTHON SCRIPT | Pintar/Remover pintura

Innegablemente una de las tareas más tediosas, dolorosas y que consumen más tiempo en Revit es el pintar elementos y regiones divididas, ya que suelen ser cientos y cientos de superficies por pintar.


Si el objetivo de la programación es automatizar tareas ¿por qué no pintar cientos de superficies en unos segundos? Les dejo un video mostrando las capacidades de la API con Dynamo. Estoy seguro que derramarán lágrimas hasta los tipos más duros...


Saludos.



martes, 2 de febrero de 2016

Secretos AutoCAD | VARIABLES DE SISTEMA que te han hecho sufrir.

No cabe duda que la utilización de software creado para facilitar las tareas de dibujo es algo realmente bueno, pero inevitablemente como en toda relación surgen situaciones que en algún momento nos harán llorar y sufrir... y todo esto por no conocer bien a AutoCAD.


Si no sabían lo de las variables, debo comentarles que AutoCAD sí tiene algo llamado variables de sistema. Una variable es únicamente un nombre que almacena un valor, y una variable de sistema es un nombre que almacena un valor del ambiente operativo y de algunos comandos de AutoCAD. Las variables de sistema se utilizan principalmente al programar rutinas o comandos, pero no tocaremos ese tema acá.

Bueno, he aquí una lista con algunas variables épicas que los han hecho sufrir alguna vez. No les guarden rencor...

DIMASSOC
Controla la asociación que tiene la dimensión con respecto al objeto.
0 No crea asociación alguna con el objeto y además explota la dimensión.
1 Crea la dimensión sin explotar, pero ésta no tiene asociación con el objeto.
2 Crea la dimensión sin explotar, y ésta sí tiene asociación con el objeto.



PICKADD
Controla si los objetos que van siendo seleccionados se agregan al conjunto de selección o sustituyen al objeto anterior.
0 El objeto seleccionado sustituye al anteriormente seleccionado.
1 El objeto seleccionado es agregado al conjunto de selección.
2 Lo mismo que el anterior, pero también permite que el comando SELECT seleccione objetos.



PICKAUTO
Controla la selección de objetos mediante ventanas de selección.
0 Desactiva las ventanas de selección.
1 Activa las ventanas de selección y permite la selección de objetos al presionar el botón del mouse.
2 Activa las ventanas de selección y permite la selección de objetos al presionar y liberar el botón del mouse.



PICKDRAG
Controla cómo se comportan las ventanas de selección.
0 Permite la creación de la ventana de selección haciendo clic.
1 Permite la creación de la ventana de selección haciendo clic y arrastrando.
2 Permite los dos métodos anteriores.



PICKFIRST
Controla si los objetos se seleccionan antes o después de ejecutar un comando.
0 El objeto se selecciona después de ejecutar un comando.
1 El objeto se selecciona antes de ejecutar un comando.



FILEDIA
Controla si las ventanas de diálogo se muestran o no.
0 No muestra las ventanas de diálogo.
1 Muestra las ventanas de diálogo.


SELECTIONPREVIEW
Controla cómo se visualizan los objetos cuando se pasa por encima el cursor al ser seleccionados.
0 No se ilumina o resalta nada.
1 Se ilumina o resalta el objeto a pesar de que no exista algún comando activo.
2 Se ilumina o resalta el objeto únicamente al estar un comando activo.



Saludos.