Manu_CAD Posté(e) le 15 janvier 2023 Posté(e) le 15 janvier 2023 Bonsoir, Je dois remplacer le layer des attributs de tous les blocs dans le layer "ELEC". Pouvez-vous me dire si c'est possible et si un lisp existe ? D'avance merci
(gile) Posté(e) le 15 janvier 2023 Posté(e) le 15 janvier 2023 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) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Manu_CAD Posté(e) le 16 janvier 2023 Auteur Posté(e) le 16 janvier 2023 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
(gile) Posté(e) le 16 janvier 2023 Posté(e) le 16 janvier 2023 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 - GitHub Développements sur mesure pour AutoCAD
Manu_CAD Posté(e) le 16 janvier 2023 Auteur Posté(e) le 16 janvier 2023 (modifié) 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é le 17 janvier 2023 par Manu_CAD Modification
Manu_CAD Posté(e) le 17 janvier 2023 Auteur Posté(e) le 17 janvier 2023 Le 16/01/2023 à 09:01, Manu_CAD a dit :
Manu_CAD Posté(e) le 17 janvier 2023 Auteur Posté(e) le 17 janvier 2023 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
(gile) Posté(e) le 17 janvier 2023 Posté(e) le 17 janvier 2023 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 - GitHub Développements sur mesure pour AutoCAD
Manu_CAD Posté(e) le 17 janvier 2023 Auteur Posté(e) le 17 janvier 2023 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
(gile) Posté(e) le 17 janvier 2023 Posté(e) le 17 janvier 2023 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 - GitHub Développements sur mesure pour AutoCAD
Manu_CAD Posté(e) le 17 janvier 2023 Auteur Posté(e) le 17 janvier 2023 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
(gile) Posté(e) le 17 janvier 2023 Posté(e) le 17 janvier 2023 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 - GitHub Développements sur mesure pour AutoCAD
Manu_CAD Posté(e) le 17 janvier 2023 Auteur Posté(e) le 17 janvier 2023 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant