Aller au contenu

Integre du texte dans un bloc automatiquement


christ-94

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Salut

Un 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Oui

Le 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité