Skip to main content

bim-coordination

Coordinar modelos multidisciplinarios BIM: clash detection, federación de modelos, BCF (BIM Collaboration Format), NWD/NWC en Navisworks. Usa cuando el usuario diga "clash detection", "interferencias", "coordinación BIM", "BCF", "federar modelos", "NWD", "Navisworks Manage".

来源信息

仓库
Umbral-Bot/umbral-agent-stack
最近来源活动
2026年3月4日 23:53
检测到的 SKILL.md 语言
西班牙语
星标
0
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
bim-coordination
description
Coordinar modelos multidisciplinarios BIM: clash detection, federación de modelos, BCF (BIM Collaboration Format), NWD/NWC en Navisworks. Usa cuando el usuario diga "clash detection", "interferencias", "coordinación BIM", "BCF", "federar modelos", "NWD", "Navisworks Manage".
metadata
{"openclaw":{"emoji":"⚙️","requires":{"env":"[Truncated]"}}}
# BIM Coordination Skill — Clash Detection, Federación y BCF Rick usa este skill para coordinar modelos BIM multidisciplinarios: detección de interferencias, federación de modelos, gestión de issues vía BCF y automatización de reportes de coordinación. ## Flujo de coordinación BIM ``` 1. Modelado por disciplina (Arquitectura, Estructura, MEP) 2. Exportación a NWC desde Revit/ArchiCAD/Tekla 3. Federación en NWD (Navisworks) 4. Clash Detection (reglas por par de disciplinas) 5. Revisión y clasificación de interferencias 6. Generación de BCF con issues asignados 7. Distribución de BCF a equipos de diseño 8. Corrección en modelos nativos 9. Re-exportación y verificación 10. Reporte de estado para coordinación semanal ``` ### Matriz de coordinación típica | Par de disciplinas | Tipo de clash | Tolerancia | |--------------------|---------------|-----------| | Estructura vs. MEP Eléctrico | Hard | 25 mm | | Estructura vs. MEP Sanitario | Hard | 25 mm | | Arquitectura vs. Estructura | Hard | 50 mm | | MEP Eléctrico vs. MEP Sanitario | Hard | 25 mm | | MEP HVAC vs. Estructura | Hard | 50 mm | | Arquitectura vs. MEP (general) | Clearance | 100 mm | | Estructura vs. MEP (ductos) | Clearance | 150 mm | ## BCF — BIM Collaboration Format ### Qué es BCF BCF (BIM Collaboration Format) es un estándar abierto de buildingSMART para comunicar issues de coordinación entre herramientas BIM. Un archivo BCF contiene: | Componente | Contenido | |------------|-----------| | `markup.bcf` | Título, descripción, autor, fecha, estado, prioridad | | `viewpoint.bcfv` | Cámara, componentes visibles/seleccionados, secciones | | `snapshot.png` | Captura de pantalla del issue | | Metadatos | GUID del issue, GUID de elementos IFC relacionados | ### Versiones BCF | Versión | Soporte | |---------|---------| | BCF 2.1 | Estándar más adoptado. Soporte en Navisworks, Revit, Solibri, BIMcollab | | BCF 3.0 | Extensiones para documentos, modelos vinculados | | BCF-API | REST API para gestión en la nube (BIMcollab, Trimble Connect) | ### Workflow BCF entre plataformas ``` Navisworks (Coordinador BIM) → Exportar BCF con clashes detectados → Subir a BIMcollab / Trimble Connect → Arquitecto abre BCF en Revit → Navega al viewpoint, corrige modelo → Marca issue como "Resolved" → Estructural abre BCF en Tekla → Corrige y marca como "Resolved" → Coordinador verifica en siguiente ronda ``` ### Herramientas BCF | Herramienta | Rol BCF | |-------------|---------| | **BIMcollab** | Plataforma cloud de gestión BCF. Integración con Revit, Navisworks, Solibri | | **Trimble Connect** | Gestión de issues BCF + viewer 3D | | **Solibri** | Validación de reglas + generación BCF | | **Navisworks** | Exportar/importar BCF desde clash tests | | **Revit** | Plugin BCF para recibir/resolver issues | ### BCF con Python (bcf-client) ```python from bcf.v2.bcfxml import BcfXml # Leer un archivo BCF bcf = BcfXml.load("coordination_issues.bcfzip") for topic_id, topic in bcf.topics.items(): header = topic.header print(f"Issue: {header.title}") print(f" Estado: {header.topic_status}") print(f" Prioridad: {header.priority}") print(f" Asignado: {header.assigned_to}") print(f" Fecha: {header.creation_date}") ``` ## Navisworks — Federación y Clash Detection ### Archivos NWC y NWD | Formato | Descripción | |---------|-------------| | **NWC** | Cache de modelo. Exportado desde Revit/AutoCAD/Tekla. Lectura rápida | | **NWD** | Modelo federado. Contiene múltiples NWC + Search Sets + Clash Tests | | **NWF** | Archivo de sesión. Referencias a NWC/NWD + configuración de usuario | ### Flujo de federación ``` Revit ARQ → exportar ARQ.nwc Revit EST → exportar EST.nwc Revit MEP-E → exportar MEP-E.nwc Revit MEP-S → exportar MEP-S.nwc Revit MEP-HVAC → exportar MEP-HVAC.nwc Navisworks Manage: → Append todos los NWC → Configurar Search Sets por disciplina → Crear Clash Tests por par → Ejecutar → Revisar → Clasificar → Exportar BCF/HTML → Guardar como PROYECTO.nwd ``` ### Navisworks API (COM) para automatizar clash reports ```python import win32com.client nw = win32com.client.Dispatch("Navisworks.Automation") nw.OpenFile(r"C:\BIM\Proyecto\federado.nwd") doc = nw.Document clash = doc.GetClash() tests = clash.Tests for i in range(tests.Count): test = tests.Item(i) print(f"Test: {test.DisplayName}") print(f" Clashes: {test.Results.Count}") print(f" Estado: {'Activo' if test.Enabled else 'Deshabilitado'}") for j in range(test.Results.Count): result = test.Results.Item(j) print(f" Clash {j+1}: {result.Status} | " f"Item A: {result.Item1.DisplayName} | " f"Item B: {result.Item2.DisplayName}") # Exportar reporte HTML clash.ExportReport( r"C:\BIM\Reportes\clash_report.html", "HTML" ) nw.Dispose() ``` ### Automatizar clash test con parámetros ```python import win32com.client nw = win32com.client.Dispatch("Navisworks.Automation") nw.OpenFile(r"C:\BIM\federado.nwd") doc = nw.Document clash_module = doc.GetClash() # Crear nuevo clash test new_test = clash_module.Tests.Add() new_test.DisplayName = "EST vs MEP-Sanitario" new_test.TestType = 0 # Hard clash new_test.Tolerance = 0.025 # 25mm # Configurar Selection A (Estructura) y B (MEP-S) # ... (requiere Search Sets pre-configurados) # Ejecutar clash_module.RunTests() # Exportar resultados for i in range(clash_module.Tests.Count): test = clash_module.Tests.Item(i) if test.Results.Count > 0: test.ExportResults( f"C:\\BIM\\Reportes\\{test.DisplayName}.xml", "XML" ) nw.Dispose() ``` ## IFC Federation con IfcOpenShell Cuando no se dispone de Navisworks, se puede federar y analizar modelos IFC con herramientas open source. ### Federar modelos IFC ```python import ifcopenshell # Cargar modelos por disciplina arq = ifcopenshell.open("arquitectura.ifc") est = ifcopenshell.open("estructura.ifc") mep = ifcopenshell.open("mep.ifc") # Análisis cruzado: elementos por tipo en cada modelo models = {"ARQ": arq, "EST": est, "MEP": mep} for name, model in models.items(): products = model.by_type("IfcProduct") print(f"{name}: {len(products)} elementos") ``` ### Clash detection con ifcclash ```python from ifcclash import ifcclash settings = ifcclash.IfcClashSettings() settings.output = "clash_results.json" clasher = ifcclash.IfcClash(settings) clasher.add_group("Estructura", "estructura.ifc") clasher.add_group("MEP", "mep.ifc") clasher.clash() clasher.export() # Leer resultados import json with open("clash_results.json") as f: clashes = json.load(f) print(f"Interferencias detectadas: {len(clashes)}") for c in clashes[:5]: print(f" {c['a_name']} vs {c['b_name']} | Distancia: {c['distance']:.3f}m") ``` ## Herramientas de coordinación BIM | Herramienta | Función | Licencia | |-------------|---------|----------| | **Navisworks Manage** | Federación + Clash Detection + TimeLiner | Comercial (Autodesk) | | **Navisworks Simulate** | Viewer + TimeLiner (sin clash) | Comercial (Autodesk) | | **Autodesk Construction Cloud** | Model Coordination cloud | Comercial (Autodesk) | | **Trimble Connect** | Federación cloud + BCF | Freemium | | **BIMcollab** | Gestión BCF cloud | Freemium | | **Solibri** | Validación de reglas BIM | Comercial | | **IfcOpenShell (ifcclash)** | Clash detection open source | Open source | | **Speckle** | Federación cloud open source | Open source | ### ACC Model Coordination (cloud) ``` Autodesk Construction Cloud > Model Coordination: → Subir modelos Revit/NWC a la nube → Clash detection automático → Revisión en visor web → Crear issues desde clashes → Asignar a equipos → Tracking de resolución ``` ## Integración con `notion.upsert_task` para rastrear issues ```python # Crear issue de coordinación en Notion for clash in critical_clashes: await client.execute_task("notion.upsert_task", { "title": f"Clash: {clash['a_name']} vs {clash['b_name']}", "description": ( f"Interferencia detectada entre {clash['a_discipline']} y " f"{clash['b_discipline']}.\n" f"Distancia: {clash['distance']:.3f}m\n" f"Ubicación: Nivel {clash['level']}, Eje {clash['grid']}\n" f"Prioridad: {'Alta' if clash['distance'] < 0 else 'Media'}" ), "status": "open", "assigned_to": clash["responsible_team"] }) ``` ## Integración con `linear.create_issue` para escalamiento ```python # Escalar clashes críticos a Linear critical = [c for c in clashes if c["severity"] == "critical"] if critical: await client.execute_task("linear.create_issue", { "title": f"[BIM] {len(critical)} clashes críticos en Ronda {round_number}", "description": ( f"Se detectaron {len(critical)} interferencias críticas en la " f"ronda de coordinación #{round_number}.\n\n" + "\n".join( f"- {c['a_name']} vs {c['b_name']} ({c['a_discipline']}/{c['b_discipline']})" for c in critical[:10] ) + (f"\n... y {len(critical)-10} más" if len(critical) > 10 else "") ), "team": "BIM", "priority": "urgent", "labels": ["clash-detection", "coordination"] }) ``` ## Reporte de coordinación semanal ### Estructura del reporte ``` 1. Resumen ejecutivo - Total de clashes por ronda - Clashes resueltos vs. nuevos vs. pendientes - Tendencia (gráfico) 2. Detalle por par de disciplinas - ARQ vs EST: X clashes (Y nuevos, Z resueltos) - EST vs MEP-E: ... - EST vs MEP-S: ... 3. Clashes críticos (top 10) - Descripción, ubicación, responsable, fecha límite 4. Acciones requeridas - Por equipo de diseño 5. Próxima sesión de coordinación - Fecha, participantes, agenda ``` ### Generar reporte con datos ```python import json from datetime import datetime def coordination_report(clashes: list, round_num: int) -> str: total = len(clashes) critical = sum(1 for c in clashes if c["severity"] == "critical") resolved = sum(1 for c in clashes if c["status"] == "resolved") new = sum(1 for c in clashes if c["status"] == "new") pending = total - resolved - new by_pair = {} for c in clashes: pair = f"{c['a_discipline']} vs {c['b_discipline']}" by_pair.setdefault(pair, []).append(c) report = f"""# Reporte Coordinación BIM — Ronda {round_num} Fecha: {datetime.now().strftime('%Y-%m-%d')} ## Resumen - Total interferencias: {total} - Nuevas: {new} - Pendientes: {pending} - Resueltas: {resolved} - Críticas: {critical} ## Por disciplinas """ for pair, pair_clashes in sorted(by_pair.items()): report += f"- **{pair}**: {len(pair_clashes)} clashes\n" return report ``` ## Ejemplos de uso con Rick - **Rick: "Ejecutá el clash detection entre estructura y MEP"** → Navisworks COM API `RunTests()` o `ifcclash` open source. - **Rick: "Generá el reporte de coordinación de la ronda 5"** → `coordination_report()` + `notion.upsert_task` para issues. - **Rick: "Exportá los clashes a BCF para distribuir al equipo"** → Navisworks export BCF o generar BCF con Python. - **Rick: "Cuántos clashes nuevos hay respecto a la ronda anterior?"** → Comparar JSON de rondas con diff. - **Rick: "Escalá los clashes críticos a Linear"** → `linear.create_issue` con resumen de interferencias.
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看