Comment gérer les points topographiques ayant des matricules identiques dans Covadis, en les renommant automatiquement ou en les mettant en évidence, tout en conservant tous les points ?
La gestion des points topographiques avec des matricules en doublon est une problématique courante. Covadis offre une fonctionnalité native pour la ré-immatriculation automatique, et il est également possible d’utiliser un script LISP pour une identification visuelle des doublons.
1. Ré-immatriculation automatique des doublons avec Covadis
Covadis permet de renommer automatiquement les points ayant le même matricule en leur ajoutant un préfixe, tout en conservant les points originaux.
- Accéder à la commande : Lancez la commande
COVADIS EDITION(ouCOV_EDITIONselon votre version), puis naviguez versPoints topo>Réimmatriculation. - Configurer la ré-immatriculation :
- Dans la boîte de dialogue, cochez l’option « Ajouter avant les radicaux ».
- Dans le champ de texte associé, entrez le radical que vous souhaitez ajouter, par exemple « D. » (pour Doublon).
- Exécuter la commande : Validez. Covadis va parcourir tous les points et, pour chaque matricule en doublon, il ajoutera le préfixe spécifié au matricule du point dupliqué. Par exemple, si vous avez deux points « 1 », l’un restera « 1 » et l’autre deviendra « D.1 ».
- Gestion des triplons et plus : Si vous avez trois points « 1 », la première exécution transformera l’un en « D.1 ». Si vous relancez la même commande, le troisième point « 1 » restant sera transformé en « DD.1 », et ainsi de suite.
2. Identification visuelle des doublons avec un script LISP
Pour visualiser rapidement les points en doublon et faciliter une ré-immatriculation manuelle ou un contrôle, un script LISP peut être très utile. Ce script dessine des cercles autour des points dupliqués et des lignes entre eux.
- Charger le LISP : Copiez le code LISP ci-dessous dans un fichier
.lsp(par exemple,ptdouble.lsp) et chargez-le dans AutoCAD via la commandeAPPLOAD. - Exécuter la commande : Tapez
PTDOUBLEsur la ligne de commande. - Analyse des résultats : Le script va créer un calque nommé « ptdouble » (couleur rouge par défaut) et y dessiner :
- Des cercles autour de chaque point ayant un matricule en doublon.
- Des lignes reliant les points ayant le même matricule.
- Si les points sont très proches (à 0.05 unité près), un seul cercle sera dessiné.
Ce LISP est particulièrement utile pour identifier visuellement les doublons, surtout si leurs coordonnées sont différentes, avant de procéder à leur ré-immatriculation (manuelle ou via la méthode Covadis décrite ci-dessus).
(defun c:ptdouble ()
(setvar "cmdecho" 0)
(command "_.undo" "_m")
(command "_ucs" "")
(setq lst nil)
(setq pl (ssget "x" (list (cons 8 "ptdouble"))))
(if (/= pl nil) (command "effacer" pl ""))
(setq ent (ssget "x" (list '(-4 . "<OR") (cons 2 "tcpoint") (cons 2 "topojis") '(-4 . "OR>"))))
(if (= ent nil) (exit))
(setq nb (sslength ent))
(setq nb1 0)
(while (< nb1 nb)
(setq ent2 (ssname ent nb1))
(setq ins (cdr (assoc 10 (entget ent2))))
(setq matr (cdr (assoc 1 (entget (entnext ent2)))))
(setq pt (cons matr ins))
(setq lst (cons pt lst))
(setq nb1 (+ nb1 1))
)
;ordre croissant suivant premiere entite
(setq lst (vl-sort lst
(function
(lambda (e1 e2) (< (car e1) (car e2))))))
;
(setq nb1 0)
(while (< nb1 nb)
(setq mat1 (car (nth nb1 lst)))
(setq mat2 (car (nth (+ nb1 1) lst)))
(setq ins1 (cdr (nth nb1 lst)))
(setq ins2 (cdr (nth (+ nb1 1) lst)))
(if (= mat1 mat2) (progn
(command "_-layer" "_m" "ptdouble" "_co" "1" "" "")
(if (equal ins1 ins2 0.05)
(command "_circle" ins1 "5")
(progn
(command "_circle" ins1 "10")
(command "_circle" ins2 "10")
(command "_line" ins1 ins2 ""))
)
))
(setq nb1 (+ nb1 1))
)
(setq cer (ssget "x" (list (cons 0 "CIRCLE") (cons 8 "ptdouble"))))
(if (/= cer nil) (setq nb (sslength cer)) (setq nb 0))
(setq lin (ssget "x" (list (cons 0 "LINE") (cons 8 "ptdouble"))))
(if (/= lin nil) (setq nb1 (sslength lin)) (setq nb1 0))
(command "_ucs" "_p")
(if (and (tblsearch "LAYER" "ptdouble") (not cer) (not lin)) (progn
(command "_-layer" "_s" "0" "")
(command "_-purge" "_la" "ptdouble" "_n")
))
(print)
(princ nb)
(princ " cercles ptdouble et ")
(princ nb1)
(princ " lignes ptdouble")
(print)
)