Aller au contenu

Transformer Ligne (+attribut) en Point (+attribut)


Messages recommandés

Posté(e)

Bonjour,

 

Je cherche à transformer des lignes avec code attributaire (ligne + attribut qui sortent de mon gps)en point avec les mêmes attributs.

Certes la commande listing (dans Cov_2D--> listing) pourrait en partie fonctionner mais il faut transformer la ligne en polyligne et puis je n'arrive pas à transférer mes codes attributaires de la ligne sur mes points topo (bloc, X,Y,Z + code).

Quelqu'un connait-il une méthode, un lisp ou une technique sous covadis ?

Merci.

moko.

Posté(e)

En effet voici une impression d'écran,

 

post-9188-0-08686300-1418036416_thumb.png

 

Il s'agit d'une ligne avec un code attrubutaire (ici STRUCTURE) plus 4 champs dont un NUMERO et un TYPE (de Structure).

Je souhaite "simplement" transformer ou exporter mes points d'extrémité de ligne en point X,Y,Z + (code (TYPE+NUMERO) pour n'avoir au final qu'un fichier de point (sous format txt ou dwg).

Posté(e)

Oui en fait tu as des données d'objet sur ta ligne.

 

 

La réponse passe alors plus par les fonctionnalités de Map.

 

Malheureusement mes compétences en la matière s’arrête ici.

 

cordialement

Thierry Garré

 

Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap

Posté(e)

Bonjour,

 

C'est un truc comme cela que tu désire faire?

 

(defun c:moko ( / js_line ent dxf_ent tbldef lst_data)
 (princ "\nSélectionner les lignes.")
 (setq js_line (ssget '((0 . "LINE") (100 . "AcDbEntity") (100 . "AcDbLine"))))
 (cond
   (js_line
     (repeat (setq n (sslength js_line))
       (setq
         ent (ssname js_line (setq n (1- n)))
         dxf_ent (entget ent)
         tbldef nil
         lst_data nil
         
       )
       (cond
         ((ade_odgettables ent)
           (foreach el (ade_odgettables ent)
             (setq tbldef (ade_odtabledefn el))
             (setq lst_data (cons (mapcar '(lambda (fld) (cons el (cons fld (ade_odgetfield ent el fld 0)))) (mapcar 'cdar (cdr (nth 2 tbldef)))) lst_data))
             (entmake
               (list
                 '(0 . "POINT")
                 '(100 . "AcDbEntity")
                 '(67 . 0)
                 '(410 . "Model")
                 (assoc 8 dxf_ent)
                 '(100 . "AcDbPoint")
                 (assoc 10 dxf_ent)
                 '(210 0.0 0.0 1.0)
               )
             )
             (setq nwent (entlast))
             (foreach el (ade_odgettables ent)
               (ade_odaddrecord nwent el)
               (mapcar '(lambda (x) (foreach data x (cond ((/= (cadr data) "FeatId") (ade_odsetfield nwent (car data) (cadr data) 0 (cddr data)))))) lst_data)
             )
             (entmake
               (list
                 '(0 . "POINT")
                 '(100 . "AcDbEntity")
                 '(67 . 0)
                 '(410 . "Model")
                 (assoc 8 dxf_ent)
                 '(100 . "AcDbPoint")
                 (cons 10 (cdr (assoc 11 dxf_ent)))
                 '(210 0.0 0.0 1.0)
               )
             )
             (setq nwent (entlast))
             (foreach el (ade_odgettables ent)
               (ade_odaddrecord nwent el)
               (mapcar '(lambda (x) (foreach data x (cond ((/= (cadr data) "FeatId") (ade_odsetfield nwent (car data) (cadr data) 0 (cddr data)))))) lst_data)
             )
           )
         )
       )
     )
   )
 )
 (prin1)
)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bon moko a disparu!...

 

Mais j'en profite pour étendre le sujet.

 

Dans son exemple, il y a des FeatID, je ne les ai pas restitué sur les points, mais ils ont pris la valeur par défaut (c'est à dire zéro). Je me demande si cette démarche n'est pas source d'ennuis, car d'après ce que j'ai compris ce FeatID est un peu comme le Handle d'une entité; c'est à dire unique.

 

Quel est le rique? Y a t-il une procédure pour corriger cela? (par programmation ou autre)

 

On trouve très peu d'exemple de développement en lisp pour Map sur le net. J'ai du mal a progresser dans le domaine et voir toutes les possibilités.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é