Aller au contenu

import points depuis fichier .text


Messages recommandés

Posté(e)

Bonjour à tous,

j'ai récupéré sur le site du cadastre des fichiers .text (bloc-note) avec des coordonnées en X et en Y, ainsi que le numéroi de saisie des points.

J'aimerai savoir comment les importer sous autocad 2006 pour qu'ils apparaissent sous forme de points dans un dessin. Cela me permettra de modéliser les parcelles cadastrales.

Merci de votre aide. ;)

Posté(e)

Merci beaucoup, je m'en vais essayer ça...

Honnêtement, je pensais qu'il y avait une manip directement dans autocad, bref sans besoin d'un lisp.

Mais c'est très bien comme ça :) :)

Posté(e)

Ca marche pas... J'ai pourtant bien mis le point virgule où il fallait dans le lisp car les points sont en 2d, mais ça ne me donne aucun point sur mon fichier, quelque soit le calque...

Y aurait-il une manip à faire en plus de choisir fichier puis choisir fichier texte et séparateur dans fichier?

Faut-il bidouiller les fichiers fournis par le cadastre pour que le lisp fonctionne?

Posté(e)

Effectivement, le LISP est prévu pour des points 3d

Donne les premières lignes de ton fichiers que je vois comment il est fait.

Tu veux importer des blocs avec le matricule comme attribut ?

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

/* CDIF : PARIS OUEST - Commune : PARIS 15 (75) */

1 596864,58 126796,89

2 596858,92 126805,06

3 596841,42 126829,55

4 596840,76 126831,22

5 596827,43 126821,56

6 596828,76 126819,89

7 596833,92 126819,06

8 596861,58 126780,06

9 596870,42 126788,89

 

 

En effet, pouvoir les importer avec leur matricule comme attribut serait parfait...

Posté(e)

Voilà,

C'est du sur mesure parce que ton fichier point est curieusement foutu (points 2d, séparateur décimal = virgule et séparateur de données = espace)

Le LISP crée une définition de bloc s'il ne trouve pas de bloc nommé "PointBloc". Si tu préfères faire un bloc selon tes désir il suffit qu'il soit présent dans la collection du dessin avant de lancer le LISP.

 

(defun c:ptfins (/ makeblock filename space file line lst insert)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )
 (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*)))

 (defun makeblock (/ block)
   (vl-load-com)
   (setq block	(vla-add *blocks*
		 (vlax-3d-point '(0. 0. 0.))
		 "PointBloc"
	)
   )
   (vla-addPoint block (vlax-3d-point '(0. 0. 0.)))
   (vla-addAttribute
     block
     (getvar "TEXTSIZE")
     acAttributeModePreset
     ""
     (vlax-3d-point (list (/ (getvar "TEXTSIZE") 2) 0 0))
     "MATRICULE"
     "0.0"
   )
 )

 (if (setq
filename (getfiled "Sélectionner un fichier point" "" "txt" 0)
     )
   (progn
     (and (vl-catch-all-error-p
     (vl-catch-all-apply
       'vla-item
       (list *blocks* "PointBloc")
     )
   )
   (makeblock)
     )
     (setq space (vla-get-ModelSpace *acdoc*)
    file  (open filename "r")
     )
     (while (setq line (read-line file))
(setq lst (mapcar 'read (str2lst (vl-string-translate "," "." line) "\t")))
(if (vl-every 'numberp lst)
  (progn
    (setq
      insert
       (vla-InsertBlock
	 space
	 (vlax-3d-point (list (cadr lst) (caddr lst) 0.))
	 "PointBloc"
	 1.0
	 1.0
	 1.0
	 0.0
       )
    )
    (vla-put-TextString
      (car (vlax-invoke insert 'getAttributes))
      (itoa (car lst))
    )
  )
)
     )
     (close file)
   )
 )
 (princ)
)

;; str2lst
;; Transforme un chaine avec séparateur en liste de chaines
;;
;; Arguments
;; str : la chaine à transformer en liste
;; sep : le séparateur
;;
;; Exemples
;; (str2lst "a b c" " ") -> ("a" "b" "c")
;; (str2lst "1,2,3" ",") -> ("1" "2" "3")
;; (mapcar 'read (str2lst "1,2,3" ",")) -> (1 2 3)

(defun str2lst (str sep / pos)
 (if (setq pos (vl-string-search sep str))
   (cons (substr str 1 pos)
  (str2lst (substr str (+ (strlen sep) pos 1)) sep)
   )
   (list str)
 )
)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

J'obtiens seulement un point 0,0 et aucun des points de mon fichier .txt.

Mais il est possible que cela vienne de moi et que je ne sache pas me servir du lisp.

Désolé du dérangement, :( , mais je n'ai que 48 points à rentrer, je vais le faire à la main, histoire de pas pousser le bouchon trop loin.)

Merci à toi pour l'effort fourni (en tout cas, chapeau pour le temps de réaction et la vitesse d'acriture du lisp, je suis bluffé!!!).

;)

Posté(e)

Bonsoir,

 

Un moyen simple que j'utilise !

 

Comme le formattage des fichiers changent souvent j'utilise EXCEL pour ouvrir le fichier de points...

 

Ensuite j'utilise un fichier EXCEL pour générer des points (BLOCS) dans AutoCAD...

 

voici ce sujet...

 

 

Christian

Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...

cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)

Posté(e)

J'obtiens seulement un point 0,0 et aucun des points de mon fichier .txt.

 

Très curieux, je viens de faire un nouveau test dans un profil vierge de toute personnalisation sans souci.

Dans un dessin vierge, tu charges le LISP, tu lances PTFINS, tu choisis le fichier txt depuis la boite de dialogue, Ouvrir et l'insertion des blocs est automatique.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Salut,

 

Tu peux essayer la routine TOPO sur ma page

 

Celle ci fonctionne pour toutes les versions 200X (lisp classique avec des "command", je ne l'ai pas encore actualisé)

 

Il te faudra juste supprimer la 1er ligne (/* CDIF : PARIS OUEST - Commune : PARIS 15 (75) */) de ton fichier XYZ et déclarer la virgule comme séparateur décimal dans la boite de dialogue lors de l'utilisation de la routine.

PS: Génère des points et non des blocs

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

Posté(e)

Pour christian, ce serait avec plaisir si on ne nous avait pas enlevé excell, sous prétexte qu'Open Office était gratuit... :casstet:

Et les macros qu'on avait sous les vieux fichiers, on a du se les recoletiner une par une... :mad:

En plus, on a pas Ooo dernière version, même si c'est gratos, mais la 2.1!

:mad: :casstet: :mad:

Enfin bref, je risque pas :yltype: d'utiliser les outils fournis comme compatibles avec excell, et c'est bien dommage... :calim:

Posté(e)

Pour Bonuscad: ça marche pas... Je n'ai aucun point malgré que les deux fichiers soient correctement installés...

Pour (gile), je vais essayer ça dès mon retour au boulot.

Je commence à me demander si je n'ai pas un problème avec mon autocad. Pourtant les lisp ont toujours correctement fonctionné jusqu'ici. Va falloir sinon que je m'intéresse aux variables, histoire de voir si une mauvaise valeur sur l'une d'elle ne gène pas son utilisation.

Merci pour le temps passé sur mon problème ;) ;) ;)

Posté(e)

Hum! Ben, j'ai recopié le code et je l'ai rechargé, j'ai essayé et ça ne marché toujours pas. Au mieux j'obtiens un bloc 0,0 et rien d'autre. Aucun des points de mon fichier...

Tous mes lisps fonctionnent sauf celui là, et celui de Bonuscad...

Je commence à croire que mon autocad ne permet pas l'import de points... pour une raison qui m'est inconnue... :casstet:

Agaçant, hein? :casstet: :casstet: :casstet:

Posté(e)

CA MARCHE!!!!!!!! :D :D :D

J'ai compris le problème: en fait, le document .txt fourni par le cadastre est mal configuré.

Ton lisp marchait très bien car tu as récupéré les informations de mon message et tu les as recopiés dans un .txt.

Dans le document du cadastre, les espaces sont configurés différemment: il faut les suprimer puis les restaurer.

UN GRAND MERCI A TOUS (et à (gile) et Bonuscad et Rebcao en particuliers!!!!! :D

 

Posté(e)

Tous mes lisps fonctionnent sauf celui là, et celui de Bonuscad...

 

Etrange, j'ai fais un essai avec ton extrait (en enlevant la 1ere ligne)et pas de soucis.

 

Arrive tu jusqu'à la boite de dialogue qui te permet de choisir l'échelle et les calques de destinations.

Si oui, le dessin des points à du se faire (mais il faut faire un zoom étendu après la routine pour voir les points.)

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

Posté(e)

Merci à toi, mais en fait c'est le .txt du cadastre qui me met dedans: il faut que je supprime puis restaure tous les espaces des .txt fournis par le cadastre. C'est toujours moins long que de rentrer tous les points à la main...

;) Merci à vous!!! ;)

Posté(e)

Y a-t-il un message sur la ligne de commande ?

Le fichier txt est-il exactement tel que tu l'as donné plus haut (dans un des premiers messages tu parles de séparateur point virgule) ?

 

"0.0" est la valeur par défaut de l'attribut. Un bloc est donc bien inséré, mais la routine plante à la mise à jour de l'attribut.

 

Peux tu m'envoyer le fichier txt (ou me donner un lien).

gilecantel (at) orange.fr

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Voici le fichier envoyé, même si le sujet est résolu... J'ignore pourquoi leur fichier .txt est bidouillé comme ça, mais un minimum de retravail dessus permet de gagner beaucoup de temps grace à vous... :)

Posté(e)

Salut,

 

en fait le séparateur de données n'est pas l'espace mais la tabulation.

J'ai modifié le code de ptfins, ça fonctionne maintenant sans avoir besoin de remplacer les tabulations par des espaces.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é