formula1 Posté(e) le 17 avril 2008 Posté(e) le 17 avril 2008 Bonjours @ tous,J'aimerais faire un bouton avec comme macro la commande FIND et qu'il remplace tous les %%C par des HA.Comment dois-je procédé, j'ai essayeé ceci mais il m'ouvre la boite de dialogue de la commande FIND et s'arrete : ^C^C_find;F(%%C);R(HA);RA; Merci d'avance a tous ceux qui m'aurons aider
papyrus1985 Posté(e) le 17 avril 2008 Posté(e) le 17 avril 2008 Salut La commande n'existe pas sans la boite de dialogue (enfin je crois) donc pas possible. sinon suivant la version autocad avec un lisp c'est possible. Cyprien Utilisateur AutoCAD depuis la R12 Longue Vie à CADxp
(gile) Posté(e) le 17 avril 2008 Posté(e) le 17 avril 2008 Salut, (defun c:test (/ ss n txt elst) (and (setq ss (ssget "_X" '((0 . "TEXT,MTEXT,DIMENSION")))) (setq n 0) (while (setq txt (ssname ss n)) (setq elst (entget txt)) (entmod (subst (cons 1 (vl-string-translate "%%C" "HA" (cdr (assoc 1 elst))) ) (assoc 1 elst) elst ) ) (entupd txt) (setq n (1+ n)) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 18 avril 2008 Auteur Posté(e) le 18 avril 2008 gile, j'ai tester ton lisp et il me remplace mes %%C par AAC au lieu de HA.Pourrais-tu me dire ou ça cloche?
(gile) Posté(e) le 18 avril 2008 Posté(e) le 18 avril 2008 Ah oui, tiens !Je n'avais pas testé, ça doit être une subtilité de la fonction vl-string-translate avec les caractères spéciaux... (defun c:test (/ ss n txt elst str) (and (setq ss (ssget "_X" '((0 . "TEXT,MTEXT,DIMENSION")))) (setq n 0) (while (setq txt (ssname ss n)) (setq elst (entget txt) str (cdr (assoc 1 elst)) ) (while (vl-string-search "%%C" str) (setq str (vl-string-subst "HA" "%%C" str)) ) (entmod (subst (cons 1 str) (assoc 1 elst) elst)) (entupd txt) (setq n (1+ n)) ) ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 18 avril 2008 Auteur Posté(e) le 18 avril 2008 Super merci gile cela fonctionne maintenant.
formula1 Posté(e) le 22 avril 2008 Auteur Posté(e) le 22 avril 2008 Gile, ça fonctionne bien pour du texte, mtext mais comment dois-je faire pour que ça fonctionne aussi pour les attribut?
(gile) Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Salut Cette version traite les attributs et les texte contenus dans les blocs insérés. (defun c:test (/ ss n txt elst str) (defun rep-txt (elst / str) (setq str (cdr (assoc 1 elst))) (while (vl-string-search "%%C" str) (setq str (vl-string-subst "HA" "%%C" str)) ) (entmod (subst (cons 1 str) (assoc 1 elst) elst)) (entupd (cdr (assoc -1 elst))) ) (and (setq ss (ssget "_X" '((0 . "TEXT,MTEXT,DIMENSION,INSERT") (410 . "Model")))) (setq n 0) (while (setq txt (ssname ss n)) (setq elst (entget txt)) (if (= (cdr (assoc 0 elst)) "INSERT") (progn (setq ent (entnext txt)) (while (and ent (/= (cdr (assoc 0 (setq elst (entget ent)))) "SEQEND") ) (if (member (cdr (assoc 0 elst)) '("TEXT" "MTEXT" "DIMENSION" "ATTRIB" ) ) (rep-txt elst) ) (setq ent (entnext ent)) ) ) (rep-txt elst) ) (setq n (1+ n)) ) ) (princ) ) [Edité le 24/4/2008 par (gile)][Edité le 25/4/2008 par (gile)] [Edité le 26/4/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 23 avril 2008 Auteur Posté(e) le 23 avril 2008 Gile, merci pour le lisp mais il ne fonctionne pas pour les attribut.Il ne me met pas de message d'erreur et il ne change pas mes %%C de mes attributs
(gile) Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Parle-ton de la même chose ?Le LISP change les %%C en HA dans les valeurs d'attributs contenus dans des blocs, en tout cas ça marche chez moi. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 23 avril 2008 Auteur Posté(e) le 23 avril 2008 C'est bien cela, mais chez moi, il ne les change pas (AUTOCAD 2004)
papyrus1985 Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Bonjour formula1, Est des %%C ou alt+0216 ou alt+0248 car Autocad ne le gére pas de la même mariére, en affichage cela donne la même chose mais pas en texte : alt+0216 ou alt+0248 sont reconnu comme si c'etait une lettre (a,b,c,..) tandis que %%C est du code pur Autocad Cyprien Utilisateur AutoCAD depuis la R12 Longue Vie à CADxp
(gile) Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Salut, Bien vu papyrus1985, je n'avais pas pensé à cette éventualité.J'ai modifié le code (Réponse 9) pour qu'il traite aussi les codes ascii 216 et 248. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 24 avril 2008 Auteur Posté(e) le 24 avril 2008 Bonjours a tous, j'ai reessayer le lisp de gile et il ne marche tjs pas pour les attributs.Est-il possible que c'est du fait que j'ai une version full et en anglais?
lili2006 Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Bonjour à toutes et tous, Il y a de fortes chances, oui !Il doit manquer des "_" par ci par là. Mais attendons le retour de (gile),... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Est-il possible que c'est du fait que j'ai une version full et en anglais? Il y a de fortes chances, oui !Il doit manquer des "_" par ci par là. Absolument pas, la version full est nécessaire pour le LISP (LT est "bridée" de ce côté là) et la langue de la version n'a rien à voir là dedans.Pour info, les underscores (_) sont utilisés pour internationaliser les noms de commande anglais. Exemples :(command "ligne" p1 p2 "") ne fonctionne que sur une version française(command "line" p1 p2 "") ne fonctionne que sur une version anglaise(command "_line" p1 p2 "") fonctionne sur toutes les versions.Je suis depuis longtemps un fervent défenseur de l'usage du langage international (en LISP comme dans les macro de commande) et ce, ic comme sur les sites anglo-saxon que je fréquente. Pour clore la question, le LISP donné plus haut, ne fait aucun usage de la fonction command, donc le le problème du langage des noms de commande ne se pose pas. formula1, est-ce que la commande _FIND fonctionne sur ces attributs ? Ces attributs, ne sont-ils pas des attributs constants ? Si c'est le cas, tu peux modifier l'attribut d'un bloc avec la commande _DDEDIT, tous les blocs du dessin seront mis à jour. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 24 avril 2008 Auteur Posté(e) le 24 avril 2008 Gile, la commande "_FIND" fonctionne sur tous mes attributs.Pour ce qui est des attribut constant, je vais regarder cela
(gile) Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Ça m'intrigue :casstet: Si tu veux, tu peux m'envoyer un bout de fichier avec ces blocs. gilecantel (à) wanadoo.fr Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 24 avril 2008 Posté(e) le 24 avril 2008 Re, Merci pour ces infos (gile). Pour info, les underscores (_) sont utilisés pour internationaliser les noms de commande anglais. Exemples : C'est la raison pour laquelle j'ai pensé à ça,.. Je suis depuis longtemps un fervent défenseur de l'usage du langage international (en LISP comme dans les macro de commande) et ce, ic comme sur les sites anglo-saxon que je fréquente. Y m'semblait bien aussi, mais bon, c'aurait pu ne pas être le cas,... ;) Merci encore. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
(gile) Posté(e) le 25 avril 2008 Posté(e) le 25 avril 2008 Salut, J'ai modifié le code (Réponse 9), ça semble fonctionner correctement. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
formula1 Posté(e) le 25 avril 2008 Auteur Posté(e) le 25 avril 2008 Super, ça marche très bien.Un grand merci à toi Gile
formula1 Posté(e) le 26 avril 2008 Auteur Posté(e) le 26 avril 2008 Gile, il y aurrait-il moyen de limiter les changement uniquement au modelspace?
(gile) Posté(e) le 26 avril 2008 Posté(e) le 26 avril 2008 Salut, C'est fait, j'ai modifié le code réponse 9. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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