nonodao Posté(e) le 22 novembre 2005 Posté(e) le 22 novembre 2005 bonjour a tous et merci pour votre forumvoila ma question: est-il possible qu'un texte se cree ou s'insere dans la fin d'un fichier texte existant quand j'insere un bloc sur mon dessin. Il doit entre autre contenir les coordonnees d'insertion du bloc, et si je deplace celui-ci le texte doit se trouver modifier.Si cela est possible je vous enverrais le formatage que je dois appliquer. merci d'avance
Patrick_35 Posté(e) le 22 novembre 2005 Posté(e) le 22 novembre 2005 Salut Oui, c’est possible par le biais des réacteurs, mais pour cela, il va falloir se mettre à la programmation en vlisp @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 22 novembre 2005 Posté(e) le 22 novembre 2005 Quelques devoirs de vacances ? Je trouve que ta demande est couverte par ATTEXTR. Voirici. Il s'agit d'une extraction, pas d'un texte alimenté dynamiquement. Sous la version 2002, on est tranquille, plus besoin d'attributs dans les blocs (si mes souvenirs sont exacts) et la commande passe par une boite de dialgoue. [Edité le 22/11/2005 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
LUDWIG Posté(e) le 22 novembre 2005 Posté(e) le 22 novembre 2005 Sans le faire dynamiquement avec des réacteurs, tu peux utiliser eattext en ligne de commande pour éviter la boîte de dialogue. Tu peux même l'associer ou bouton de sauvegarde. A chaque fois que tu sauvegarderas, la liste des blocs sera créée. En plus c'est peut-être mieux de ne pas le faire dynamiquement mais uniquement lors de la sauvegarde : si tu n'enregistres pas le dessin, ta liste et ton desin ne sont plus "synchrones". En lisp : (defun c:expblk() (setq enr (strcat (getvar "dwgprefix") (substr (setq fichier (getvar"dwgname")) 1 (- (strlen fichier) 4)))) (command "-eattext" "dwgCourant" "n" "o" "n" "csv" enr "o") ) Le fichier est créé dans le même répertoire que le dessin.J'ai mis un "o" à la fin de ma commande "-eattext" car si le fichier existe, il demande une validation pour l'écraser. Du coup, si le fichier n'existe pas, le lisp renvoit "o", commande inconnue. Si quelque sait tester l'existence d'un fichier... [Edité le 22/11/2005 par LUDWIG] Autocad 2021 - Revit 2022 - Windows 10
Tramber Posté(e) le 22 novembre 2005 Posté(e) le 22 novembre 2005 (defun c:expblk() (setq enr (strcat (getvar "dwgprefix") (substr (setq fichier (getvar"dwgname")) 1 (- (strlen fichier) 4)))) (setq fichext(strcat(substr (setq fichier (getvar"dwgname")) 1 (- (strlen fichier) 4))".csv")) (if(member fichext(vl-directory-files (vl-string-translate "\\" "/" (getvar "dwgprefix")))) (command "-eattext" "dwgCourant" "n" "o" "n" "csv" enr "o") (command "-eattext" "dwgCourant" "n" "o" "n" "csv" enr ) ) ) Une facon de faire. Mais non testée, semble ne pas marcher pareil en 2004. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
nonodao Posté(e) le 22 novembre 2005 Auteur Posté(e) le 22 novembre 2005 bonsoir et merci de repondre si rapide,j'ai essayé votre lisp et voici le message d'erreur que je reçois. Commande: expblk-eattext Commande inconnue "-EATTEXT". Appuyez sur F1 pour obtenir de l'aide.Commande: dwgCourant Commande inconnue "DWGCOURANT". Appuyez sur F1 pour obtenir de l'aide.Commande: n Commande inconnue "N". Appuyez sur F1 pour obtenir de l'aide.Commande: o Commande inconnue "O". Appuyez sur F1 pour obtenir de l'aide.Commande: n Commande inconnue "N". Appuyez sur F1 pour obtenir de l'aide.Commande: csv Commande inconnue "CSV". Appuyez sur F1 pour obtenir de l'aide.Commande: G:\bloc\essai Commande inconnue "G:\BLOC\ESSAI". Appuyez sur F1 pour obtenir de l'aide.Commande: nil Nous possédons autocad 2000, c'est peut-etre pour cela que cela ne fonctionne pas.J'ai bien enregistré les lignes de code dans un fichier lisp et chargé l'application, puis lancé la commande expblk. @+
Tramber Posté(e) le 22 novembre 2005 Posté(e) le 22 novembre 2005 Sur 2000, la série de questions, voire le nom de commande peuvent être mal reconnus. Autant le faire en manuel ATTEXTR (suivre le lien que j'ai donné). Ca demande un peu de préparation et ne marche que sur les blocs avec attributs (dans la version 2000, dans les suivantes c'est beaucoup mieux car la présence d'attrib n'est plus obkigatoire). Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
LUDWIG Posté(e) le 23 novembre 2005 Posté(e) le 23 novembre 2005 Si l'extraction d'attributs ne fonctionne pas avec la 2000, essayes ce code : (defun c:expblk() (setq enr (strcat (getvar "dwgprefix") (substr (setq fichier (getvar"dwgname")) 1 (- (strlen fichier) 4))".csv"));on définit chemin+nom du fichier à écrire (setq jeu (ssget "X" '((0 . "insert"))));on fait une sélection de l'ensemble des blocs du dessin (setq csv (open enr "w"));on ouvre le fichier à écrire (s'il n'existe pas, il est créé ; s'il existe, il sera réécrit) (write-line "Nom;Calque;X;Y;Z;Rotation" csv);on écrit la ligne des entêtes (setq n 0);on met le compteur à 0 (repeat (sslength jeu);on répètera la suite des actions autant de fois qu'il y a de blocs dans la sélection (setq bloc (entget(ssname jeu n)));on récupère les propriétés du bloc numéro n (setq nom (cdr(assoc 2 bloc)));on prend son som (setq calque (cdr(assoc 8 bloc)));son calque (setq positionX (rtos(nth 0(cdr(assoc 10 bloc)))));le X (rtos permet de transformer un numérique en alphanumérique (sinon pas possible de l'écrire dans un fichier)) (setq positionY (rtos(nth 1 (cdr(assoc 10 bloc))))); le Y (setq positionZ (rtos(nth 2 (cdr(assoc 10 bloc)))));le z (setq Rotation (rtos(cdr(assoc 50 bloc))));la rotation (setq ligne (strcat nom ";" calque ";" positionX ";" positionY ";" positionZ ";" Rotation));on définit la ligne à écrire pour cet ensemble de données (write-line ligne csv);on écrit cette ligne dans le fichier (setq n (+ 1 n));on incrémente le compteur ) (close csv);on ferme le fichier (sinon il restera en lecture seule) ) Je ne l'ai pas trop tester. Je ne sais pas comment il réagit si tu as des blocs dans l'espace objet ET dans un espace papier. Il ne récupérera pas les blocs imbriqués (cad dans un autre bloc) ni les attributs. Donc à tester. A voir si les infos collectées sur les blocs te sont suffisantes et si le format csv te convient. CSV : comma (t ?) separated values > valeurs séparées par des virgules. Tu peux l'ouvrir avec n'importe quel éditeur de texte. Excel est très bien pour manipuler ces données (pourvu que tu n'aies pas plus de 65000 lignes soit 64999 blocs, limte d'excel). Tu peux associés ce code au bouton de sauvegarde : ^C^C_qsave;expblk; Autocad 2021 - Revit 2022 - Windows 10
nonodao Posté(e) le 23 novembre 2005 Auteur Posté(e) le 23 novembre 2005 bonjour,j'ai testé ton lisp LUDWIG et cele fonctionne.voici le formatage que j'aimerais obtenir. <102 \BohrVert\ (BohrVert etant le nom du bloc)XA="50" (50 etant la position en x du bloc)YA="30" (30 etant la position en y du bloc)BM="LS"TI="14"DU="8"AN="3"MI="0"S_="2"AB="(la-60)/2" WI="90"HP="0"SP="0"YVE="0"WW="60,61,62,88,90,91,92,150"MX="0"MY="0"MZ="0"MXF="1"MYF="1" les autres donnees restent fixes@+ et merci pour le travail fourni
LUDWIG Posté(e) le 23 novembre 2005 Posté(e) le 23 novembre 2005 Tu veux les données dans une seule colonne comme tu me l'écrit ? Les blocs les uns en dessous des autres ? Ou toujours une colonne par propriété et une ligne par bloc ? EDIT : et il te faut aussi les guillemets ? Envoies un exemple de fichier tel que tu le veux sur ludwig*desmier(A)infeo*fr (remplace * par POINT) [Edité le 23/11/2005 par LUDWIG] Autocad 2021 - Revit 2022 - Windows 10
Patrick_35 Posté(e) le 23 novembre 2005 Posté(e) le 23 novembre 2005 Si quelque sait tester l'existence d'un fichier... (if (findfile "mon_fichier.txt") (alert "Fichier Existant") (alert "Fichier Inconnu") ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
LUDWIG Posté(e) le 29 novembre 2005 Posté(e) le 29 novembre 2005 nonodao, j'ai bien reçu ton dernier fichier... je ne t'ai pas oublié mais j'ai pas mal de boulot. Je te prépare un lisp amélioré pour plus tard. Autocad 2021 - Revit 2022 - Windows 10
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