Aller au contenu

Copier la valeur d'un attribut


Neo83

Messages recommandés

Bonjour à tous.

 

Je cherche à copier la valeur d'un attribut sur un autre attribut en cliquant d'un à l'autre. J'ai cherché sur le site sans succès. Avez-vous un petit lisp sous la main?

Je vous remercie pour vos réponses.

Sans nous, les machines ne sont rien

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous.

 

Je cherche à copier la valeur d'un attribut sur un autre attribut en cliquant d'un à l'autre. J'ai cherché sur le site sans succès. Avez-vous un petit lisp sous la main?

Je vous remercie pour vos réponses.

 

Salut,

 

Le lisp LATTde Patrick_35 devrait te plaire.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Steven,

 

Je te remercie pour ta réponse.

 

Je connais plus ou moins ce lisp. Il crée des chaines que l'on peut visualiser sur les dessin. Il est bien trop évolué pour ce que je souhaite faire. Je m'explique un peu mieux que dans mon mail précédent.

En fait dans mes cartouches j'ai un historique d'indice sur trois lignes.

 

A 13/12/12 Première émission

B 25/02/13 Mise à jour Entrée

C 24/06/13 Ajout escalier extérieur

 

Lors de l'ajout d'un quatrième indice je souhaite "remonter" les deux derniers indices et avoir:

 

B 25/02/13 Mise à jour Entrée

C 24/06/13 Ajout escalier extérieur

D 15/07/13 Ajout des faux-plafonds

 

Mon problème est que je dois réécrire mes indices. Même en Copiant Collant cette opération est source d'erreur. Je souhaite donc que le copier coller puisse ce faire via une manip qui serait plus sécurisante quant à la saisie des textes précédemment entrés.

 

A plus tard.

Sans nous, les machines ne sont rien

Lien vers le commentaire
Partager sur d’autres sites

Salut.

 

Ce que tu pourrais éventuellement faire, c'est te créer un tableau d'indices dans ton espace objet puis dans tes présentations, au niveau de ton cartouche, créer une fenêtre sur ton tableau d'indices en ne montrant que trois lignes. Puis lorsque tu ajoutes une ligne dans ton tableau d'indices, lorsque tu es dans une de tes présentations, tu vas dans la fenêtre des tes indices puis tu glisses le tableau vers le haut pour voir ta nouvelle ligne. En ce qui me concerne, c'est comme ça que je procède.

A moins que je n'ai pas bien compris ta question.

 

https://www.youtube.com/watch?v=PdNnIZ7U8E4

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Bonjour Steven,

Je te remercie pour ta réponse. Tu as très bien compris la question, pas de souci.

En fait j'ai en moyenne 18 présentations par fichier qui ne sont pas au même indice. J'ai peur de me perdre avec cette solution.

Je suis embêté.

 

Je peux avoir sur une présentation ceci:

A 13/12/12 Première émission

B 25/02/13 Mise à jour Entrée

C 24/06/13 Ajout escalier extérieur

 

Et sur une autre présentation du même fichier ceci:

A 15/02/13 Mise à jour Entrée

B 24/06/13 Ajout escalier extérieur

C 15/07/13 Ajout des faux-plafonds

 

Ces deux présentations vivent leur vie d'indice séparément, d'où mes ennuis.

En tous cas, je te remercie de t'intéresser au problème.

 

A plus tard.

Sans nous, les machines ne sont rien

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Neo.

 

Dans ce cas, au lieu de faire une fenêtre sur ton tableau d'indice, tu en fais deux. Une sur la colonne des indices et une seconde sur les dates et la description des indices. Puis tu fais coulisser les informations comme tu le souhaites.

 

Voici un exemple en image, à toi d'adapter le système, suivant ton cartouche ;)

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Retnuh.

 

Ce lisp est vraiment très bien.

Merci à Bryce pour l'avoir développer et à toi pour le mettre à disposition :)

 

Par contre, attention, si on utilise CTE avec un bloc qui à plusieurs attributs, le bloc est supprimé.

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

J'ai un lisp qui répond exactement à ta demande. Pouvoir indicer plusieurs plans dans un fichier tout en ayant des indices différents par plan.

J'avais dans l'idée de l'adapter pour qu'il puisse fonctionner sur n'importe quel type de cartouche. Mais c'est comme ma présence sur le forum, le temps me manque.

Donc, si tu me mets à disposition ton cartouche, j'adapte le lisp. Si ce n'est pas possible, je peux le mettre à disposition, mais à toi de l'adapter.

 

ps : En cas de dépassement d'indice, style je ne peux aller que jusqu'a D, c'est l'indice n°2 qui est écrasé et ainsi de suite. Le premier est toujours conservé.

pps : Le lisp ne gére que les indices 0, A, B, C, etc...

 

@+

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

Hello

 

Pour l'historique des sujets ayant parle de COPIE_TEXTE :

http://cadxp.com/index.php?/topic/33982-lisp-pour-transferer-un-txt-dans-un-attribut-de-bloc/page__pid__184007

puis :

http://cadxp.com/index.php?/topic/33842-resolu-bloc-avec-surface-et-texe-a-recuperer/

 

Fournisseur de la routine COPIE_TEXTE : PHILPHIL

mais l'auteur exact, je ne sais pas !?

 

lecrabe

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Un truc que j'avais écrit dans le passé (pas retouché depuis)

 

(vl-load-com)
(defun c:swap_texte ( / AcDoc Space loop key_mod e1name e2name string1 string2)
 (defun sel_onlyText (msg / js)
   (princ msg)
   (while
     (not
       (setq js
         (ssget "_+.:E:S:N" 
           (list
             (cons 0 "*TEXT,MULTILEADER,ATTRIB,INSERT")
             (cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
             (cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
           )
         )
       )
     )
   )
   (vlax-ename->vla-object (cadar (ssnamex js 0)))
 )
 (setq
   AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
   Space
   (if (eq (getvar "CVPORT") 1)
     (vla-get-PaperSpace AcDoc)
     (vla-get-ModelSpace AcDoc)
   )
   loop nil
 )
 (initget "Permutation Copie Multiple")
 (while (eq (setq key_mod (getkword (strcat "\nMode opératoire [Permutation/Copie/Multiple] " (if loop "**MULTIPLE**" "") "<Copie>: "))) "Multiple")
   (if (eq key_mod "Multiple")
     (if loop (setq loop nil) (setq loop T))
   )
   (initget "Permutation Copie Multiple")
 )
 (if (not key_mod) (setq key_mod "Copie"))
 (cond
   (loop
     (while (setq e1name (sel_onlyText (strcat "\nSélectionner le texte source pour la " key_mod " **MULTIPLE**: ")))
       (setq
         string1 (if (vlax-property-available-p e1name 'TextString) (vlax-get e1name 'TextString))
         e2name (sel_onlyText (strcat "\nSélectionner le texte cible pour la " key_mod " **MULTIPLE**: "))
         string2 (if (vlax-property-available-p e2name 'TextString) (vlax-get e2name 'TextString))
       )
       (cond
         ((and string1 string2)
           (if (eq key_mod "Permutation") (vlax-put e1name 'TextString string2))
           (vlax-put e2name 'TextString string1)
         )
       )
     )
   )
   (T
     (setq
       e1name (sel_onlyText (strcat "\nSélectionner le texte source pour la " key_mod  ": "))
       string1 (if (vlax-property-available-p e1name 'TextString) (vlax-get e1name 'TextString))
       e2name (sel_onlyText (strcat "\nSélectionner le texte cible pour la " key_mod ": "))
       string2 (if (vlax-property-available-p e2name 'TextString) (vlax-get e2name 'TextString))
     )
     (cond
       ((and string1 string2)
         (if (eq key_mod "Permutation") (vlax-put e1name 'TextString string2))
         (vlax-put e2name 'TextString string1)
       )
     )
   )
 )
 (prin1)
)

 

Un regen peut être utile après exécution suivant l'imbrication ou la nature des objets.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é