EFICIENCIA EN LA ORGANIZACION DE WORKSETS

En esta ocasión, en Monolito tratando de buscar la manera más rápida de trabajar en proyectos grandes y de manera masiva, hemos creado este script que te permite manipular de manera rápida los worksets de los proyectos (Se realizó para poder manejar un proyecto de 5 edificaciones con más de 3,000 habitaciones).

Especificamente realiza las siguentes acciones:

Para la versión de Dynamo CPython3 – Revit 2023

Modos: Estos son los nombres de los modos que cambian la función a realizar del script.

  • "EXPORT"  -> Exporta CSV con Worksets de usuario (id,name,kind)
  • "RENAME"  -> Renombra Worksets desde CSV (por id o por nombre)
  • "CREATE"  -> Crea Worksets de usuario desde CSV (columna: name)
  • "DELETE"  -> Elimina Worksets de usuario desde CSV (id o name)
  • "MOVE"    -> Reasigna elementos a Worksets (por elemento o por workset)

Inputs (IN): Estas son las entradas del NODO

  • IN[0] MODE="FOR IN IN MODE" -"EXPORT" | "RENAME" | "CREATE" | "DELETE" | "MOVE"
  • IN[1] FILE_PATH : Ruta absoluta al CSV (lectura o escritura) - Nodo de File Path para Seleccionar un Template .csv existente
  • IN[2] USE_IDS : Bool (Acción Boleana) (para RENAME/DELETE/MOVE: True=usa IDs, False=usa nombres) [opcional, default=True] - En nuestro caso lo configuramos siempre falso ya que nos es más cómodo trabajar con los nombres de los Worksets existentes.

Output: (Modifica los subproyectos de Revit.)

 Lista de mensajes/bitácora (strings) que modifica la parte de subproyectos dentro de Revit.



¿Qué hace esta app?

Gestiona los Worksets (subproyectos) de Revit desde Excel/CSV con un solo script de Dynamo (CPython3):

  • Exportar la lista de worksets

  • Renombrar en masa

  • Crear en masa

  • Eliminar en masa

  • Mover elementos entre worksets (por elemento o por workset completo)

Además:

  • Funciona en cualquier idioma (reconoce encabezados en español, inglés, portugués, francés, italiano, alemán, etc.).

  • Compatibilidad bSDD (buildingSMART Data Dictionary): puedes estandarizar nombres con una plantilla (ej. Disciplina – Nombre)


Los 5 modos (con ejemplos de CSV)

1) EXPORT (sacar listado)

  • MODE = "EXPORT"

  • FILE_PATH = C:\Temp\worksets.csv

  • Resultado: un CSV con columnas id,name,kind.

  • Úsalo como inventario o base para renombrar/crear.


2) RENAME (renombrar)

Dos formas:

A. Por ID (recomendado)

id,new_name 200123, ARQ - Arquitectura 200124, MEP - Eléctrico

B. Por nombre

old_name,new_name Arquitectura, ARQ - Arquitectura Eléctrico, MEP - Eléctrico

Tip bSDD: Si no pones new_name, puedes traer metadatos bSDD y el nombre se arma solo con una plantilla (ej. {bsdd_domain} - {bsdd_name}):

id,bsdd_domain,bsdd_name 200125, ARQ, Muros

→ Renombra a: ARQ - Muros.

3) CREATE (crear)

name ARQ - Arquitectura MEP - Eléctrico

o con bSDD (sin “name”, se arma solo):

bsdd_domain,bsdd_name ARQ, Muros MEP, Canalizaciones

4) DELETE (eliminar)

Por ID

id 200123 200124

Por nombre

name ARQ - Arquitectura MEP - Eléctrico

Seguridad: el script evita borrar todos los worksets de usuario.

5) MOVE (mover elementos)

A. Por elemento → destino

  • Por ID de destino:

element_id,target_id 123456,200123 789012,200123
  • Por nombre de destino:

element_id,target_name 123456, ARQ - Arquitectura 789012, ARQ - Arquitectura

B. Por workset → workset (migración total)

  • Por ID:

source_id,target_id 200111,200123
  • Por nombre:

source_name,target_name ARQ - Viejo, ARQ - Arquitectura

Idiomas: ¿cómo entiende tus encabezados?

El script reconoce sinónimos. Por ejemplo, para “nombre” puedes usar name / nombre / nome / nom, etc.

Si quieres agregar tus propios sinónimos, usa un CONFIG.json.

Ejemplo de CONFIG.json (opcional)

Guárdalo en C:\Temp\worksets_config.json y pásalo al cuarto input (CONFIG_PATH):

{ "bsdd": { "enabled": true, "naming_template": "{bsdd_domain} - {bsdd_name}", "enforce_template": false }, "header_synonyms": { "target_name": ["destino", "workset_destino"], "source_name": ["origen", "workset_origen"] } }
  • naming_template: define cómo se arma el nombre con bSDD.

  • enforce_template: true fuerza que todos los nombres con metadatos bSDD cumplan esa plantilla.


Flujo recomendado (rápido y sin drama)

  1. EXPORT → revisa el inventario.

  2. Prepara tus CSV (renombres, creaciones, movimientos).

  3. Ejecuta RENAME/CREATE/DELETE/MOVE según corresponda.

  4. Sincroniza con central al terminar (si trabajas colaborativamente).


Consejos de uso profesional

  • Usa IDs para evitar ambigüedades de nombre.

  • Cierra vistas pesadas antes de MOVE masivo (rendirá mejor).

  • Algunos elementos no permiten cambiar de workset (parámetro de solo lectura); el log te dirá cuáles.

  • ¿Estandarización? Activa bSDD y crea familias de nombres consistentes por disciplina, sistema o fase.


Problemas comunes (y soluciones)

  • “El modelo no es Workshared” → Activa Worksharing (Colaborar → Worksets).

  • “Nombre ya existe” → Cambia el new_name o revisa tu plantilla bSDD.

  • “No editable” al mover → Ese elemento no expone el parámetro de workset (o está bloqueado); muévelo manualmente o revisa restricciones.

  • CSV no detecta encabezados → Asegúrate de incluir encabezados y/o añade sinónimos en CONFIG.json.


Cierre

Con este flujo, pasas de “clics manuales” a gestión masiva, estandarizada y multilenguaje. Es más orden, menos fricción y nombres limpios con bSDD. Cuando quieras dar el siguiente paso, se puede añadir DRY-RUN (simulación) y reportes automáticos de resultados para auditoría.


Si llegaste hasta aquí, deja un comentario para que puedas adquirir este script a un módico precio.

Comentarios