Skip to content

Sélection avancée & tags smart

En une phrase : Auguste sélectionne tout ce qui matche un filtre + tague toutes les pièces / portes / fenêtres d'une vue d'un coup. Difficulté : facile Temps gagné : ~10-30 min par vue (vs taggage manuel ligne par ligne)

Les 8 tools de la vague 1

Sélection avancée (5 tools)

ToolCe que ça faitValidé
revit_select_by_filterSélectionne par catégorie + filtre param/op/valeur 169 fenêtres Snowdon en 2.2 s
revit_select_similarTous les éléments du même Type que le seed 32 fenêtres "50″ x 60″"
revit_save_selection_setCrée un SelectionFilterElement Revit native id 2579492
revit_list_selection_setsListe tous les sets sauvegardés 1 set listé
revit_load_selection_setRestaure une sélection sauvegardée 32 éléments chargés

Tags smart par catégorie (3 tools)

ToolCe que ça faitValidé
revit_place_room_tags_smartTague toutes les pièces de la vue (anti-doublon)À tester sur vue plan
revit_place_door_tags_smartTague toutes les portes (anti-doublon) 34 candidates, 1 placé, 33 anti-doublon
revit_place_window_tags_smartTague toutes les fenêtres (anti-doublon)À tester

Exemples d'usage

Sélection par filtre param/op/valeur

« Sélectionne toutes les portes du niveau L1 »

bash
POST /tool-call
{
  "tool": "revit_select_by_filter",
  "params": {
    "category": "OST_Doors",      // BuiltInCategory (ou nom EN/FR, ou "all")
    "parameter": "Niveau",         // nom du paramètre (FR/EN, champs racine virtuels OK)
    "operator": "contains",        // eq | neq | contains | starts_with | ends_with | gt | lt
    "value": "L1"
  }
}

Pas besoin de paramètre si on veut tous les éléments de la catégorie :

bash
{ "tool": "revit_select_by_filter", "params": { "category": "OST_Windows" } }
// 169 fenêtres

Opérateurs disponibles :

  • eq / neq — égalité stricte (case-insensitive)
  • contains / starts_with / ends_with — sous-chaîne
  • gt / lt — numérique d'abord, alphabétique en fallback

Champs racine virtuels (pas des Parameters Revit, traités spécialement) :

  • Type Name / Type — nom du type d'élément
  • Famille / Family — nom de famille
  • Catégorie / Category — nom de catégorie
  • Niveau / Level — nom de niveau

Sélection des éléments similaires

« Sélectionne tous les éléments du même type que cette fenêtre »

bash
{ "tool": "revit_select_similar", "params": { "seed_element_id": "824575" } }
// { count: 32, type_name: "50\" x 60\"", element_ids: [...] }

Sauvegarder / restaurer une sélection

bash
// Sauvegarder
{ "tool": "revit_save_selection_set",
  "params": { "name": "Fenetres etage 1", "element_ids": ["123","456",...] } }

// Lister
{ "tool": "revit_list_selection_sets" }
// [{ id: "2579492", name: "Fenetres etage 1", count: 32 }, ...]

// Restaurer (par nom ou par id)
{ "tool": "revit_load_selection_set", "params": { "name": "Fenetres etage 1" } }

Caractères interdits dans le nom : : ; { } [ ] | < > ? ` ~ (em dash). Revit rejette le name avec une exception explicite.

Taguer tout d'un coup

« Tague toutes les portes de cette vue »

bash
{ "tool": "revit_place_door_tags_smart" }
// { placed: 1, skipped: 33, candidates: 34 }

L'outil skip les éléments déjà tagués dans la vue active — on peut le rappeler plusieurs fois sans créer de doublons.

Détails techniques

Champs racine vs Parameters Revit

LookupParameter("Type Name") retourne null car « Type Name » n'est pas un Parameter Revit régulier — c'est une propriété de l'ElementType. Le helper ReadParamForFilter gère ces 4 champs racine virtuels en lisant directement ElementType.Name, ElementType.FamilyName, Element.Category.Name, Level.Name.

Sans ce helper, un filtre Type Name eq "F1 - 70x114" retournerait toujours 0 résultat. Détails dans handoff/lessons/feedback_revit_lookup_virtual_fields.md.

SelectionFilterElement Revit native

Les selection sets sont des éléments Revit standards — visibles dans la fenêtre Manage > Selection > Edit. Auguste utilise l'API native, donc les sets créés sont compatibles avec l'utilisation manuelle Revit (et vice-versa).

Anti-doublon des tags

Pour chaque tag de la vue active, on récupère IndependentTag.GetTaggedLocalElementIds() (ou RoomTag.Room.Id) — l'ensemble des éléments déjà tagués. On skip ceux-là à l'ajout.

Limitations

  • Performance sur gros doc : select_by_filter sans category ou avec category="all" itère tous les éléments du doc, peut prendre 30 s sur 50 000 elements. Toujours filtrer par catégorie quand possible.
  • Tags 3D : les tags sont créés 2D (annotation horizontale) — pas adapté pour les vues 3D pures. Utiliser uniquement sur les vues plan/coupe/élévation.
  • Position centroïde : le tag est placé au centroïde de la bbox de l'élément dans la vue. Pas de logique anti-collision avancée pour l'instant.

Public cible : utilisateurs et utilisatrices, agents IA (Claude) Dernière vérification : 2026-05-16 (Snowdon Towers, vague 1 validée à 02:56)

Plugin propriétaire — équipe 91STUDIO