zigoun Posté(e) le 16 janvier 2007 Posté(e) le 16 janvier 2007 Bonjour à tous j'ai recuperé un lisp sur www.decker-cs.com qui s'appele "du_textesfichier.lisp" pour recuperer des textes sur autocad et les transferer sur excel.Ce lisp et tres bien mais comme je compte lancer un script sur plusieurs fichier, j'aurais aimé avoir automatiquement le N° de folio assaocié.J'ai essayé de modifier le lisp, mais + je bidouille - j'y arrive. la partie du lisp qui m'ennuie (if (= identificateur "O") (setq identificateur(getstring t "Identificateur : " )) (setq identificateur nil) j'ai essayé de modiffier (getstring t "Identificateur : " )) par (getvar "dwgname")) mais ca ne marche pas. (Ca vous fait rire j'espére). Quelqu'un aurait-il un lisp correspondant a ce que je cherche ou m'expliquer la modif à apporter. Merci
Patrick_35 Posté(e) le 16 janvier 2007 Posté(e) le 16 janvier 2007 SalutTu as aussi le lisp TXTEXC que tu trouveras ici @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zigoun Posté(e) le 18 janvier 2007 Auteur Posté(e) le 18 janvier 2007 En fait ton lisp ne fonctionne pas avec mon application, car il prend tous les textes sans exception et dans le desordre alors que je n'ai besoin que d'une partie du folio J'aurais bien aimé modifier le Lisp que j'avais au depart. Quelqu'un aurait-il la solution ?? En fait à la question qui est posée "Identificateur", je ne voudrais pas qu'il attende une reponse de ma part, mais qu'il ecrive automatiquement le N° du folio autocad correspondant. Merci
Patrick_35 Posté(e) le 18 janvier 2007 Posté(e) le 18 janvier 2007 Le plus simple est que tu mettes à disposition ton lisp ainsi qu'un exemple de dessin et du fichier excel afin de voir ce qui est possible de faire @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
zigoun Posté(e) le 18 janvier 2007 Auteur Posté(e) le 18 janvier 2007 Ok voila lmon script : du_textesfichierc:\bdd.xlsf100,100200,200 vooodessin -je lance le lisp-je lui donne le nom de fichier que je veux renseigner-Je lui indique la fenetre-les differentes indications-Et a la fin il me demande quelle inscription il faut mettre apres le texte. C'est la ou le bas blesse.C'est à cet endroit que j'ai ecrit "dessin" sur mon script.C'est la que joudrais ne rien ecrire et qu'il mette le N° autocad automatiquement. Pour les fichiers, ce sont des borniers electriques, ou je veux recuperer des textes pour generer des etiquettes, mais je ne sais pas comment faire pour attacher un fichier DWG sur ce forum. Voila la totalité du lisp : (write-line "Dupliquer une colonne de textes dans un fichier.") ; (setq fichier(getstring "Fichier à renseigner : ")) (setq jeu(ssget)) (if (= jeu nil) (progn (write-line "Aucun objet sélectionné.") (princ) ) ) (while ;Prend les paramètres, même sans objet sélectionné, pour utilisation (and ;avec un générateur de script (évite le plantage du script). (/= sens "H") (/= sens "V") ) (setq sens(strcase(getstring "Sens de lecture (Horizontal / Vertical) : "))) (if (> (strlen sens) 0) ;La chaîne contient au moins un caractère. (setq sens(substr sens 1 1)) ;Préserve uniquement le premier caractère de la chaîne. ) ) (while (and (/= ligneav "O") (/= ligneav "N") ) (setq ligneav(strcase(getstring "Générer une ligne vide dans le fichier avant écriture (Oui / Non) : "))) (if (> (strlen ligneav) 0) ;La chaîne contient au moins un caractère. (setq ligneav(substr ligneav 1 1)) ;Préserve uniquement le premier caractère de la chaîne. ) ) (while (and (/= ligneap "O") (/= ligneap "N") ) (setq ligneap(strcase(getstring "Générer une ligne vide dans le fichier après écriture (Oui / Non) : "))) (if (> (strlen ligneap) 0) ;La chaîne contient au moins un caractère. (setq ligneap(substr ligneap 1 1)) ;Préserve uniquement le premier caractère de la chaîne. ) ) (while (and (/= identificateur "O") (/= identificateur "N") ) (setq identificateur(strcase(getstring "Ajouter une colonne pour l'identification des données (Oui / Non) : "))) (if (> (strlen identificateur) 0) ;La chaîne contient au moins un caractère. (setq identificateur(substr identificateur 1 1)) ;Préserve uniquement le premier caractère de la chaîne. ) ) (if (= identificateur "O") (setq identificateur(getstring t "Identificateur : " )) (setq identificateur nil) ) ; ;----------- FIN SAISIE UTILISATEUR ---------- ; ; ;----- SELECTION DES TEXTES ET MISE EN LISTE DES POSITIONS ET DES VALEURS ----- ; (if (/= jeu nil) (progn (setq index 0) (setq nbrtextes 0) (repeat (sslength jeu) ;Scrute le jeu de sélection. (setq entite(ssname jeu index)) (if (= (cdr(assoc '0(entget entite))) "TEXT") ;L'entité est un texte. (progn (setq propriete(entget entite)) (setq valeur(cons (cdr(assoc '1 propriete)) valeur)) ;Ajoute la valeur dans la liste "valeur". (if (= sens "H") (setq position(cons (car(cdr(assoc '10 propriete))) position)) ;Ajoute X dans la liste "position" dans le sens horizontal. (setq position(cons (car(cdr(cdr(assoc '10 propriete)))) position)) ;Ajoute Y dans la liste "position" dans le sens vertical. ) (setq nbrtextes(+ nbrtextes 1)) ;Compte le nombre de textes sélectionnés. ) ) (setq index(+ index 1)) ;Cible la prochaine entité dans le jeu de sélection. ) (if (= nbrtextes 0) (progn (write-line "Aucun texte sélectionné.") (princ) ) ) ) ) ; ;--- FIN SELECTION DES TEXTES ET MISE EN LISTE DES POSITIONS ET DES VALEURS --- ; ; ;---------- ECRITURE DES VALEURS DANS LE FICHIER ---------- ; (if (/= jeu nil) (progn (setq index 0) (setq f(open fichier "a")) ;Crée le fichier s'il n'existe pas, ou, ajoute les données à la fin du fichier. (if (= ligneav "O") ;Adjonction d'une ligne vide avant écriture. (progn (princ (chr 13) f) (princ (chr 10) f) ) ) (repeat (length valeur) ;Cherche les valeurs sélectionnées suivant l'ordre de tri demandé par l'utilisateur. ; ;---------- RECHERCHE LA PROCHAINE VALEUR A ECRIRE DANS LE FICHIER ---------- ; (setq positionactu nil) ;Cible la position la plus petite. (setq ptr1 0) ;Pointeur de la liste valeur. (repeat (length valeur) ;Cherche la position (X ou Y) la moins élevée parmi les valeurs non sauvegardées. (setq ptr2 0) ;Pointeur de la liste "indexinvalide". (setq a 0) ;Initialisation de l'état de la recherche. (while (and (= a 0) (< ptr2 (length indexinvalide)) ) (if (= (nth ptr2 indexinvalide) ptr1) ;La valeur stockée à l'index courant est déjà sauvegardée. (setq a 1) ) (setq ptr2(+ ptr2 1)) ;Incrémente l'index de la liste "indexinvalide". ) (if (= a 0) ;La valeur stockée à l'index courant n'est pas encore sauvegardée. (progn (if (= positionactu nil) ;Première position valide (démarrage). (progn (setq positionactu(nth ptr1 position)) (setq indexposition ptr1) ) (progn ;Position valide à comparer avec la position actuelle. (if (= sens "H") (progn ;Sens horizontal demandé (de gauche à droite). (if (< (nth ptr1 position) positionactu) ;La nouvelle position valide est plus petite (progn ;que la position actuelle. (setq positionactu(nth ptr1 position)) (setq indexposition ptr1) ) ) ) (progn ;Sens vertical demandé (de haut en bas). (if (> (nth ptr1 position) positionactu) ;La nouvelle position valide est plus grande (progn ;que la position actuelle. (setq positionactu(nth ptr1 position)) (setq indexposition ptr1) ) ) ) ) ) ) ) ) (setq ptr1(+ ptr1 1)) ) (setq indexinvalide(cons indexposition indexinvalide)) ;Sauvegarde l'index. ; ;---------- FIN RECHERCHE LA PROCHAINE VALEUR A ECRIRE DANS LE FICHIER ---------- ; ;---------- ECRITURE DE LA VALEUR DANS LE FICHIER ---------- ; (if (= identificateur nil) ;Ne pas ajouter l'identificateur de données. (princ (nth indexposition valeur) f) ;Ecriture de la valeur dans le fichier. (progn ;Ajouter l'identificateur de données. (princ (nth indexposition valeur) f) ;Ecrit la valeur dans le fichier. (princ (chr 9) f) ;Ajoute le séparateur de colonnes. (princ identificateur f) ;Ajoute l'identificateur de données. ) ) (princ (chr 13) f) (princ (chr 10) f) ; ;---------- FIN ECRITURE DE LA VALEUR DANS LE FICHIER ---------- ; ) (if (= ligneap "O") ;Demande d'une ligne vide après écriture. (progn (princ (chr 13) f) (princ (chr 10) f) ) ) (close f) (princ) ; ;--------- FIN ECRITURE DES VALEURS DANS LE FICHIER ---------- ; ) ))
zigoun Posté(e) le 20 janvier 2007 Auteur Posté(e) le 20 janvier 2007 voila j'ai trouvé, s'il y en a que ca interesse c'etait une erreur de syntaxe. je n'avais pas mis d'espace apres getvar. il faut donc remplacer (getstring t "Identificateur : " ) par (getvar "dwgname"))
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant