Points-Élévation

Points en élévation
pour relevé de façades



Certes cette routine est dédiée aux géomètres
mais l'exemple peut servir à autre chose.

C'est une commande dans le menu de Covadis.,
je la livre ici car tout le monde peut en avoir besoin
et tout le monde n'a pas le logiciel métier installé ou à disposition,
je ne pense pas faire d'ombre à Géomédia
en tous cas ce n'est pas mon intention
car je respecte vraiment ces grands professionnels.

Principe :
Le relevé de points sur une façade se fait au théodolite (laser ou intersections), le résultat est un fichier de points.
Ces points sont dans le système de coordonnées général et quand ils sont insérés dans le dessin ils ne sont pas utilisables tout de suite car ils sont quasiment tous plaqués sur une ligne, ligne qui est l'alignement de la façade, comme ceci (très simplifié) :

et on veut obtenir ceci :

Ce qui correspond à la projection perpendiculaire de chaque points sur la ligne de direction de la façade, dans un système de coordonnées dont l'altitude (absolue) du point devient sa valeur Y dans le repère de l'alignement de la façade, j'espère être clair !.

comme ceci :

pour pouvoir dessiner ceci :

Le principe de base est admis ? voyons le principe du code :

- Choix d'une ligne de base (alignement de la façade)
- Si l'utilisateur n'a pas de ligne il peut choisir deux points en validant à vide au premier message.
- création d'un SCU correspondant à la ligne de base (ou deux points)
- Choix des points "topo"
- Parcours de la sélection des points en transformant les coordonnées du SCG dans le SCU de la ligne de base.
- Insertion d'un point "pt-facade" au point en X la perpendiculaire du SCG à la ligne de base, en Y la valeur de Z du point relevé (avec comme 0 (zéro) la ligne de base.
- Extraction du numéro de point topo pour le pt-facade et distance horizontale du point topo à la ligne de base comme valeur de saillie.

Ce que je nomme "saillie" est la position devant/derrière la ligne de base pour différencier les points de balcon en avancée, les points en retrait de la toiture...


Attention : le bloc "pt-facade" doit être défini dans le dessin en cours, je ne fais pas de test d'existence.
Ce bloc est un "point" avec deux attributs, num et saillie

 

Le code en image :


Le code en texte :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(defun c:pt-elev (/ oldosmode jeu p1 p2 entbase n dec blk xyz)
(setq oldosmode (getvar "osmode"))
(setvar "osmode" 0)
(setq entbase (car (entsel "\nChoix de la ligne de base (valider à vide pour donner une direction)\n")))
(if (not entbase)
   (progn
      (setq p1 (getpoint "\nPremier point de la façade\n")
            p2 (getpoint p1 "\nDirection de la façade\n")
      )
      (command "_line" p1 p2 "")
      (setq ligne (entlast))
      (command "_ucs" "ob" ligne)
   )
(command "_ucs" "ob" entbase)
)
;;======================================
(prompt "\Choix des points\n")
(setq jeu (ssget (list (cons 0 "INSERT") (cons 2 "TCPOINT")))) 
;;======================================
(setq n 0 dec 2)
(setq ech-ins (cdr(assoc 40 (entget (entnext (ssname jeu 0))))))
(repeat (sslength jeu)
   (setq blk (ssname jeu n))
   (setq xyz (trans (cdr (assoc 10 (entget blk))) 0 1))
   (command "_-insert"
            "pt-facade"
            (list (car xyz) (caddr xyz))
            ech-ins
            ""
            ""
            (cdr (assoc 1 (entget (entnext blk))))
            (rtos (* (cadr xyz)-1) 2 dec)
   ) ;_ Fin de command
(setq n (+ 1 n))
) ;_ Fin de repeat
(setvar "osmode" oldosmode)
) ;_ Fin de defun

 


Haut de Page

Retour vers Prog-Perso

le 17 mai 2019