Una de las actividades más tediosas en la oficina, sin duda es etiquetar planos. No obstante, es una de las que más «valor» productivo aporta a la hora de un enfoque práctico de dynamo.
Basado en el tutorial http://learndynamo.com/mod3/ [Tag Plans By Sheet] en la web http://learndynamo.com/ de Jeremy Graham podemos etiquetar por categoría todos las vistas en planos de nuestro proyecto.
Usando dos nodos de python aumentamos enormemente el potencial de un scritp con nodos standard de dynamo.
- En la primera parte del script hacemos un filtro de los planos y vistas que necesitamos.
- En la segunda parte en base a la categoría que seleccionamos podemos etiquetar según una familia y tipo de etiqueta que deseemos todas las vistas anteriormente filtradas.
En el primer nodo python mediante una lista y un bucle obtenemos 3 listas ( sheet , sheet.name, sheet.numbers) . Es un nodo sencillo y práctico para ordenar los datos que necesitaremos más adelante.
# Enable Python support and load DesignScript library
import clr
clr.AddReference("RevitAPI")
clr.AddReference("RevitServices")
clr.AddReference("RevitNodes")
import RevitServices
import Revit
import Autodesk
from Autodesk.Revit.DB import *
from RevitServices.Persistence import DocumentManager
#variables y obtención de documento
doc = DocumentManager.Instance.CurrentDBDocument
toggle =IN[0]
out = []
sheets= []
snames= []
snumbers= []
# Place your code below this line
if toggle == True:
collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Sheets).OfClass(ViewSheet)
for i in collector:
sheets.append(i)
snames.append(i.get_Parameter(BuiltInParameter.SHEET_NAME).AsString())
snumbers.append(i.get_Parameter(BuiltInParameter.SHEET_NUMBER).AsString())
out.append(sheets)
out.append(snames)
out.append(snumbers)
# Assign your output to the OUT variable.
OUT = out
En el segundo nodo python ,este si más complejo, obtenemos lo siguiente:
- Obtenemos los ids de los elementos de la categoría seleccionada en las vistas filtradas previamente y obtenemos todos los datos de bounding box y posicion de los elementos para etiquetarlos.
- Creamos los tag y los ubicamos ( sólo necesitaremos tres inputs ( familia y tipo + posición y longitud del leader de nuestras etiquetas).
Gracias a Jeremy Graham por su labor divulgativa en su página http://learndynamo.com/
Hola, puede ser que este script ya no funcione a partir de Revit 2019? Alguien lo ha probado?
Me gustaMe gusta
Hola Alberto, estoy revisando el código con Revit 2019 y de momento la primera parte del script me funciona. ( el collector de sheets, lo he actualizado con el codigo por si lo quieres copiar).
La segunda parte estoy en ello, parece que hay algunos problemas con «create tag» , por que ha cambiado en el API y ahora se llama «create independent tag» , https://www.revitapidocs.com/2019/b8e8eec2-8e3b-08f2-a9a5-89f24465c8b9.htm.
Lo investigaré a ver si lo resuelvo para actualizarlo. = )
Me gustaMe gusta