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)


Conecta al nodo Python estos 11 strings/números:

  1. 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 soporta bsdd:* si usas un mapeo bSDD.

  2. IN[1] – Tipo de cajetín
    Nombre exacto de Tipo o Familia:Tipo (ej.: A4 vacío o MiTitulo:A4).

  3. IN[2] – Hint del plano de áreas
    Fragmento del nombre de tu Area Plan base (ej.: UNIDADES).

  4. IN[3] – Prefijo de hoja
    Ej.: UV para Unidades, BV para Bloques, etc. (opcional; si no, usa uno por defecto).

  5. IN[4] – Índice inicial
    Número inicial para las hojas (1 → UV001, UV002…).

  6. 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"}

  7. IN[6] – Idioma
    es, en, fr o pt. El script trae sinónimos por idioma.

  8. IN[7] – bSDD JSON
    Mapas tipo {"bsdd:Unit":"NVL_AR UNIDAD"} (opcional).

  9. IN[8] – AreaScheme hint
    Parte del nombre del esquema de Áreas a usar (opcional; si lo omites, toma el del plano base).

  10. IN[9] – Parámetro para recorte
    Normalmente el mismo que IN[0], por ejemplo NVL_AR UNIDAD.

  11. IN[10] – Offset de recorte (pies)
    Margen alrededor del contorno. 10 cm ≈ 0.328084 ft.


Cómo usarlo (paso a paso)

  1. Prepara el plano base
    Ten un Area Plan con todas las Áreas visibles. Nómbralo con algo identificable (ej.: UNIDADES).

  2. 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.

  3. 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.

  4. 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


  5. 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) o Familia:Tipo para 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

Entradas más populares de este blog

PROGRAMA DE NECESIDADES

TIPOS DE APAREJOS EN ALBAÑILERIA - PARTE 1

EFICIENCIA EN LA ORGANIZACION DE WORKSETS

CONCEPTO DE CONTEXTO URBANO PARA EL DESARROLLO DE LOS PROYECTOS DE ARQUITECTURA

TE LO VENDIERON EN PLANOS PERO...

PLANTILLA AUTOMATIZADA PARA EL RÉGIMEN DE CONDOMINIO EN RD: PRECISIÓN, VELOCIDAD Y CONTROL DESDE UNA BASE DE DATOS (UNIDADES FUNCIONALES)

PROYECTO COMPLEJO NACE DEL LUGAR: CIUDAD + PAISAJE + EDIFICIO

DISEÑO ARQUITECTÓNICO VI: DEL EJERCICIO ACADÉMICO AL PENSAMIENTO ARQUITECTÓNICO

ESQUEMATIZACIONES TECNICAS EN LA ETAPA DE DISEÑO