Aller au contenu

Attribut ALT to Z


Messages recommandés

Posté(e)

Bonjour, déjà.

Merci aussi, depuis un certain temps je croise les mêmes noms répondants indirectement à mes recherches et questionnement, mais aujourd'hui j'arrive parmi vous pour un problème sans solution.

 

 

Grosso modo, j'ai des points topo non TCPOINT mais correctement construit (Attribut Altitude et Matricule), . Avec un Z 0 et un attribut Altitude correct.

Le but est de rajouter ces points à un MNT.

 

 

Seul soucis, "ALT" est nommé "Altitude".

De là, impossible de basculer ALT en Z point.

J'ai tenté de changer le bloc directement en TCPOINT mais 1. je conserve les attributs et le problème reste le même. 2. je ne conserve pas les attributs et de fait, je n'ai plus d'attributs à passer en Z.

 

J'ai tenté d'utilisé BATTMAN, mais mon point topot (PiquéPoint) n’apparaît pas dans la liste..

 

J'ai moyennement envie de refaire les 500pts à la main, donc j'espère que l'explication est assez clair, et que vous saurez m'aider ...

 

 

Cordialement,

 

Narss.

Posté(e)

Bonjour,

 

Le plus simple avec l'outil d'extraction de données, exporter tout les points topo en fichier CSV en sélectionnant les 2 attributs MATRICULE et ALTITUDE, ainsi que les PositionX et Position Y (catégorie Géométrie); puis recharger un semis de point à partir de ce fichier.

 

Sinon, il faut ajouter la définition des attributs dans le bloc (via éditeur de bloc et ATTDEF), puis utiliser CovEdition/Attributs/Renommer pour leur donner les bons noms : MAT ou NUMERO pour le matricule, et ALT ou Z pour l'altitude. L'ordre des attributs n'a pas d'importance.

 

Olivier

Posté(e)

C[/b][/size]'est modifiable par [/color]BATTMAN mais ne pas oublier de synchroniser...

 

 

Sur le papier on est bon mais mon point ne veux pas apparaître (post synchro) dans la liste ..

 

Le plus simple avec l'outil d'extraction de données, exporter tout les points topo en fichier CSV en sélectionnant les 2 attributs MATRICULE et ALTITUDE, ainsi que les PositionX et Position Y (catégorie Géométrie); puis recharger un semis de point à partir de ce fichier.

 

Sinon, il faut ajouter la définition des attributs dans le bloc (via éditeur de bloc et ATTDEF), puis utiliser CovEdition/Attributs/Renommer pour leur donner les bons noms : MAT ou NUMERO pour le matricule, et ALT ou Z pour l'altitude. L'ordre des attributs n'a pas d'importance.

 

 

Je testerais la prochaine fois, je ne pense pas assez à passez par les extractions.

 

Au final j'ai "BURST" mes points et j'ai "Affecter Z selon texte".

Solution bancale, mais dans le cas de points existants qui ne bougerons plus. Ca ira bien ..

 

Merci à tous !

Posté(e)

Au final j'ai "BURST" mes points et j'ai "Affecter Z selon texte".

Solution bancale, mais dans le cas de points existants qui ne bougerons plus. Ca ira bien ..

 

 

 

Salut,

 

ATTENTION ! Effectivement solution bancale, car si j'ai bien compris ta manip, tes points topo se retrouvent insérés par le point d'insertion du texte et non plus du point levé, et suivant la "construction" des points topo cela peut engendrer des écarts qui peuvent avoir une réelle incidence sur le terrain. Comme tu l'écris à manipuler avec précaution et en connaissance de cause.

 

Bon courage !wink.gif

COME

 

La vie sans musique est tout simplement une erreur, une fatigue, un exil. »

Friedrich Nietzsche

Posté(e)

Hello

 

Si tu n'as pas Covadis , tu peux utiliser l'excellente routine ALTZ de Patrick_35 !

 

Tu zoomes sur le Bloc VOULU et tu CLIC sur l'attribut VOULU ...

Et HOP TOUS les Blocs montent en Z au contenu de la valeur numerique de l'attribut clique !

 

LA SANTE, Bonne Annee, Bye, lecrabe

 


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
;; 
;; Routine:  ALTZ  par P35 vs 1.00 
;;
;; Monter en Z (Elevation/Altitude) TOUS les Blocs (Meme Nom) correspondant  
;; a l'attribut (Elevation/Altitude) clique/selectionne
;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 

(defun c:ALTZ (/ att bas doc ent lst pos pts sel nombl) 

; Ici, on a une une fonction qui donne le nom du bloc, même ceux qui sont dynamiques. 
; car si on regarde juste le nom du bloc dynamique, on a quelque chose dans ce style "*U304" 
; Donc, c'est la propriété effectivename qu'il faut regarder si elle existe. 

 (defun nombl(bl) 
   (if (vlax-property-available-p bl 'effectivename) 
     (vla-get-effectivename bl) 
     (vla-get-name bl) 
   ) 
 ) 

; Activation des fonctions activex 
 (vl-load-com) 

; On définit que l'on travail sur le document actif (le dessin actuel) 
 (setq doc (vla-get-activedocument (vlax-get-acad-object))) 

; On définit le début du undo, même style que (command "_.undo" "_group") 
 (vla-startundomark doc) 

; on fait un test avec la fonction And. 
; Un and à la particularité de tester le 1er argument, si c'est ok on passe au suivant, etc... 
; jusqu'à la fonction (ici le progn) 
; On sélectionne un sous-objet avec la fonction nentsel 
 (and  (setq ent (nentsel)) 
; On transforme la sélection en objet vla 
       (setq att (vlax-ename->vla-object (car ent))) 
; On regarde si c'est un attribut 
       (eq (vla-get-objectname att) "AcDbAttribute") 
; On détermine le père de l'attribut, c'est à dire le bloc qui contient ledit attribut sélectionné 
       (setq bas (vla-objectidtoobject (vla-get-database att) (vla-get-ownerid att)) 
; On recherche les attributs du bloc déterminé avant que l'on ajoute dans une liste 
             lst (vlax-invoke bas 'getattributes) 
; On calcul la position de l'attribut dans la liste définit auparavant 
             pos (- (length lst) (length (member att lst))) 
       ) 

; on fait une sélection dans tout le dessin avec comme arguments 
; que ce sont des blocs (cons 0 "insert") 
; que l'on recherche les blocs anonymes (cons 2 "`**") 
; que l'on recherche un bloc spécifique selon son nom (cons 2 (nombl bas)) 
; et que pour que le filtre fonctionne, on regroupe les différents noms (cons 2 (strcat "`**," (nombl bas))) 
; que l'on recherche des blocs avec attributs (cons 66 1) 
       (ssget "x" (list (cons 0 "insert") (cons 2 (strcat "`**," (nombl bas))) (cons 66 1))) 

   (progn 

; on fait une boucle de recherche (vlax-for = foreach mais pour du vla) 
; et sur la sélection active, donc de ssget (vla-get-activeselectionset doc) 
     (vlax-for ent (setq sel (vla-get-activeselectionset doc)) 
; Je vérifie que le bloc dans la boucle correspond bien au nom du bloc de base 
       (and (eq (nombl bas) (nombl ent)) 

         (progn 

; Je récupère le point d'insertion 
           (setq pts (vlax-get ent 'insertionpoint)) 

; il faut lire la ligne de code à l'envers, en fonction de ses imbrications 
; je regarde les attributs du bloc de ma boucle (vlax-invoke ent 'getattributes) 
; je prends l'attribut qui m'intéresse en fonction de sa position dans la liste 
; (nth pos (vlax-invoke ent 'getattributes)) 
; je récupère la valeur de l'attribut que je transforme en réel 
; (atof (vla-get-textstring (nth pos (vlax-invoke ent 'getattributes)))) 

; Je construis une liste de point 
; (list (car pts) (cadr pts) (atof (vla-get-textstring (nth pos (vlax-invoke ent 'getattributes))))) 

; que j'écris comme position du bloc dans la boucle de recherche 
           (vlax-put ent 'insertionpoint (list (car pts) (cadr pts) (atof (vla-get-textstring (nth pos (vlax-invoke ent 'getattributes)))))) 

         ) 

       ) 
     ) 

     (vla-delete sel) 
; J'efface le jeu de sélection. A faire systématiquement car sinon, a un moment donné, le lisp plantera à cause de lui 
; Pourquoi ? c'est la question à qui veux gagner des millions. 

   ) 

 ) 
; On définit la fin du undo, même style que (command "_.undo" "_end") 
 (vla-endundomark doc) 
; Silence 
 (princ) 
)

Autodesk Expert Elite Team

Posté(e)

Bonjour,

Si tu exploses ton point topo "PiquéPoint", quels sont les éléments que tu obtiens ?

(nom d'étiquette, d'attribut, calque)

Posté(e)

Rebonjour !

 

ATTENTION ! Effectivement solution bancale, car si j'ai bien compris ta manip, tes points topo se retrouvent insérés par le point d'insertion du texte et non plus du point levé, et suivant la "construction" des points topo cela peut engendrer des écarts qui peuvent avoir une réelle incidence sur le terrain. Comme tu l'écris à manipuler avec précaution et en connaissance de cause.

Bon courage !wink.gif

 

Dans le cas présent avec cette manip j'ai pu sélectionner les points et ce sont eux qui ont pris le Z indiqué par le texte le plus proche.

Je ne savais pas que le point pouvait devenir celui le point d'accroche du texte .. Ce n'est pas le cas ici mais je resterais vigilant au cazou..

 

Hello

Si tu n'as pas Covadis , tu peux utiliser l'excellente routine ALTZ de Patrick_35 !

 

j'ai COVADIS justement, dommage de passer par des moyens détourné dans ce cas .;

 

(Le légendaire Patrick_35. Un saint dans notre bureau..)

 

 

 

Bonjour,

Si tu exploses ton point topo "PiquéPoint", quels sont les éléments que tu obtiens ?

(nom d'étiquette, d'attribut, calque)

 

Je n'ai plus qu'un point.

Les attributs disparaissent.

Ci-après, une capture des propriétés du point non décomposé.

On voit clairement que l'attribut Altitude n'est pas ALT et pour moi, c'est la que ca coince pour la manip de base.

 

ATTRIBUTS PiquéPoints

 

Ca n'explique pas le fait que je ne puisse pas le voir via BATTMAN.

 

Merci,

Posté(e)

Bonjour,

 

Comme je l'ai dit, il est possible de s'en sortir avec AutoCAD et Covadis, mais si BATTMAN ne propose pas le bloc dans la liste, c'est que la définition "COURANTE" du bloc n'a pas d'attribut, donc:

1. Sélectionner un bloc du dessin, puis clic-droit / Editeur de bloc

2. Constater qu'il n'y a pas d'attribut, donc il faut les ajouter avec la commande DDATTDEF

2.1 Ajouter un premier attribut dont l'étiquette est MATRICULE

2.2 Ajouter un second attribut dont l'étiquette s'appelle ALTITUDE

3. Covadis Edition / Attibut / Renommer

3.1 sélectionner le nom du bloc

3.2 Sélectionner l'attribut MATRICULE

3.3 Saisir le nouveau nom d'étiquette => MAT

3.4 Valider par OK

4. Recommencer l'étape 3 pour renommer ALTITUDE en ALT

5. On dispose maintenant de point topo Covadis avec une définition de bloc point topo cohérente avec les blocs insérés dans le dessin.

 

Olivier

  • Upvote 1
Posté(e)

Merci Olivier !

 

 

Je viens d'essayer et ça marche très bien !

Même si je ne comprend pas pourquoi ce qui semble être des attributs dans la manipulation du point, n'en sont pas, c'est parfait.

 

Encore merci !

  • 3 mois après...
Posté(e)

Bonjour,

La solution dit bancale que vous avez suggéré je l'utilise souvent juste je passe par d'autre étape :

1-je duplique le fichier du levé

2-je passe à la decomposition des bloc de Point topo via la commande décomposition dans covadis édition, si le bloc ne se décompose pas ,jecrre un nouveau attribut via l'éditeur du bloc .

3-affacte z selon texte via covadis édition (pour récupère les z à partir des texte d'altitude)

4-je reviens sur mon fichier originale (fichier dupliqué au préalable) et je fais la comparaison avec un point généré après décomposition pour voir des décalage en x et h (ils sont Constant)

4-immatriciculer (covadis 2d)les nouveau points issu de la décomposition .

5 exporter les Point topo

6 importer les points topo en précisant le décalage en X et Y.

.

AutoCAD 2020

TopoCAD 5.41.0015

Covadis 17.0f

Windows 10v.1909-64bits

 

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é