Aller au contenu

Rechercher plusieurs codes en 1 manipulation et les mettre en évidence


Messages recommandés

Posté(e)

Salut tout le monde,

Est ce que vous pensez que c'est possible de demander à Autocad de rechercher et de mettre en évidence un listing de code qui fait référence à une pièce.
A01235 => pièce 1
A01240 => pièce 2
A01260 => pièce 3
Etc...

Créer une commande avec ces codes A012XX et qu'il me les mettent en une certaines couleur pour que je les repères facilement par exemple.

Actuellement, j'utilise l'outil RECHERCHER et je tape le code et puis il recherche et me trouve celui ci mais c'est 1 à 1, ce qui me fait perdre du temps finalement.

Merci pour vos avis ou solutions

 

Jonathan

Posté(e)

Salut,

C'est juste un élément texte 
Ce texte est un numéro de local.
Le but est de sélectionner certains locaux dont j'ai leur numéro et de les mettre en évidence pour que le groupe de travail se penche uniquement sur ces locaux.
Ca leur évite de chercher le numéro, le local sur des plans A0 complexe.

Posté(e)

Je viens d'essayer avec l'outil sélection rapide/ type d'objet = Textmult / Index et puis mon code... et là ça fonctionne, il me le sélectionne bien.
mais par contre cet outil ne fonctionne pas si je veux faire une série de code différent.

Posté(e)

Bonjour,

Voici un petit lisp 

(vl-load-com)
(defun c:A01235 ( / acdc)
    (setq acdc (vla-get-activedocument (vlax-get-acad-object)))
    (vlax-for obj (vla-get-modelspace acdc)
        (if (and (= (vla-get-ObjectName obj) "AcDbText")
                 (= (vla-get-TextString obj) "A01235")
            )
            (vla-put-color obj acred)
        )
    )
)

 

Posté(e)
il y a 4 minutes, Fraid a dit :

Bonjour,

Voici un petit lisp 

(defun c:A01235 ( / acdc)
    (setq acdc (vla-get-activedocument (vlax-get-acad-object)))
    (vlax-for obj (vla-get-modelspace acdc)
        (if (and (= (vla-get-ObjectName obj) "AcDbText")
                 (= (vla-get-TextString obj) "A01235")
            )
            (vla-put-color obj acred)
        )
    )
)

 

Merci, peux tu me dire ce que ce lisp va faire?
De manière a ce que je le comprenne et que je puisse le modifier avec le restant de mes  numéros de locaux?

Posté(e)

donc pour les 2

(vl-load-com)
(defun c:A01235 ( / acdc)
    (setq acdc (vla-get-activedocument (vlax-get-acad-object)))
    (vlax-for obj (vla-get-modelspace acdc)
        (if (and (or (= (vla-get-ObjectName obj) "AcDbMText")(= (vla-get-ObjectName obj) "AcDbText"))
                 (= (vla-get-TextString obj) "A01235")
            )
            (vla-put-color obj acred)
        )
    )
)

si tu veux en bleu tu remplace acred par acblue

Posté(e)

super! merci beaucoup
Et crois tu qu'il est possible de demander a la fin de ton lisp qu'il maintien la sélection de ce qu'il a modifié?
Pour mettre une succession de code, je dois utiliser la ligne 

(= (vla-get-TextString obj) "A01235";"A01240";......;......) 

C'est bien cela?

Posté(e)
il y a 35 minutes, Jbrosteaux a dit :

maintien la sélection de ce qu'il a modifié

Pourquoi? a tu une autre action à réaliser sur les objets modifiés?

il y a 35 minutes, Jbrosteaux a dit :

succession de code

Non, ce n'est pas la bonne méthode. j'ai répondu à ton premier post. donc une version ou tu peux agrémenté cette liste ("A01235" "A01240" "A01260")

(vl-load-com)
(defun c:A0X ( / acdc)
    (setq acdc (vla-get-activedocument (vlax-get-acad-object)))
    (vlax-for obj (vla-get-modelspace acdc)
        (if (and (or (= (vla-get-ObjectName obj) "AcDbMText")(= (vla-get-ObjectName obj) "AcDbText"))
                 (member (vla-get-TextString obj) '("A01235" "A01240" "A01260"))
            )
            (vla-put-color obj acred)
        )
    )
)

 

Posté(e)
il y a 12 minutes, Fraid a dit :

Pourquoi? a tu une autre action à réaliser sur les objets modifiés?

Non, ce n'est pas la bonne méthode. j'ai répondu à ton premier post. donc une version ou tu peux agrémenté cette liste ("A01235" "A01240" "A01260")

(vl-load-com)
(defun c:A0X ( / acdc)
    (setq acdc (vla-get-activedocument (vlax-get-acad-object)))
    (vlax-for obj (vla-get-modelspace acdc)
        (if (and (or (= (vla-get-ObjectName obj) "AcDbMText")(= (vla-get-ObjectName obj) "AcDbText"))
                 (member (vla-get-TextString obj) ("A01235" "A01240" "A01260"))
            )
            (vla-put-color obj acred)
        )
    )
)

 

Quand j'utilise ton lisp avec la succession de numéro, rien ne se passe. il m'indique _mtedit A01235 nil 
par contre si je reprends le tout premier lisp là ça fonctionne mais il n'y a qu'un numéro

Posté(e)

Désolé, je programme à l'aveugle, mon Autocad est trop occupé, (moi aussi, je fait 15 truc en même temps)

j'ai oublié une apostrophe, j'ai modifié mon code.

pour la selection, comme ce n'est pas quelque chose que je fait couramment, il faut que je réfléchisse.

Posté(e)
Il y a 21 heures, Jbrosteaux a dit :

maintien la sélection

Yop, de rien

une version qui te sélectionne les textes concernés et commentée

(vl-load-com) ;Chargement des fonctions ActiveX.
(defun c:A0X ( / acdc sel) ;Définition de la commande et des variables.
    (sssetfirst nil nil) ;Annule une éventuelle sélection.
    (setq acdc (vla-get-activedocument (vlax-get-acad-object)) ;Database du document.
          sel (ssadd) ;Création d'une sélection vide
    )
    (vlax-for obj (vla-get-modelspace acdc) ;Pour chaque objet dans l'espace objet.
        (if ;Si l'objet est un texte ou texte multiligne et que le contenu soit dans une liste.
            (and (or (= (vla-get-ObjectName obj) "AcDbMText")(= (vla-get-ObjectName obj) "AcDbText"))
                 (member (vla-get-TextString obj) '("A01235" "A01240" "A01260"))
            )
            (progn
                (vla-put-color obj acred) ;Change sa couleur en Rouge.
                (ssadd (vlax-vla-object->ename obj) sel) ;L'ajoute au jeu de séléction.
            )
        )
    )
    (sssetfirst nil sel);Sélection
    (princ);Sortie propre
)

 

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • 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é