christ-94 Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 Bonjour Voilà mon problème J’ai des plans électrique avec des textes définissant le calibre des disjoncteurs, la puissance, l’intensité etc., j’ai crée un bloc avec les attributs qui devraient remplacer les textes « même nombre d’attribut que de texte »Donc comment automatisé la récupération des texte car j’ai 100 plans et une 30 de disjoncteurs par plans « soit 2 heures par plans »Je pense a une fonction lisp « je click sur le texte correspondant a l'attribut a intègre dans le bloc » Cela existe t-il ? « pour info je n’ai jamais fait de lisp , que des scripts » Merci de vos reponses
didier Posté(e) le 13 septembre 2006 Posté(e) le 13 septembre 2006 Bonjour, Ce que tu demandes est aisé à réaliser s'il n'ya pas trop de conditions restrictives.Deus solutions, 1: attendre que quelqu'un te mettes un code sur le site 2: contacte moi par message privé, je te files mon mail, tu me renvoies un bloc type et un exemple de ce que tu veux faire,je te ferai une routine que je mettrai sur CadXp. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
christ-94 Posté(e) le 14 septembre 2006 Auteur Posté(e) le 14 septembre 2006 Bonjour Merci pour ton aide que j'accepte avec joie il n'y a pas de condition restrictive , il faut insérer un bloc dans le dessin puis avec la sourie sélectionne le texte dans le calque un par un , aller dans le bloc a la position de l'attribut puis le colle " un clicks je sélectionne , un click je pose dans le bloc , une touche de fin de routine "echap""" Je ne peux pas faire une sélection sur le texte car le texte n'a pas le même nombres d'attributs que le bloc
christ-94 Posté(e) le 15 septembre 2006 Auteur Posté(e) le 15 septembre 2006 Bonjour J'ai trouvé sur le forum lisp un debut de reponse au probleme avec un lisp message http://www.cadxp.com/sujetXForum-11462.htm Lisp de fabcad (defun c:att ( / obj-txt chn obj-att att-tag att-val obj-blc blc-val) (setq obj-txt (nentsel "\n Choisir le texte de reference : ")) (setq chn (cdr (assoc 1 (entget (car obj-txt))))) (setq obj-att (nentsel "\n Choisir l'attribut à modifier : ")) (setq att-tag (cdr (assoc 2 (entget (car obj-att))))) (setq att-val (cdr (assoc 1 (entget (car obj-att))))) (alert (strcat "\nEtiquette de l'attribut : " att-tag ".\n" "Valeur de " att-tag " : " att-val ".\n" "Nouvelle valeur de " att-tag " : " chn ".")) (command "_attedit" "oui" "" att-tag att-val (car obj-att) "v" "r" chn "") (entdel (car obj-txt))) Par contre le probleme : il faut qu'il boucle pour que je n'ai pas a repete la fonction , et supprime le boite de dialogue d'autocad qui s'ouvre apres la fonction il ne fonctionne pas avec un bloc qui n'a pas d'attribut , il faut que l'attribut du bloc et deja un texte . Merci d'avance
Patrick_35 Posté(e) le 15 septembre 2006 Posté(e) le 15 septembre 2006 SalutUn petit truc vite fait (defun c:saisie(/ att sel) (while (setq sel (car (entsel "\nSélectionnez un texte (enter=exit) : "))) (setq sel (entget sel)) (if (member (cdr (assoc 0 sel)) '("TEXT" "MTEXT")) (progn (while (setq att (car (nentsel (strcat "\nValeur du texte à transférer : " (cdr (assoc 1 sel)) "\nSélectionnez un attribut (enter=exit) : ")))) (setq att (entget att)) (if (eq (cdr (assoc 0 att)) "ATTRIB") (progn (setq att (subst (assoc 1 sel) (assoc 1 att) att)) (entmod att) (entupd (cdr (assoc -1 att))) ) (princ "\nCe n'est pas un attribut.") ) ) ) (princ "\nCe n'est pas un texte.") ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
christ-94 Posté(e) le 15 septembre 2006 Auteur Posté(e) le 15 septembre 2006 Bonjour Merci pour ce super travail mais peut on garde le fait que le texte soit supprimé apres le collage dans le bloc sinon rien a dire "je suis un homme heureu "
Patrick_35 Posté(e) le 15 septembre 2006 Posté(e) le 15 septembre 2006 OuiLe lisp modifié (defun c:saisie(/ att sel) (while (setq sel (car (entsel "\nSélectionnez un texte (enter=exit) : "))) (setq sel (entget sel)) (if (member (cdr (assoc 0 sel)) '("TEXT" "MTEXT")) (progn (while (setq att (car (nentsel (strcat "\nValeur du texte à transférer : " (cdr (assoc 1 sel)) "\nSélectionnez un attribut (enter=exit) : ")))) (setq att (entget att)) (if (eq (cdr (assoc 0 att)) "ATTRIB") (progn (setq att (subst (assoc 1 sel) (assoc 1 att) att)) (entmod att) (entupd (cdr (assoc -1 att))) ) (princ "\nCe n'est pas un attribut.") ) ) (entdel (cdr (assoc -1 sel))) ) (princ "\nCe n'est pas un texte.") ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
christ-94 Posté(e) le 15 septembre 2006 Auteur Posté(e) le 15 septembre 2006 plus rien a dire sauf merci et un bon W-E Encore merci a vous Patrick_35, fabcad et didier pour votre aide
pjmean Posté(e) le 20 septembre 2006 Posté(e) le 20 septembre 2006 Bonjour, je suis intéressé par cette routine Lisp, seulement je n'y connais rien dans ce langage. J'ai enregistré la routine, elle est chargée dans AutoCAD, mais comment l'exécuter? Quelqu'un peut-il me renseigner également soit un TRES bon bouquin pour apprendre le Lisp, soit où je pourrais trouver une formation. Merci
(gile) Posté(e) le 20 septembre 2006 Posté(e) le 20 septembre 2006 Salut, Tu tapes saisie à la ligne de commande. (defun c:saisie ...) 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