AUTOMATIZACIÓN REVIT + DYNAMO: HOJAS DE VENTAS POR ÁREAS CON RECORTE INTELIGENTE Y VIEWPORT CENTRADO
En proyectos con múltiples apartamentos o tipologías, generar planos de ventas uno a uno es un ritual arcano y repetitivo.
Este script de CPython3 para Dynamo (Revit 2023) crea, por cada valor de un parámetro de Área (p. ej. NVL_AR UNIDAD), una vista dependiente, recorta esa vista de acuerdo al contorno real (aunque tenga formas raras), crea la hoja con tu cajetín y centra el viewport automáticamente.
Además, entiende múltiples idiomas/nomenclaturas (traductor + bSDD) y une varias Áreas si comparten el mismo valor (unidad + área común, por ejemplo).
Qué resuelve
-
Vistas dependientes por Unidad / Edificio / Tipología o por cualquier parámetro de Área.
-
Recorte por contorno real (no un bounding box tosco) con margen configurable.
-
Si una unidad tiene varias Áreas (principal + patio + parte común), el recorte incluye todas.
-
Hoja con cajetín elegido por nombre de Tipo (o
Familia:Tipo) y viewport centrado. -
Traducción y bSDD para que el script funcione con tus parámetros, aunque cambie el idioma.
Requisitos
-
Revit 2023 (probado en 2023.1)
-
Dynamo con nodo Python Script (CPython3)
-
Un Area Plan base (ej. “UNIDADES”) y Áreas con el/los parámetros que vas a usar.
Entradas del script (IN)
-
IN[0] – Parámetro de agrupación
Nombre del parámetro de Área por el que agrupas (p. ej.NVL_AR UNIDAD) o palabras clave:Unidad,Edificio,Tipologia. También soportabsdd:*si usas un mapeo bSDD. -
IN[1] – Tipo de cajetín
Nombre exacto de Tipo oFamilia:Tipo(ej.:A4 vacíooMiTitulo:A4). -
IN[2] – Hint del plano de áreas
Fragmento del nombre de tu Area Plan base (ej.:UNIDADES). -
IN[3] – Prefijo de hoja
Ej.:UVpara Unidades,BVpara Bloques, etc. (opcional; si no, usa uno por defecto). -
IN[4] – Índice inicial
Número inicial para las hojas (1→ UV001, UV002…). -
IN[5] – Overrides JSON
Mapea tus claves lógicas a nombres reales de parámetros (opcional).
Ej.:{"Unidad":"NVL_AR UNIDAD","Edificio":"NVL_AR EDIFICIO"} -
IN[6] – Idioma
es,en,fropt. El script trae sinónimos por idioma. -
IN[7] – bSDD JSON
Mapas tipo{"bsdd:Unit":"NVL_AR UNIDAD"}(opcional). -
IN[8] – AreaScheme hint
Parte del nombre del esquema de Áreas a usar (opcional; si lo omites, toma el del plano base). -
IN[9] – Parámetro para recorte
Normalmente el mismo que IN[0], por ejemploNVL_AR UNIDAD. -
IN[10] – Offset de recorte (pies)
Margen alrededor del contorno. 10 cm ≈ 0.328084 ft.
Cómo usarlo (paso a paso)
Prepara el plano base
Ten un Area Plan con todas las Áreas visibles. Nómbralo con algo identificable (ej.:UNIDADES).-
Confirma los parámetros de Área
Ej.:NVL_AR UNIDAD,NVL_AR EDIFICIO,NVL_AR TIPOLOGIA. Asegúrate de que las Áreas tengan valores llenos. -
Crea el grafo en Dynamo
-
Un nodo Python Script (CPython3).
-
Crea 11 nodos String/Number para las entradas (ver imagen de arriba).
-
Conecta todo al Python.
-
-
Escribe los valores
-
IN[0] =
NVL_AR UNIDAD -
IN[1] = tu tipo de cajetín (ej.:
A4 vacío) -
IN[2] =
UNIDADES -
IN[3] =
UV(o el prefijo que uses) -
IN[4] =
1 -
IN[9] =
NVL_AR UNIDAD -
IN[10] =
0.328084(10 cm -
Ejecuta
El script creará por cada valor (A-101, A-102…) una vista dependiente, la recortará por la unión de las Áreas que comparten ese valor y generará una hoja con el cajetín y el viewport centrado.
Cómo recorta cuando hay varias Áreas por unidad
Script completo (cópialo tal cual en el nodo Python – CPython3)
Si te interesa puedes pedirlo en la caja de comentarios por un modico precio.
Centrado automático del viewport
Cuando se crea el Viewport, lo movemos al centro geométrico del cajetín usando ViewSheet.Outline y Viewport.GetBoxCenter():
Consejos de precisión
-
Offset: 10 cm suele verse bien. Si tu contorno tiene “orejas” o balcones, sube a 0.15 m ≈ 0.5 ft.
-
Varias Áreas por unidad: el recorte usa la unión de contornos por clave (ej. A-101).
-
Cajetín: puedes pasar solo el Tipo (
A4 vacío) oFamilia:Tipopara ser 100% específico. -
Idioma & bSDD: si tus parámetros cambian de idioma o convención, usa IN[5] y IN[7] para normalizar sin tocar el código.
Solución de problemas
¿El plano base es un AreaPlan?
-
¿El AreaScheme que quieres está seleccionado (IN[8])?
-
¿Los parámetros (
NVL_AR UNIDAD…) existen en todas las Áreas? -
¿Los valores por unidad son consistentes?
-
¿El cajetín existe con ese Tipo o
Familia:Tipo? -
¿IN[10] (offset) es > 0?
Qué mejoras puedes sumar
-
Aplicar un View Template de “Ventas” a las vistas dependientes.
-
Escalado auto-fit del viewport (máxima área útil sin salir de márgenes).
-
Reglas de nomenclatura (A-101 →
UV-101, por ejemplo). -
Exportación PDF/DWG al vuelo (por paquete/nivel/torre).
Licencia y crédito
Úsalo, modifícalo y compártelo con tu equipo. Si te ahorró horas y café frío, cítanos en tu post:
“Script CPython3 Revit/Dynamo para hojas de ventas por áreas — ARQ. Roberto Hernández
Comentarios
Publicar un comentario
Agradecemos tu opinión.