Aller au contenu

Modifier des points 2D en 3D


CLOTHO

Messages recommandés

Bonjour,

 

J'ai reçu un fichier avec des points 2D (entités points) et des textes qui devrait être des attributs de blocs.

Le but est de convertir les points 2D en 3D avec comme Z la côte mentionnée dans le texte à côté (le plus proche).

 

Tous les logiciels de conception routière sont capable de le faire si c'étaient des attributs de blocs.

Je me demande s'il y a un lisp qui le fait?

 

Je joins un extrait du fichier autocad.

Merci de vos réponses.

Points 2D.zip

Autopiste & Covadis V14 - Mensura V7 - Autocad Civil3D 2013

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Eh oui ! tu es tombé sur quelqu'un qui pourrit bien son fichier avant de le livrer, c'est souvent le cas chez certaines professions dont une a le siège de son ordre 40 avenue Hoche en particulier !!!

 

Les solutions sont bancales car tu n'as pas les points en 3D (ils auraient pû oublier de descendre les points en les décomposant) donc il va falloir travailler à la pince à épiler puisque dans ton cas ils ont poussé le vice à déplacer le texte par rapport au point ce qui ne permet pas facilement de lier texte et point.

 

J'ai fait (dans le temps) un lisp qui permettait de cliquer texte puis point et d'en faire un bloc en 3D avec le Z en valeur attributaire.

Covadis le permet aussi mais comme les écarts (texte et point) ne sont pas constants le résultat sera erratique.

 

Dernière solution, téléphoner à l'auteur, prendre une voix douce et lui demander le fichier natif, ou un listing des points par exemple.

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

@didier, Cette commande Covadis a pas mal évolué. Une fois la commande lancée, le résultat s'affiche dans un dialogue avec un code couleur indiquant si autour du point 0, 1 ou plus d'un texte ont été trouvés, en cliquant sur chaque ligne de la grille (chaque point), ça zoome sur le point avec la matérialisation du rayon de recherche et l'indication de la valeur trouvée. Si ce n'est pas le bon texte qui a été trouvé, il suffit de cliquer sur l'icône du choix pour sélectionner le bon texte à récupérer.

C'est bien un traitement à la pince à épiler, mais quand même un peu plus automatique et qui permet de garder le contrôle total de ce que fait la machine si l'utilisateur le souhaite vraiment.

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Merci de rendre à Géomédia ce qui appartient à Géomédia et de me remettre dans le droit chemin par la même occasion.

Sache que je ne dis pas de mal de ce progiciel.

 

Il est vrai que je n'ai plus utilisé cette commande depuis des lustres n'ayant que très rarement à travailler avec des fichiers provenant de l'extérieur, j'ai mes topos sous la main et je traite directement les fichiers.

 

À l'occasion j'irai voir les évolutions de cette commande pour ne plus fourvoyer les gens avec mes réponses.

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

en plus le fichier a des unités en pieds...

J'ai traité le fichier avec ce lisp, en changeant au préalable les unités en mètres et en rajoutant un bloc qui s'appelle TopoPoint qui contient 3 attributs : le matricule, l'altitude et le code symbole

 

(defun c:pt2d3d ()
 (setvar "CLAYER" "17-TOPOALT")
 (setq sspt (ssget "_X" '((0 . "POINT"))))
 (setq sstx (ssget "_X" '((0 . "TEXT") (8 . "17-TOPOALT"))))

 (setq I 0)
 (repeat (sslength sspt)
   (setq PT (ssname sspt I))
   (setq I (1+ I))
   (setq PTINS (cdr (assoc 10 (entget PT))))
   (setq lstd nil)
   (setq J 0)
   (repeat (sslength sstx)
     (setq TX (ssname sstx J))
     (setq J (1+ J))
     (if
       (and 
         (assoc 11 (entget TX))
         (not (equal (cdr (assoc 11 (entget TX))) '(0.0 0.0 0.0) 0.0001))
       )
       (setq TXINS (cdr (assoc 11 (entget TX))))  ;; le point d'alignement s'il existe et non à (0 0 0)
       (setq TXINS (cdr (assoc 10 (entget TX))))  ;; sinon le point d'insertion
     )
     (setq lstd (cons (list TX (distance PTINS TXINS)) lstd))
   )
   (setq TX (caar (vl-sort lstd '(lambda (e1 e2) (< (cadr e1) (cadr e2))))))
   (setq ZVAL (distof (cdr (assoc 1 (entget TX)))))
   (setq XVAL (cadr (assoc 10 (entget pt))))
   (setq YVAL (caddr (assoc 10 (entget pt))))
   (setvar "attreq" 1)
   (setq MATRICULE "")
   (setq CodeSymbole "")
   (command "_insert" "TopoPoint" "_non" (trans (list xval yval zval) 0 1) 1 1 0 MATRICULE (cdr (assoc 1 (entget TX))) CodeSymbole)
 )
 (princ)
)

 

En pièce jointe le résultat

 

Amicalement

Vincent

 

PS : le nombre de points est relativement petit dans ce cas. Pour un fichier plus gros, avec un nombre de points plus grand, il aurait fallu restreindre le ssget '((0 . "TEXT")) à une zone en périphérie de chaque point étudié, plutôt que de prendre tous les textes d'altitude présents dans le fichier

Points 3D.zip

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité