Aller au contenu

CHANGER DE CAQUE PLUSIEURS BLOCS DANS PLUSIEURS PLANS


jacky91

Messages recommandés

Bonjour a tous,

et bonne fête de fin d' année...

 

Je souhaite remercier tous ceux qui nous aide a améliorer le quotidien avec leur programme très utile.

J' aimerais savoir s' il est possible de selectionner plusieurs blocs par leur nom pour les déplacer sur d' autres calques et cela sur plusieurs fichiers.

Je vous joint en exemple les légendes contenant les blocs avec a coté les nom de calque sur lequel je voudrais qu'il soit déplacer.

 

J' espère que mes explications sont compréhensible.

Ci joint le fichier dont l' extension zip est a renommer par dwg.

 

Merci a tous

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Voici un exemple de Lisp pour transférer les blocs sur les bons calques:

(setq calques (list
 (cons "LB" "-CF-TERB-CFA-SUR")
 (cons "SERRURE ELECTRONIQUE" "-CF-TERB-CFA-SUR")
 (cons "CAMERA" "-CF-TERH-CFA-SUR")
 (cons "RONDIER" "-CF-TERB-CFA-SUR")
 (cons "BLOC PORTE" "-CF-TERB-AM")
))
(if (setq blocs (ssget "_X" '( (0 . "INSERT") )) )
 (progn
   (setq i -1)
   (repeat (sslength blocs)
     (setq bloc (entget (ssname blocs (setq i (1+ i)))))
     (if (setq calque (cdr (assoc (cdr (assoc 2 bloc)) calques)))
      (entmod (subst (cons 8 calque) (assoc 8 bloc) bloc))
     )
   )
 )
)

Il faut bien sûr compléter la liste de correspondances bloc/calque au début du code...

 

S'il y a beaucoup de fichiers à traiter, tu peux utiliser un script pour appliquer ce Lisp à tous les fichiers.

Ce script sera plus facile à créer en utilisant un générateur de script comme SAS ou Sequence

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Merçi pour ton lisp fonctionne super bien ( crée aussi les calques ouahh ...)

Je fais le compléter (...), il sera bien utile dans énormement de cas.

J' utilise SRIPTOR pour traiter plusieurs plans.

 

Peut-on faire une commande "BLCAL"pour l' appliquer a un seul fichier en cours

 

Merci encore et joyeuse fête de fin d' année...

 

@+

Lien vers le commentaire
Partager sur d’autres sites

Peut-on faire une commande "BLCAL"pour l' appliquer a un seul fichier en cours

 

Oui, il suffit d'"encapsuler" le code dans une instruction (defun) : ;)

 

(defun C:BLCAL ( / calques calque blocs bloc i)

 (setq calques (list
   (cons "LB" "-CF-TERB-CFA-SUR")
   (cons "SERRURE ELECTRONIQUE" "-CF-TERB-CFA-SUR")
   (cons "CAMERA" "-CF-TERH-CFA-SUR")
   (cons "RONDIER" "-CF-TERB-CFA-SUR")
   (cons "BLOC PORTE" "-CF-TERB-AM")
 ))
 (if (setq blocs (ssget "_X" '( (0 . "INSERT") )) )
   (progn
     (setq i -1)
     (repeat (sslength blocs)
       (setq bloc (entget (ssname blocs (setq i (1+ i)))))
       (if (setq calque (cdr (assoc (cdr (assoc 2 bloc)) calques)))
        (entmod (subst (cons 8 calque) (assoc 8 bloc) bloc))
       )
     )
   )
 )

)

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é