jalna Posté(e) le 22 avril 2008 Posté(e) le 22 avril 2008 Comme pour les calques, il serait bien de pouvoir cadennasser un bloc non pas ar son calque d'isertion, mais par son nom!! "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
Patrick_35 Posté(e) le 22 avril 2008 Posté(e) le 22 avril 2008 Salut Pour rendre un bloc Décomposable ou pas (avec la même commande) (defun c:bld(/ bl) (if (setq bl (ssget "_:e:s" (list (cons 0 "INSERT")))) (progn (setq bl (vlax-ename->vla-object (ssname bl 0))) (if (not (vlax-property-available-p bl 'path)) (progn (if (vlax-property-available-p bl 'effectivename) (setq bl (vla-get-effectivename bl)) (setq bl (vla-get-name bl)) ) (setq bl (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) bl)) (if (eq (vla-get-explodable bl) :vlax-true) (progn (vla-put-explodable bl :vlax-false) (princ (strcat "\nLe bloc " (vla-get-name bl) " ne peut plus être décomposé.")) ) (progn (vla-put-explodable bl :vlax-true) (princ (strcat "\nLe bloc " (vla-get-name bl) " est décomposable.")) ) ) ) ) ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
lili2006 Posté(e) le 22 avril 2008 Posté(e) le 22 avril 2008 Bonsoir à toutes et tous, Suffisait d'd'mander,..! Merci Patrick_35. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
LUDWIG Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Super ! Merci Patrick !Serait-ce possible de l'adapter pour traiter l'ensemble des blocs du dessin ? Sans passer par du lisp, comment quelqu'un peut contrer cette méthode pour exploser un bloc ? Autocad 2021 - Revit 2022 - Windows 10
jalna Posté(e) le 23 avril 2008 Auteur Posté(e) le 23 avril 2008 Merci Patrick_35. Mais je recherche à cadenasser des blocs par leurs nom "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
(gile) Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Sans passer par du lisp, comment quelqu'un peut contrer cette méthode pour exploser un bloc ? En passant par l'éditeur de blocs et la fenêtre de propriétés (Autoriser la décomposition) [Edité le 23/4/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Bonjour à toutes et tous, (gile), quand tu rentres dans l'éditeur de bloc, ce n'est plus un bloc, alors ou trouves-tu cette option (Autoriser la décomposition) ? Merci d'avance. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
LUDWIG Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Bonne question. Lors de la création d'un bloc, l'option est disponible.Mais je ne l'a trouve pas non plus pour modifier ce paramètre sur un bloc existant. Tant mieux ! Autocad 2021 - Revit 2022 - Windows 10
(gile) Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Salut, Dans l'éditeur, si aucun objet n'est sélectionné, la fenêtre de propriété affiche les propriétés de la définition du bloc (case du bas). http://img149.imageshack.us/img149/3742/blocry2.png Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lili2006 Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Re, Aie ! Merci pour l'astuce (gile). Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
jalna Posté(e) le 23 avril 2008 Auteur Posté(e) le 23 avril 2008 Bon, je crois qu'il doit y avoir une fonction interne à AutoCAD pour cadenasser un bloc!! :cool: "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
(gile) Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Re, Serait-ce possible de l'adapter pour traiter l'ensemble des blocs du dessin ? (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vla-put-explodable b :vlax-false) ) Mais je recherche à cadenasser des blocs par leurs nom (defun c:verrbl (/ name) (vl-load-com) (setq name (getstring T "\Nom du bloc: ")) (if (tblsearch "BLOCK" name) (vla-put-explodable (vla-item (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) name ) :vlax-false ) (princ "\Le bloc \"" name "\" est introuvable.") ) (princ) ) Sans passer par du lisp, comment quelqu'un peut contrer cette méthode pour exploser un bloc ? Oui, comme montré ci dessus, une parade (qui vaut ce qu'elle vaut) avec un réacteur qui verrouille systématiquement tous les blocs au lancement de la commande EXPLODE.Pour que ceci fonctionne les routines doivent être chargées dans le dessin et les expressions :(unexplodeblock-on) active le réacteur(unexplodeblock-off) désactive le réacteurDonc dans un fichier de chargement automatique (acaddoc.lsp ou AutoCAD.mnl) coller les routines suivantes suivies de l'expression (unexplodeblock-on) activera automatiquement le récteur à chaque ouverture de dessin. (defun unexplodeblock-on () (or *unexplode-reac* (setq *unexplode-reac* (vlr-command-reactor nil '((:vlr-commandWillStart . gilelockblock)) ) ) ) (princ "\nVerrouillage des blocs activé") ) (defun unexplodeblock-off () (and *unexplode-reac* (vlr-remove *unexplode-reac*) (setq *unexplode-reac* nil) ) (princ "\nVerrouillage des blocs désactivé") ) (defun gilelockblock (rea cmd) (if (= (car cmd) "EXPLODE") (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vla-put-explodable b :vlax-false) ) ) ) [Edité le 23/4/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
jalna Posté(e) le 23 avril 2008 Auteur Posté(e) le 23 avril 2008 Salut (gile) et merci! Une erreur se glisse avec le lisp (defun c:verrbl (name)(vl-load-com)(setq name (getstring T "\Nom du bloc: "))(if (tblsearch "BLOCK" name)(vla-put-explodable(vla-item (vla-get-Blocks(vla-get-ActiveDocument(vlax-get-acad-object)))name):vlax-false)(princ "\Le bloc \"" name "\" est introuvable."))(princ)) Voila l'erreur; erreur: nombre d'arguments insuffisants "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
(gile) Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Oupss ! J'ai tapé un peu vite, il faut remplacer (defun c:verrbl (name) par (defun c:verrbl (/ name) ou re-copier le code (corrigé). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
jalna Posté(e) le 23 avril 2008 Auteur Posté(e) le 23 avril 2008 Ok merci! Mais je recherche autre chose ! Je m'explique! J'ai un calque1Sur ce calque j'ai 3 blocs(b1-b2-b3), répété x foisJe veux tout effacer sauf tous les b2 c'est la le soucis si je cadenasse le calque 1 c'est mes blocs (b1-b2-b3) qui sont aussi cadenassés! Suis-je clair? "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
(gile) Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Je crois qu'il y a un malentendu sur la signification de "cadenasser".Les LISP que j'ai donné, comme celui de Patrick_35 jouent sur la possibilité ou non de décomposer un ou des blocs. S'il s'agit de verrouiller des entités comme on verrouille un calque (qu'on ne puisse plus les modifier), je ne vois pas de solution. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 Salut Que vois-je ;) Des réacteurs by (gile) :laugh: :laugh: :laugh: JalnaLa demande est un peu plus précise, mais comme (gile) est dans un grand jour avec les réacteurs, je lui laisse la suite :D Edit : Ah, on s'est croisé. La solution est de choisir dans une liste les blocs à "verrouiller", d'inscrire ces blocs avec les ldata.Dans les réacteurs de commande, d'intercepter la commande décomposer, de regarder dans le jeu de sélection s'il y a des blocs dans la liste pour les enlever du jeu de sélection.Bon, je vois cela de ma fenêtre, mais cela doit être faisable. Sinon, reste la solution de mettre les blocs que l'on souhaite verrouiller sur un calque à part qui lui sera verrouillé. @+ [Edité le 23/4/2008 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
jalna Posté(e) le 23 avril 2008 Auteur Posté(e) le 23 avril 2008 Je crois qu'il y a un malentendu sur la signification de "cadenasser".Les LISP que j'ai donné, comme celui de Patrick_35 jouent sur la possibilité ou non de décomposer un ou des blocs. S'il s'agit de verrouiller des entités comme on verrouille un calque (qu'on ne puisse plus les modifier), je ne vois pas de solution. Oui c'est exactement cela!Verrouillé et non pas cadenassé!! (désolé) Sinon, reste la solution de mettre les blocs que l'on souhaite verrouiller sur un calque à part qui lui sera verrouillé. C'est ce que je fais!! Merci quand même! "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
LUDWIG Posté(e) le 23 avril 2008 Posté(e) le 23 avril 2008 (vlax-for b (vla-get-Blocks(vla-get-ActiveDocument(vlax-get-acad-object)))(vla-put-explodable b :vlax-false)) Merci (Gile) pour ces 7 lignes de codes (et encore, tu sautes une ligne pour de simples parenthèses). Rapide et précis encore une fois ! Autocad 2021 - Revit 2022 - Windows 10
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