CADxp: Remplacement de bloc par un autre - CADxp

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Remplacement de bloc par un autre Le but étant de changer aussi la valeur de l'étiquette

#1 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 24 avril 2012 - 15:43

Voici ma problématique :

J'ai tout un tas de bloc contenant l'étiquette REF dans laquelle la valeur est la référence de l'élément.
Quand j’insère mes éléments, les étiquettes sont déjà remplis, inutiles d'y toucher elles ne servent qu'à l'extraction d'attribut pour la nomenclature.
La je dois remplacer plusieurs milliers d'élément par d'autres, pas de probleme avec les express tools les bloc sont remplacés en trois secondes. Le problème c'est que la valeur de l'étiquette REF n'est pas modifiée elle, et je me retrouve avec des éléments comportant des références qui ne sont pas les leur.

Donc quelqu'un aurait il une solution pour que la valeur de l'étiquette soit mise à jour également?

Merci
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#2 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3581
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 24 avril 2012 - 18:05

Salut.

Il y a le lisp RBLOC de Patrick_35 ;)
Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#3 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 26 avril 2012 - 10:25

Je voudrais bien mais le fichier est corrompu a priori...
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#4 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6381
  • Inscrit(e) : 06-janvier 03

Posté 26 avril 2012 - 10:44

Voir le messageFundream, le 26 avril 2012 - 10:25 , dit :

Je voudrais bien mais le fichier est corrompu a priori...

Salut

Le lien vient d'être réparé.

@+
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
0

#5 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 26 avril 2012 - 10:53

Merci. Qu'est ce que le .dcl?
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#6 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3581
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 26 avril 2012 - 13:44

Voir le messageFundream, le 26 avril 2012 - 10:53 , dit :

Merci. Qu'est ce que le .dcl?


Le fichier dcl est le fichier qui te permet d'avoir une fenêtre de dialogue lors de tes remplacements de blocs avec différentes options.
Il fauut que le fichier .dcl et le fichier.lsp soit au même endroit pour que celà fonctionne.

Image IPB

Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#7 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 26 avril 2012 - 14:26

Merci c'est bien ce que je pensais et Patrick me la confirmé en MP.
Super lisp en tout cas, les express tools peuvent aller se rhabiller.
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#8 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 30 avril 2012 - 14:50

Bon allé on va dire que je suis gourmand mais bon...
Le lisp marche super bien mais dans mon cas il est un peu long a utiliser.

En fait j'ai énormément de bloc différents à remplacer par d'autres, c'est dans le cadre d'un changement de fournisseur et donc tout le matériel est remplacé par du matériel équivalent.

Ce qui serait vraiment génial c'est de pouvoir établir une liste de correspondance, et que le lisp se charge de tout changer en une seule fois, est-ce possible?

Merci
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#9 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3581
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 02 mai 2012 - 21:31

Pourrais-tu envoyer un de tes fichiers pour voir comment il est fait au niveau de tes blocs stp?
Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#10 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 03 mai 2012 - 08:01

Je te l'envoi en MP
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#11 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3581
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 04 mai 2012 - 15:36

Salut Fundream.

D'après ce que j'ai pu comprendre, tu un des blocs A que tu remplaces par des blocs B; Puis des blocs C que tu remplace par des blocs D; C'est bien ça? Le souci est que tes blocs B conservent les reférences d'attributs des blocs A et pareils avec les blocs C qui conservent les références d'attributs des blocs C. C'est bien ça? Pourquoi ne fais tu pas un Séléctionner similaire en sélectionnant un bloc B puis tu changes la référence d'attribut par la fenêtre de propriété?
Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#12 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 04 mai 2012 - 15:55

C'est tout a fait ça. je pourrais effectivement faire une sélection similaire mais ça va prendre pas mal de temps de retrouver toutes les bonnes référence des éléments et j'ai pas intérêt d'en oublier une seule sinon la nomenclature ne correspondra pas. D'ou mon interet pour le tout automatisé.

Merci de te pencher sur la question.
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#13 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2160
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 05 mai 2012 - 10:24

Bonjour,

Voici un Lisp qui pourra peut-être faire l'affaire.
Les "couples" de blocs sont cherchés dans un fichier texte:
- un couple par ligne
- sur chaque ligne, le nom du bloc à remplacer et le nom du nouveau bloc, séparés par un point-virgule.
Par exemple :
ancienbloc;nouveaubloc
bloca;blocb


Les blocs de remplacement doivent exister dans le dessin, ou sous forme de fichiers dwg dans un chemin de recherche d'AutoCAD.

(defun c:SWAPBLOCKS ( / acdoc ms *error* plist sep f l flst i ob nb ss vlnb )

  ; Caractère de séparation entre l'ancien bloc et le nouveau dans le fichier texte:
  (setq sep ";")

  ; Liste des propriétés de l'ancien bloc à appliquer au bloc de remplacement
  ; (l'échelle en X, Y et Z et l'angle de rotation sont récupérés d'office):
  (setq plist '("Layer" "TrueColor" "Linetype" "LinetypeScale" "LineWeight"))

  (vl-load-com)
  (setq acdoc (vla-get-activedocument (vlax-get-acad-object))
        ms (vla-get-modelspace acdoc))

  (defun *error* (msg)
    (and msg
      (or
        (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
        (princ (strcat "\nErreur : " msg))
      )
    )
    (if ss (setq ss nil))
    (vla-endundomark acdoc)
    (princ)
  )

  (vla-startundomark acdoc)
  
  (setq flst '()
        f (getfiled "" "" "txt" 4))
  (if (and f (setq f (open f "r")))
    (progn
      (while (setq l (read-line f))
        (setq flst (cons l flst))
      )
      (close f)
      (setq flst (reverse flst))
    )
  )
  
  (foreach l flst
    (setq i (vl-string-search sep l)
          ob (substr l 1 i)
          nb (substr l (+ i 2)))
    (princ (strcat "\n\nRemplacement de " ob " par " nb ":"))
    (setq ss (ssget "_X" (list (cons 0 "INSERT")(cons 2 ob)(cons 410 "Model") )))
    (if ss
      (if (or (tblsearch "BLOCK" nb) (setq nb (findfile (strcat nb ".dwg"))))
        (progn
          (setq i 0)
          (repeat (sslength ss)
            (setq ob (vlax-ename->vla-object (ssname ss i)))
            (setq vlnb (vla-insertblock ms
                (vla-get-InsertionPoint ob)
                nb
                (vla-get-XScaleFactor ob)
                (vla-get-YScaleFactor ob)
                (vla-get-ZScaleFactor ob)
                (vla-get-Rotation ob)))
            (foreach p plist
              (eval (read (strcat "(vla-put-" p " vlnb (vla-get-" p " ob))")))
            )
            (vla-delete ob)
            (setq i (+ 1 i))
          );repeat
          (setq ss nil)
          (princ (strcat "\n" (itoa i) " blocs remplacés."))
        );progn
        (princ (strcat "\nBloc " nb " non trouvé, remplacement non effectué."))
      );if
      (princ (strcat "\nAucun bloc " ob " à remplacer."))
    );if ss
  );foreach
  (*error* nil)
)

1

#14 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3581
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 05 mai 2012 - 14:50

Je ne l'ai pas encore essayé, mais j'ai l'impression que Bryce nous a encore créer un lisp de ouf malade Image IPB

Sinon, as-tu essayé de d'exporter avec un ATTOUT tes attributs de blocs, remplacer toutes tes référence d'attributs dans le fichier texte via Excel puis faire un ATTIN pour les réimporter dans ton dessin?
Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#15 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 07 mai 2012 - 13:17

Que dire si ce n'est MERCI!!! Vraiment c'est impeccable là!
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#16 L'utilisateur est hors-ligne   Steven 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3581
  • Inscrit(e) : 03-mars 03
  • LocationDans le TARDIS

Posté 08 mai 2012 - 12:47

Voir le messageFundream, le 07 mai 2012 - 13:17 , dit :

Que dire si ce n'est MERCI!!! Vraiment c'est impeccable là!



Cool :) Mais qu'elle méthode as-tu appliqué?
Steven________________________________________
Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.
Pour la maison; Linux Mint et pas de problèmes. Mais pas d'AutoCAD.
En rêve; AutoCAD sous Linux.
0

#17 L'utilisateur est hors-ligne   Fundream 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 25-novembre 11

Posté 08 mai 2012 - 14:41

Le lisp avec le txt par soucis d'automatisme. Merci encore.
Autocad 2015 - Lumion 3D - SCIA Engineer
I7 6700K 4 cores @4.0Ghz - 32Go DDR4 - GTX980ti 6Gb - SSD 512Go - Windows 7 64 bits.
0

#18 L'utilisateur est hors-ligne   francinez 

  • ceinture orange
  • Groupe : Membres
  • Messages : 28
  • Inscrit(e) : 29-octobre 09
  • LocationBâle

Posté 04 juillet 2016 - 08:13

Bonjour Bryce,

J'ai utilisé votre Lisp et cela fonctionne impeccablement.
J'aurais juste 2 questions:
-Est-il possible que l'on donne le nom du fichier txt directement dans le lisp?
-Les blocs que je veux renommer se trouve dans différents chemins, peux t-on les rajouter dans ce lisp?
Avec ces 2 changements je pourrais utiliser ce lisp sans avoir à ouvrir tous les plans.

Encore merci
Francine
0

#19 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2160
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 06 juillet 2016 - 18:44

Bonjour,

Pour la question 1, il faut remplacer cette partie
(setq flst '()
        f (getfiled "" "" "txt" 4))

par
(setq flst '()
        f "C:\\chemin vers le fichier texte\\fichier.txt")

Attention à bien doubler les \ dans le chemin.

Pour la question 2, je pense que le plus simple est d'ajouter les chemins en tant que chemins de supports dans les options d'AutoCAD (onglet Fichiers).
1

#20 L'utilisateur est hors-ligne   FormaBois 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1376
  • Inscrit(e) : 18-mai 06

Posté 06 juillet 2016 - 19:23

Bonjour,
est-il possible de faire quelque chose de similaire, sans être aussi sophistiqué, pour une version LT ?
Studio Gfilm - Agence de communication par l'image

"Le matin tu peux rester couché pour poursuivre ton rêve, ou te lever pour le réaliser"
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)