Créer une grille cotée sur un maillage phototexturé

Créer une grille de points sur un maillage phototexturé issu de ContextCapture

Nous analyserons ici les étapes à suivre pour créer une grille de points sur un maillage phototexturé. Ce dernier est issu d’une modélisation photogrammétrique réalisée à l’aide de ContextCapture.

Comment faire ?

La première étape consistera à créer un contour qui nous servira de délimitation. Nous allons ensuite mesurer la longueur et la largeur de ce contour suivant l’orientation générale du maillage phototexturé.

Nous placerons ensuite une cellule assez simple (une petit croix). Veillez à ce que cette cellule soit placée à une altitude aisément identifiable : 700m dans mon exemple. Utiliser pour cela la commande de spécification du Z actif : AZ=700, ainsi le verrou d’accrochage au plan SCA.

Nous utiliserons ensuite l’outil de copie en tableau et nous spécifierons l’inclinaison générale de notre grille, le nombre de colonnes et de rangées, l’espacement entre les colonnes et les rangées. Nous obtiendrons une grille rectangulaire. En comparaison avec le contour défini précédemment, des points sont à l’intérieur, d’autre à l’extérieur.

Nous allons maintenant utiliser la fonction de clôture afin de retirer les points se trouvant hors du contour et qui ne nous intéressent pas et supprimons l’élément ayant servi de contour.

Sélectionnons maintenant l’ensemble des points. A l’aide de l’outil “Drape éléments” du groupe d’outils “Reality Modeling” déplaçons les éléments verticalement jusqu’au contact avec le maillage phototexturé.

Il ne nous reste plus qu’à écrire une toute petite macro pour générer les textes représentant l’altitude de chacun de points. Attention que dans cette macro les textes sont créés avec les paramètres actifs (taille, police,…)

Code de la macro

Sub Altitudes()
   Dim ee As ElementEnumerator
   Dim sc As New ElementScanCriteria

   sc.ExcludeAllTypes
   sc.IncludeType msdElementTypeCellHeader  (1)

   Set ee = Application.ActiveModelReference.Scan(sc)   (2)

   Do While ee.MoveNext
      Dim elTxt As TextElement

      If ee.Current.AsCellElement.Origin.Z <> 700 Then  (3)
         Set elTxt = CreateTextElement1(Nothing, _
                                        Str(Format(ee.Current.AsCellElement.Origin.Z, ".00")), _
                                        ee.Current.AsCellElement.Origin, _
                                        Matrix3dIdentity)  (4)
         Application.ActiveModelReference.AddElement elTxt
      End If
   Loop

End Sub
Explication du code

La ligne de code notée (1) permet de n’analyser que les éléments de type cellule. Ceci permet de ne pas devoir réaliser un filtrage ultérieur.

La ligne notée (2) exécute le scan, l’analyse des éléments du fichier en respectant les critères énoncés en (1).

Entre le “Do” et le “Loop“, l’ensemble des instructions est exécuté pour chacun des éléments satisfaisant aux critères.

La ligne notée (3) vérifie qu’il ne s’agit pas des points initiaux. Dans mon exemple je les ai conservé, ce n’est pas obligatoire.

La ligne notée (4) et la suivante crée un élément de type “texte” et l’ajoute aux éléments du modèle actif du fichier de dessin.

Présentation en vidéo

Pour faciliter la compréhension de la technique, vous pouvez visionner la vidé suivante :

 

À propos de l’auteur

Philippe HALET administrator