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 d'ailleurs une commande d'un des menus de Covadis
je livre ici ma version 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 de visées), le résultat est un fichier de points en coordonnées caetésiennes.
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é) :
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 |
( defun c:pt-elev ( / oldosmode jeu p1 p2 entbase n dec blk xyz )
( setq oldosmode ( getvar "osmode" ))
( setvar "osmode" 0
dec 2 )
( 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" entbase ))
;======================================
( prompt "\nChoix des points\n" )
( setq jeu ( ssget ( list
( cons 0 "INSERT" )
( cons 2 "TCPOINT" )
) ; fin de list
) ; fin de ssget
) ; fin de setq
;======================================
( setq n 0 )
( 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 insertion du bloc avec attributs
( setq n ( + 1 n ))
) ;_ Fin de repeat
( setvar "osmode" oldosmode )
) ;_ Fin de defun
le 17 mai 2019