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
| Tool | Ce que ça fait |
|---|---|
revit_compute_cut_fill | Différence de volume entre 2 Toposolids → remblai/déblai net |
revit_create_topo_profile | Crée une vue Section coupant la topo entre 2 points A↔B |
revit_set_base_point_to_survey | Cale le SurveyPoint à des coordonnées géographiques (Lambert93, RGF93, WGS84…) |
revit_create_pad_smart | Cré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) »
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 :
{
"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 »
{
"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 :
{
"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 »
{
"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 »
{
"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(fallbackLookupParameter("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
ViewFamilyTypede typeSectiondans le projet - Calcule un
Transformorthonormal : direction A→B, vertical Z, perpendiculaire = sens de regard - Crée le
BoundingBoxXYZcorrespondant +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 toolCoupes inclinées :
create_topo_profilegénère une Section verticale (bottom_z → top_z). Pour une coupe inclinée (rampe / falaise), utiliserrevit_create_sectiondirectGéoréférencement : Lambert93 nécessite que
SiteLocationdu 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)