Inserer bloc avec coordonnée
Fermé
polyline
Messages postés
1
Date d'inscription
mardi 26 février 2013
Statut
Membre
Dernière intervention
26 février 2013
-
26 févr. 2013 à 19:46
ZCAD - 16 janv. 2024 à 13:35
ZCAD - 16 janv. 2024 à 13:35
A voir également:
- Inserer bloc avec coordonnée
- Coordonnée gps - Guide
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer sommaire word - Guide
5 réponses
Bonjour,
Il y a pas mal de lisps sur le net pour charger un semi de points dans autocad
En voici un exemple
http://cadxp.com/index.php?/topic/16959-charger-un-semi-de-point-en-format-txt/
Il faudra certainement adapter.
Peut-on voir quelques lignes de ton fichier texte à charger?
A+.
Il y a pas mal de lisps sur le net pour charger un semi de points dans autocad
En voici un exemple
http://cadxp.com/index.php?/topic/16959-charger-un-semi-de-point-en-format-txt/
Il faudra certainement adapter.
Peut-on voir quelques lignes de ton fichier texte à charger?
A+.
Merci pour ta reponse
Mais je ne connais pas le lisp
Je pensais plus partir sur l'idee d'un script .
J'ai pu trouver sur le net un script qui m'insere les points au coordonnée voulue;
Voici la fonction sur excel:='_point "&C1&","&D1
mais avec ce code je n'arrive pas a charger mon bloc editable.(bloc+attribut dans autocad) dans mon dessin
Point C1 D1
Nom du bloc X Y
F01 151.210 174.250
F02 151.211 174.251
F03 151.212 174.252
Merci d'avance pour vos conseil
Mais je ne connais pas le lisp
Je pensais plus partir sur l'idee d'un script .
J'ai pu trouver sur le net un script qui m'insere les points au coordonnée voulue;
Voici la fonction sur excel:='_point "&C1&","&D1
mais avec ce code je n'arrive pas a charger mon bloc editable.(bloc+attribut dans autocad) dans mon dessin
Point C1 D1
Nom du bloc X Y
F01 151.210 174.250
F02 151.211 174.251
F03 151.212 174.252
Merci d'avance pour vos conseil
Les languages de programmation d'autocad sont le VBA et le Lisp.
L'avantage du VBA c'est que tu peux travailler en même temps dans autocad et dans Excel.
Pour revenir à ton problème, il faudrait confectionner un programme sur mesure, en prenant pour modèle des Lisps ou des macro VBA qu'on trouve sur les forums. Si tu n'as pas un minimum de connaissances en programmation, ça va être compliqué. Pour un usage unique, pas sur que ça vaille le coup.
A tout hazard:
Est-ce le même bloc qu'il faut inserer à chaque point?
Quels sont les attributs (le nom des étiquettes)?...
Y.
L'avantage du VBA c'est que tu peux travailler en même temps dans autocad et dans Excel.
Pour revenir à ton problème, il faudrait confectionner un programme sur mesure, en prenant pour modèle des Lisps ou des macro VBA qu'on trouve sur les forums. Si tu n'as pas un minimum de connaissances en programmation, ça va être compliqué. Pour un usage unique, pas sur que ça vaille le coup.
A tout hazard:
Est-ce le même bloc qu'il faut inserer à chaque point?
Quels sont les attributs (le nom des étiquettes)?...
Y.
Bonjour
En faite je dois pouvoir reutiliser la commande plusieur fois (plusieur projet a venir).C'est pour cela que je cherche a avoir une routine pour me facilité la tache
Pour ce projet j'ai plus d'une 100 de bloc a insere , je ne pense pas qu'il puisse
m'inserer different bloc
Donc j'insere un bloc de base ( localisation de forage sur une parcelle de terrain)
le bloc a insere a comme attribut le numeros du forage
Bien à toi
En faite je dois pouvoir reutiliser la commande plusieur fois (plusieur projet a venir).C'est pour cela que je cherche a avoir une routine pour me facilité la tache
Pour ce projet j'ai plus d'une 100 de bloc a insere , je ne pense pas qu'il puisse
m'inserer different bloc
Donc j'insere un bloc de base ( localisation de forage sur une parcelle de terrain)
le bloc a insere a comme attribut le numeros du forage
Bien à toi
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai un peu bricolé un Lisp que j'avais fait. Tu testeras.
Pour que ça marche, tu dois exporter ton fichier Excel au format texte sans les en-tetes.
Enregistrer sous ... format Texte(DOS), de manière à obtenir ça:
F01 151.210 174.250
F02 151.211 174.251
F03 151.212 174.252
Copies les lignes qui suivent et tu les colles dans un fichier avec Bloc Notes ou ton editeur de texte préféré (pas de Word ou autre traitement de texte).
Deux lignes à modifier:
remplaces NOM_DU_CALQUE par le calque qui contiendra les blocs
remplaces NOM_DU_BLOC par le bloc à inserer; le bloc doit déjà être défini dans le dessin.
Tu sauvegardes le fichier avec l'extention .lsp
Utilisation:
Charger le lisp (Outils/AutoLisp/Charger une application)
Si pas d'erreur, taper IMP-NXY sur la ligne de commande.
Pour que ça marche, tu dois exporter ton fichier Excel au format texte sans les en-tetes.
Enregistrer sous ... format Texte(DOS), de manière à obtenir ça:
F01 151.210 174.250
F02 151.211 174.251
F03 151.212 174.252
Copies les lignes qui suivent et tu les colles dans un fichier avec Bloc Notes ou ton editeur de texte préféré (pas de Word ou autre traitement de texte).
Deux lignes à modifier:
(command "-calque" "e" "NOM_DU_CALQUE" "") ; <- NOM DU CALQUE
remplaces NOM_DU_CALQUE par le calque qui contiendra les blocs
(command "-inserer" "NOM_DU_BLOC" coord_2D "" "" "" n_p) ; <- NOM DU BLOC
remplaces NOM_DU_BLOC par le bloc à inserer; le bloc doit déjà être défini dans le dessin.
Tu sauvegardes le fichier avec l'extention .lsp
Utilisation:
Charger le lisp (Outils/AutoLisp/Charger une application)
Si pas d'erreur, taper IMP-NXY sur la ligne de commande.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; (IMP-NXY) - importer fichier ASCII (defun imp-xyz_err (s) ; If an error (such as CTRL-C) occurs ; while this command is active... (if (/= s "Function cancelled") (princ (strcat "\nErreur : " s)) ) (close n_f) (setvar "cmdecho" ocmd) ; Restore saved modes ;(setvar "regenmode" oreg) (command "scu" "p") (setvar "OSMODE" old_snap) (setq *error* olderr) ; Restore old *error* handler (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun lirechamp ( chaine numchamp / pos1 pos2 ipos deb lng ret nchamp champ) (setq pos1 0 pos2 0 deb 1 lng (strlen chaine) champ "") (if (/= lng 0) (progn (setq ipos 1 nchamp 0 ret 0) (while (and (< ipos lng) (= ret 0)) ;recherche premier caractere (WHILE (and (< (ASCII (substr chaine ipos 1)) 33) (< ipos lng)) (setq ipos (+ ipos 1)) ) (setq nchamp (+ nchamp 1) pos1 ipos) ;recherche separateur (WHILE (and (> (ASCII (substr chaine ipos 1)) 32) (< ipos lng)) (setq ipos (+ ipos 1)) ) (setq pos2 ipos) (IF (and (= pos2 lng) (> (ASCII (substr chaine pos2 1)) 32)) (setq pos2 (+ pos2 1))) (IF (= nchamp numchamp) (setq champ (substr chaine pos1 (- pos2 pos1)) ret 1)) );while );progn );if (setq champ champ) );fin fonction ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun importer_xyz () (command "-calque" "e" "NOM_DU_CALQUE" "") ; <- NOM DU CALQUE (while (setq chaine (read-line n_f)) (setq val_champ (lirechamp chaine i_p)) (setq n_p val_champ) ;numero (setq val_champ (lirechamp chaine i_x)) (setq coord_x (atof val_champ)) ;X (setq val_champ (lirechamp chaine i_y)) (setq coord_y (atof val_champ)) ;Y (if (not (and (= coord_x 0.0) (= coord_y 0.0))) (progn (setq coord_2D (list coord_x coord_y 0.0)) ;Point 2D (command "-inserer" "NOM_DU_BLOC" coord_2D "" "" "" n_p) ; <- NOM DU BLOC );progn );if );while ) (defun C:IMP-NXY () (setq olderr *error* *error* imp-xyz_err ) (setq ocmd (getvar "cmdecho")) ;(setq oreg (getvar "REGENMODE")) (setvar "cmdecho" 0) ;(setvar "REGENMODE" 0) (command "scu" "") (setq old_snap (getvar "OSMODE")) (setvar "OSMODE" 0) (setq i_p 1 i_x 2 i_y 3) (setq chemin (getvar "DWGPREFIX")) (setq nom_fich (getfiled "Fichier .TXT à importer" chemin "TXT" 0)) (if (= nom_fich nil) (exit)) ; operation annulee (setq n_f (open nom_fich "r")) (importer_xyz) (close n_f) (setvar "cmdecho" ocmd) ;(setvar "regenmode" oreg) (command "zoom" "et") (command "scu" "p") (setvar "OSMODE" old_snap) (setq *error* olderr) ; Restore old *error* handler (princ) )
Bonjour yoda,
j'ai essayé ton lisp mais il ne fonctionne pas peut-être que mes données ne sont pas dans une forme correct ?
Voici un extrait de mes coordonnées :
7.052320918,46.832327756
7.052657895,46.832436843
7.052950767,46.832536785
7.053242461,46.832636722
7.053534393,46.832745654
7.053827138,46.832845593
7.054113634,46.832531719
7.054121518,46.832693664
7.054145705,46.832945618
7.054228724,46.83917974
7.054259942,46.838811032
7.054395125,46.838460666
7.054440103,46.833036565
7.054510688,46.838146215
7.0546428,46.832675155
7.054650348,46.837768877
merci d'avance