Skip to content

Coupes / Phasage / Analyses

En une phrase : 5 tools pour automatiser les opérations transversales — séries de coupes, gestion des phases (rénovation), analyses de surfaces. Difficulté : moyenne Vagues regroupées (5, 6 et 7) car peu de tools chacune.

Tools livrés

Vague 5 — Coupes

ToolCe que ça faitStatut
revit_create_sections_along_gridCrée N coupes parallèles régulièrement espacées Livré
revit_create_interior_elevations_by_roomÉlévations intérieures auto par pièce Reporté (vague 5bis)
revit_create_callout_detailCallout zoom (vue de détail) sur zone Reporté (vague 5bis)

Vague 6 — Phasage

ToolCe que ça faitStatut
revit_set_element_phaseChange la Phase Created d'un élément Livré
revit_mark_for_demolitionMarque une liste d'éléments à démolir Livré
revit_create_phase_filterCrée un PhaseFilter custom Reporté (API complexe)

Vague 7 — Analyses

ToolCe que ça faitStatut
revit_compute_gross_floor_areaSurface utile brute par étage (somme Rooms) Livré
revit_compute_envelope_surfaceSurface façades + toits Livré
revit_check_pmr_complianceVérification PMR (slope ramp, door clear width…) Reporté (règles métier multiples)

Exemples d'usage

Série de coupes le long d'un axe

« Crée 6 coupes parallèles le long de la rue principale (axe X), une tous les 5m »

bash
POST /tool-call
{
  "tool": "revit_create_sections_along_grid",
  "params": {
    "axis_start_x_mm": 0,
    "axis_start_y_mm": 10000,
    "axis_end_x_mm": 30000,
    "axis_end_y_mm": 10000,
    "step_mm": 5000,
    "section_width_mm": 20000,
    "top_z_mm": 30000,
    "bottom_z_mm": -2000,
    "far_clip_mm": 5000,
    "name_prefix": "AA"
  }
}

Retour : 7 coupes créées (0m, 5m, 10m, 15m, 20m, 25m, 30m), nommées AA 01AA 07.

Marquer pour démolition

« Marque ces 12 murs comme démolis (rénovation lot existant) »

bash
{
  "tool": "revit_mark_for_demolition",
  "params": {
    "element_ids": ["123", "456", "789", ...],
    "demo_phase_name": "Démolition"   // par défaut : dernière phase du projet
  }
}

Changer la phase d'un élément

bash
{
  "tool": "revit_set_element_phase",
  "params": {
    "element_id": "123",
    "phase_name": "Existant"
  }
}

Si la phase n'existe pas, le tool retourne la liste des phases disponibles.

Surface utile par étage

« Donne-moi la surface utile par étage »

bash
{ "tool": "revit_compute_gross_floor_area", "params": {} }

Retour :

json
{
  "total_rooms": 184,
  "levels_count": 4,
  "total_gross_area_m2": 1234.56,
  "by_level": [
    { "level_name": "L1", "rooms_count": 52, "area_m2": 387.45 },
    { "level_name": "L2", "rooms_count": 48, "area_m2": 365.12 },
    ...
  ]
}

Surface enveloppe (façades + toits)

« Quelle est la surface d'enveloppe du bâtiment ? »

bash
{ "tool": "revit_compute_envelope_surface", "params": {} }

Retour :

json
{
  "walls_exterior_count": 24,
  "walls_total_count": 1116,
  "walls_area_m2": 856.34,
  "roofs_count": 5,
  "roofs_area_m2": 412.78,
  "envelope_total_m2": 1269.12
}

Détails techniques

create_sections_along_grid

  • Vecteur axe axisVec = end - start, perpendiculaire perpDir = axisVec × Z
  • Boucle distance ∈ [0, axisLen] step step_mm → centre de chaque section
  • Transform orthonormal : BasisX = perpDir (largeur), BasisY = Z (hauteur), BasisZ = axisDir (regard)
  • Nommage automatique {name_prefix} {idx:00} (résistant aux conflits Revit)

set_element_phase / mark_for_demolition

  • API : element.get_Parameter(BuiltInParameter.PHASE_CREATED).Set(phaseId) (ou PHASE_DEMOLISHED)
  • Skip silencieux si le paramètre est read-only (certaines familles annotation, levels)
  • Si pas de phase trouvée par nom, retourne available_phases[] pour aider

compute_gross_floor_area

  • Source : FilteredElementCollector + OST_Rooms puis WhereElementIsNotElementType
  • Filtre : skip les rooms area == 0 (non placées)
  • Groupement par Room.LevelId, conversion pieds² → m² (× 0.09290304)

compute_envelope_surface

  • Murs : Wall.WallType.Function == WallFunction.Exterior (skip cloisons intérieures)
  • Toits : tous les RoofBase (pas de filtre orientation — un toit-terrasse est inclus)
  • Surface lue via BuiltInParameter.HOST_AREA_COMPUTED

Limitations connues

  • create_sections_along_grid : génère bien les vues mais ne crée PAS l'annotation "section line" visible dans la vue parent — Revit le fait normalement automatiquement
  • compute_envelope_surface : pas de filtre orientation des toits (un toit-terrasse plat est compté comme façade enveloppe). Pour distinguer toiture inclinée vs plate, filtre custom à ajouter
  • Phases : nécessite que les phases (Existant, Projet, Démolition…) soient préalablement créées via Manage > Phasing
  • gross_floor_area = somme brute des rooms placées. Pour distinguer SHON vs SHOB vs surface utile selon RT, filtres custom par paramètre Department ou code occupation à ajouter

Reportés (vagues 5bis, 6bis, 7bis)

  • create_interior_elevations_by_room : détecter l'orientation des 4 murs principaux de chaque pièce, créer 4 élévations intérieures (N/S/E/O) avec bounding box cadré sur la pièce. Complexité API : moyenne-haute.
  • create_callout_detail : créer une ViewSection de type Detail zoomée sur une zone du parent. API existe (ViewSection.CreateCallout) — à valider sur les types de vue cibles.
  • create_phase_filter : PhaseFilter.Create(doc, name) + définir l'affichage par phase (New/Existing/Demolished/Temporary × visibilité). API peu documentée, à creuser.
  • check_pmr_compliance : règles métier ERP. Cas typiques à check :
    • largeur passage portes ≥ 90 cm
    • pente rampes ≤ 5 %
    • palier ≥ 1,20 × 1,20 m devant chaque porte
    • largeur couloirs ≥ 1,40 m
    • revenir avec template/règles 91STUDIO pour scope précis

Public cible : utilisateurs et utilisatrices, agents IA (Claude) Dernière vérification : 2026-05-16 (vagues 5-7 livrées à 03:25, 5 tools propres + 4 reportés documentés)

Plugin propriétaire — équipe 91STUDIO