Skip to content

Site avancé — terrassement, profil topo, géoréférencement

En une phrase : Auguste calcule les volumes de remblai/déblai, crée des coupes en travers du terrain, cale le projet sur les coordonnées Lambert93 et pose les plateformes RDC en un appel. Difficulté : moyenne (paramètres géométriques) Temps gagné : ~30 min par opération (vs setup manuel)

Les 4 tools de la vague 3

ToolCe que ça fait
revit_compute_cut_fillDifférence de volume entre 2 Toposolids → remblai/déblai net
revit_create_topo_profileCrée une vue Section coupant la topo entre 2 points A↔B
revit_set_base_point_to_surveyCale le SurveyPoint à des coordonnées géographiques (Lambert93, RGF93, WGS84…)
revit_create_pad_smartCrée un BuildingPad (plateforme) à partir d'un polygone XY + niveau cible

Exemples d'usage

Calculer remblai/déblai

« Calcule le volume entre la topo existante (id 12345) et la topo projetée (id 67890) »

bash
POST /tool-call
{
  "tool": "revit_compute_cut_fill",
  "params": {
    "topo_a_id": "12345",     // état initial (TN existant)
    "topo_b_id": "67890"      // état projeté (après terrassement)
  }
}

Retour :

json
{
  "topo_a_volume_m3": 1234.56,
  "topo_b_volume_m3": 1456.78,
  "delta_m3": 222.22,
  "interpretation": "Remblai net"
}

Calcul simplifié : lit le paramètre Volume natif Revit. Pour une analyse cut/fill géométrique précise (zones distinctes de remblai/déblai), utiliser la fonction native Revit Modifier > Surface > Région graduée, puis lire le résultat avec ce tool.

Créer une coupe topographique

« Coupe la topo le long de la ligne (0,0) → (50000mm, 30000mm) en élévation »

bash
{
  "tool": "revit_create_topo_profile",
  "params": {
    "start_x_mm": 0,
    "start_y_mm": 0,
    "end_x_mm": 50000,
    "end_y_mm": 30000,
    "bottom_z_mm": -5000,    // base de la coupe (sous le niveau 0)
    "top_z_mm": 30000,        // haut de la coupe
    "far_clip_mm": 10000,     // profondeur de la vue (perpendiculaire au plan)
    "view_name": "Coupe AA' topo"
  }
}

Retour :

json
{
  "section_view_id": "2580001",
  "section_view_name": "Coupe AA' topo",
  "length_m": 58.31
}

La vue créée est navigable comme n'importe quelle Section Revit. Vous pouvez la dupliquer, l'annoter, la coter via les tools de la vague 2.

Caler le projet sur Lambert93

« Place le point géographique au Lambert93 E=550000, N=6700000, élévation 12.5m »

bash
{
  "tool": "revit_set_base_point_to_survey",
  "params": {
    "easting_mm": 550000000,        // E en mm (= 550 000 m × 1000)
    "northing_mm": 6700000000,      // N en mm
    "elevation_mm": 12500,           // altitude NGF
    "angle_to_true_north_deg": 0     // rotation du modèle vs nord vrai
  }
}

Le projet de coordonnées doit avoir été préalablement configuré dans Manage > Project Location > Site (sinon Revit utilise des unités projet internes).

Plateforme RDC depuis polygone

« Crée une plateforme rectangulaire de 20×15m au niveau RDC sur la topo »

bash
{
  "tool": "revit_create_pad_smart",
  "params": {
    "level_id": "456",
    "boundary_xy_mm": [
      [0, 0],
      [20000, 0],
      [20000, 15000],
      [0, 15000]
    ]
  }
}

Le pad est creusé/comblé jusqu'à l'élévation du niveau cible. Si la topo active est en dessous → comblement. Au-dessus → creusement.

Détails techniques

compute_cut_fill

  • Lit BuiltInParameter.HOST_VOLUME_COMPUTED (fallback LookupParameter("Volume"))
  • Conversion pieds³ → m³ : facteur 0.028316846592
  • Pas d'analyse géométrique d'intersection — pour ça, utiliser Graded Region côté UI

create_topo_profile

  • Trouve automatiquement le premier ViewFamilyType de type Section dans le projet
  • Calcule un Transform orthonormal : direction A→B, vertical Z, perpendiculaire = sens de regard
  • Crée le BoundingBoxXYZ correspondant + ViewSection.CreateSection
  • far_clip_mm : profondeur de la vue perpendiculaire au plan de coupe (épaisseur de la "tranche")

set_base_point_to_survey

  • Modifie doc.ActiveProjectLocation.SetProjectPosition(XYZ.Zero, position)
  • XYZ.Zero = point projet (origine du modèle Revit) cale aux coordonnées géo
  • L'angle est en radians (le wrapper accepte degrés et convertit)
  • Affecte tout le modèle : tous les éléments translatent avec le SurveyPoint

create_pad_smart

  • BuildingPad.Create(doc, padTypeId, levelId, curveLoops) — API native
  • CurveLoop fermée : automatiquement bouclée via points[i] → points[(i+1) % count]
  • Skip les doublons consécutifs (distance < 1mm)
  • Doit y avoir une topographie active pour que le pad soit attaché — sinon Revit crée le pad mais il flotte.

Limitations connues

  • Cut/fill géométrique précis : Graded Region (API non stable Revit 2024) — workaround = utiliser la UI + relire le volume résultat avec ce tool
  • Coupes inclinées : create_topo_profile génère une Section verticale (bottom_z → top_z). Pour une coupe inclinée (rampe / falaise), utiliser revit_create_section direct
  • Géoréférencement : Lambert93 nécessite que SiteLocation du projet utilise un Coordinate System Lambert93 (sinon les coords seront stockées en système interne)

Public cible : utilisateurs et utilisatrices, agents IA (Claude) Dernière vérification : 2026-05-16 (vague 3 livrée à 03:05)

Plugin propriétaire — équipe 91STUDIO