Aller au contenu

Changer Layer des attributs


Manu_CAD

Messages recommandés

Salut,

Essaye ça:

(defun c:manu_CAD (/ blk ent elst)
  (while (setq blk (tblnext "block" (not blk)))
    (setq ent (cdr (assoc -2 blk)))
    (while ent
      (if (= (cdr (assoc 0 (setq elst (entget ent)))) "ATTDEF")
	(entmod
	  (subst (cons 8 "ELEC") (assoc 8 elst) elst)
	)
      )
      (setq ent (entnext ent))
    )
    (command-s "_.attsync" "_name" (cdr (assoc 2 blk)))
  )
  (princ)
)

 

  • Like 1

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Il y a 9 heures, (gile) a dit :

Salut,

Essaye ça:

(defun c:manu_CAD (/ blk ent elst)
  (while (setq blk (tblnext "block" (not blk)))
    (setq ent (cdr (assoc -2 blk)))
    (while ent
      (if (= (cdr (assoc 0 (setq elst (entget ent)))) "ATTDEF")
	(entmod
	  (subst (cons 8 "ELEC") (assoc 8 elst) elst)
	)
      )
      (setq ent (entnext ent))
    )
    (command-s "_.attsync" "_name" (cdr (assoc 2 blk)))
  )
  (princ)
)

 

Salut Gile,

Super, ça marche merci !

Puis-je encore solliciter ton aide 😉

Après le attsync, j'ai le TAG "14" qui s'est mis en rotation 0° au lieu de 90° et est-il possible de changer le layer du graphique d'un bloc en lisp?

Les dwg sont le résultat d'un export d'un autre logiciel et on doit remettre certaine valeur pour le client.

Un grand merci pour ton aide

 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Manu_CAD a dit :

Après le attsync, j'ai le TAG "14" qui s'est mis en rotation 0° au lieu de 90°

S'il n'y a qu'une définition de bloc à modifier, tu peux utiliser la commande GESTATTB (_BATTMAN) : dans la boite de dialogue, sélectionner l'attribut > Modifier... > onglet Options de texte > Rotation.

 

Il y a 2 heures, Manu_CAD a dit :

est-il possible de changer le layer du graphique d'un bloc en lisp

Je ne comprends pas la question ("le layer du graphique d'un bloc"), mais là encore, c'est faisable sans LISP avec  l'éditeur de bloc (commande MODIFBLOC ou _BEDIT).

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

Le 16/01/2023 à 08:50, (gile) a dit :

S'il n'y a qu'une définition de bloc à modifier, tu peux utiliser la commande GESTATTB (_BATTMAN) : dans la boite de dialogue, sélectionner l'attribut > Modifier... > onglet Options de texte > Rotation.

 

Je ne comprends pas la question ("le layer du graphique d'un bloc"), mais là encore, c'est faisable sans LISP avec  l'éditeur de bloc (commande MODIFBLOC ou _BEDIT).

Je dois faire ça sur des centaines de plans.

C'est pour ça, que je me demandais si on pouvait automatiser, en plus les noms de bloc peuvent être différents.

Merci

Modifié par Manu_CAD
Modification
Lien vers le commentaire
Partager sur d’autres sites

Le 16/01/2023 à 08:50, (gile) a dit :

S'il n'y a qu'une définition de bloc à modifier, tu peux utiliser la commande GESTATTB (_BATTMAN) : dans la boite de dialogue, sélectionner l'attribut > Modifier... > onglet Options de texte > Rotation.

 

Je ne comprends pas la question ("le layer du graphique d'un bloc"), mais là encore, c'est faisable sans LISP avec  l'éditeur de bloc (commande MODIFBLOC ou _BEDIT).

Bonjour Gilles,

Comme les plans ont été exporté d'un autre logiciel, je dois corriger certains paramètres.

Et dans les blocs, je dois modifier le calque de tous les objets graphiques du bloc et les mettre dans le layer 'ELEC".

Je ne sais pas si c'est faisable ?

D'avance merci pour ton aide

Lien vers le commentaire
Partager sur d’autres sites

Dans le message original, tu disais :

Le 15/01/2023 à 20:02, Manu_CAD a dit :

Je dois remplacer le layer des attributs de tous les blocs dans le layer "ELEC".

Donc, j'ai écris quelque chose en conséquence.

Maintenant, tu dis :

il y a 19 minutes, Manu_CAD a dit :

Et dans les blocs, je dois modifier le calque de tous les objets graphiques du bloc et les mettre dans le layer 'ELEC".

Pour changer le calque (entre autres) de toutes les entités des blocs d'un dessin, il y a Edit_Bloc sur cette page (penser à débloquer le ZIP avant d'extraire tout).

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, (gile) a dit :

Dans le message original, tu disais :

Donc, j'ai écris quelque chose en conséquence.

Maintenant, tu dis :

Pour changer le calque (entre autres) de toutes les entités des blocs d'un dessin, il y a Edit_Bloc sur cette page (penser à débloquer le ZIP avant d'extraire tout).

Merci pour l'outil 🙂

Mais sait-on le faire tourner en script ?

Car j'ai toujours la boite de dialogue qui s'ouvre.

Merci

Lien vers le commentaire
Partager sur d’autres sites

Non, il y a toujours la boite de dialogue.

Pour mettre toutes les entités des tous les blocs sur le calque "ELEC" :

(defun c:manu_CAD (/ blk ent elst)
  (while (setq blk (tblnext "block" (not blk)))
    (setq ent (cdr (assoc -2 blk)))
    (while ent
      (entmod (subst (cons 8 "ELEC") (assoc 8 elst) elst))
      (setq ent (entnext ent))
    )
    (command-s "_.attsync" "_name" (cdr (assoc 2 blk)))
  )
  (princ)
)

 

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

il y a 11 minutes, (gile) a dit :

Non, il y a toujours la boite de dialogue.

Pour mettre toutes les entités des tous les blocs sur le calque "ELEC" :

(defun c:manu_CAD (/ blk ent elst)
  (while (setq blk (tblnext "block" (not blk)))
    (setq ent (cdr (assoc -2 blk)))
    (while ent
      (entmod (subst (cons 8 "ELEC") (assoc 8 elst) elst))
      (setq ent (entnext ent))
    )
    (command-s "_.attsync" "_name" (cdr (assoc 2 blk)))
  )
  (princ)
)

 

Il ne change pas le calque du graphique des blocs ( ex: les ligne qui sont dans Eplan200, doit être mis dans le claque ELEC).

Je te joins le fichier pour toi voir.

Merci

_3.dwg

Lien vers le commentaire
Partager sur d’autres sites

Oupss!...

Une ligne avait sauté.

(defun c:manu_CAD (/ blk ent elst)
  (while (setq blk (tblnext "block" (not blk)))
    (setq ent (cdr (assoc -2 blk)))
    (while ent
      (setq elst (entget ent))
      (entmod (subst (cons 8 "ELEC") (assoc 8 elst) elst))
      (setq ent (entnext ent))
    )
    (command-s "_.attsync" "_name" (cdr (assoc 2 blk)))
  )
  (princ)
)

 

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

il y a 2 minutes, (gile) a dit :

Oupss!...

Une ligne avait sauté.

(defun c:manu_CAD (/ blk ent elst)
  (while (setq blk (tblnext "block" (not blk)))
    (setq ent (cdr (assoc -2 blk)))
    (while ent
      (setq elst (entget ent))
      (entmod (subst (cons 8 "ELEC") (assoc 8 elst) elst))
      (setq ent (entnext ent))
    )
    (command-s "_.attsync" "_name" (cdr (assoc 2 blk)))
  )
  (princ)
)

 

Un grand merci Gilles, le lisp fonctionne très bien 🙂

J'ai suivi une petite formation pour apprendre le lisp, j'aimerai pouvoir le métriser comme toi 🙂

Merci et bonne soirée

 

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é