Steven Posté(e) le 5 janvier 2021 Posté(e) le 5 janvier 2021 Salut à tous, Y aurait-il un moyen d'améliorer la commande _HideObjects? En effet, lorsqu'on masque des objets, ceux-ci sont inactif à l'affichage mais ils restent sélectionnables. De ce fait, si on masque certains objets et lance la commande EFFACER puis TOUT, AutoCAD sélectionne tous les objets, même ceux qui sont masqués.De ce fait, lorsqu'on valide une deuxième fois, on efface aussi les objets masqués. Or si on les a masqué, c'est peut-être aussi pour ne pas les voir mais aussi, ne pas les sélectionner. Par conséquent, serait-il possible de masquer des objets et faire en sorte qu'ils ne soient pas sélectionnables? Je précise que je ne souhaite pas geler ou inactiver des calques mais bien masquer ou isoler des objets qui peuvent être sur plusieurs calques. Citer Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
bonuscad Posté(e) le 5 janvier 2021 Posté(e) le 5 janvier 2021 Bonjour, Étant un vieux de la vieille, je préfère l'ancienne méthode (peu connue) qui s'appuie sur le code DXF 60 qui rends les objets invisibles. A la différence de _HideObjects qui masque les objets sur la session en cours. Jouer sur le code 60 reste d'une session à l'autre. (après l'enregistrement du dessin). Malheureusement aucune commande standard ne donne accès à cette fonctionnalité très ancienne d' Autocad, obliger de recourir à la programmation. Pour ma part j'ai deux boutons associés à ces bouts de code lisp: e_off / e_on. (defun c:e_off ( / js_off n ent dxf_ent ) (princ "\nChoix des entités à inactiver: ") (setq js_off (ssget) n 0) (cond (js_off (repeat (sslength js_off) (setq ent (ssname js_off n) dxf_ent (entget ent) ) (if (not (member '(60 . 0) dxf_ent)) (entmod (append dxf_ent '((60 . 1)))) (entmod (subst '(60 . 1) '(60 . 0) dxf_ent)) ) (setq n (1+ n)) ) ) (T (princ "\nSélection vide.") ) ) (princ) ) (defun c:e_on ( / js_off n js_swap n_swap ent ent_dxf js_on nb) (setq js_off (ssget "_X" '((60 . 1))) n 0) (cond (js_off (setq js_swap (ssget "_X" '((-4 . "<NOT") (60 . 1) (-4 . "NOT>"))) n_swap 0) (cond (js_swap (repeat (sslength js_swap) (setq ent (ssname js_swap n_swap)) (redraw ent 2) (setq n_swap (1+ n_swap)) ) ) ) (repeat (sslength js_off) (setq ent (ssname js_off n)) (setq dxf_ent (entget ent)) (entmod (subst '(60 . 0) '(60 . 1) dxf_ent)) (entupd ent) (setq n (1+ n)) ) (princ "\nChoix des entités à réactiver: ") (setq js_on (ssget) n 0) (cond (js_on (repeat (sslength js_on) (if (ssmemb (ssname js_on n) js_off) (setq js_off (ssdel (ssname js_on n) js_off)) ) (setq n (1+ n)) ) (cond (js_off (setq nb 0) (repeat (sslength js_off) (setq ent (ssname js_off nb)) (setq dxf_ent (entget ent)) (if (not (member '(60 . 0) dxf_ent)) (entmod (append dxf_ent '((60 . 1)))) (entmod (subst '(60 . 1) '(60 . 0) dxf_ent)) ) (entupd ent) (setq nb (1+ nb)) ) (cond (js_swap (setq n_swap 0) (repeat (sslength js_swap) (setq ent (ssname js_swap n_swap)) (redraw ent 1) (setq n_swap (1+ n_swap)) ) ) ) ) (T (princ "\nAucune entité à réactivée!") ) ) ) (T (princ "\nSélection vide.") ) ) ) (T (princ "\nAucune entité à réactivée!") ) ) (princ) ) Avec cette méthode il est facile d'exclure les objets invisibles d'une sélection, par exemple: (sssetfirst nil (ssget '((-4 . "<NOT") (60 . 1) (-4 . "NOT>")))) Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Steven Posté(e) le 5 janvier 2021 Auteur Posté(e) le 5 janvier 2021 Salut Bonuscad, Merci pour le lisp Cepndant, j'ai dû louper un truc car quand je fais: effacer -> tout > entrer, j'efface tout, même les objets masqués. J'ai pourtant coller dans la ligne de commandes: (sssetfirst nil (ssget '((-4 . "<NOT") (60 . 1) (-4 . "NOT>")))) avant d'effacer mes objets. Où est-ce que j'ai pu foirer? Citer Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
Maxime063 Posté(e) le 5 janvier 2021 Posté(e) le 5 janvier 2021 Après avoir essayer ce lisp j'en arrive au même résultat que Steven, les éléments inactifs restent sélectionnables avec effacer => tout ou alors ctrl+A Citer
VDH-Bruno Posté(e) le 6 janvier 2021 Posté(e) le 6 janvier 2021 Bonjour Steven, N'ayant pas de version récente d'AutoCAD, je n'ai jamais travaillé avec la commande _HideObjects, donc comme BonusCAD j'utilise le code DXF60 et qq ligne de lisp. La version donné par BonusCAD est bonne (comme toujours avec ses codes lisp). Cepndant, j'ai dû louper un truc car quand je fais: effacer -> tout > entrer, j'efface tout, même les objets masqués. J'ai pourtant coller dans la ligne de commandes: (sssetfirst nil (ssget '((-4 . "<NOT") (60 . 1) (-4 . "NOT>")))) avant d'effacer mes objets. Où est-ce que j'ai pu foirer? Peut être ici, si on travaille avec une sélection précédent Commande: (sssetfirst nil (ssget '((-4 . "<NOT") (60 . 1) (-4 . "NOT>")))) Choix des objets: tout72 trouvé(s) Choix des objets: (nil <Selection set: e5>) Commande: efEFFACER 72 trouvé(s) Ou comme ceci si on travaille avec la commande puis la sélection:Commande: efEFFACERChoix des objets: tout78 trouvé(s) Choix des objets: s Supprimer les objets: (ssget "_X" '((60 . 1)))<Selection set: 13d>6 trouvé(s), 6 supprimé(s), 72 au total Salutations Bruno Citer Apprendre => Prendre => Rendre
bonuscad Posté(e) le 6 janvier 2021 Posté(e) le 6 janvier 2021 Bruno m'a devancé... (sssetfirst nil (ssget '((-4 . "<NOT") (60 . 1) (-4 . "NOT>")))) doit être utilisé comme les grips (verbe -> action) et non dans le sens classique des commande Autocad (action -> verbe) Cette ligne de sélection en lisp te laisse le choix des objets en mode unique, fenêtre ou capture conjugés. Si tu veux l'équivalent de "effacer" "tout" en excluant les objets invisibles, tu peux utiliser l'équivalent: (sssetfirst nil (ssget "_X" '((-4 . "<NOT") (60 . 1) (-4 . "NOT>")))) En résumé, lancer la sélection puis l'action désiré (effacer, déplacer, copier, etc...) Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Aleck_Ultimate Posté(e) le 6 janvier 2021 Posté(e) le 6 janvier 2021 Salut. A la différence de _HideObjects qui masque les objets sur la session en cours. Jouer sur le code 60 reste d'une session à l'autre. (après l'enregistrement du dessin).Pour une fois que je peut apprendre un truc à un ancien : même si ça ne résout pas le problème soulevé par Steven, la variable OBJECTISOLATIONMODE permet de gérer l'enregistrement ou pas de l'état d'isolation des objets d'une session à l'autre. Cordially. Citer Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux. Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage ! Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;]) Utilisateur d'AutoCAD 2021 sous Windows 10
bonuscad Posté(e) le 6 janvier 2021 Posté(e) le 6 janvier 2021 Salut. Pour une fois que je peut apprendre un truc à un ancien : même si ça ne résout pas le problème soulevé par Steven, la variable OBJECTISOLATIONMODE permet de gérer l'enregistrement ou pas de l'état d'isolation des objets d'une session à l'autre. Cordially. Hé oui, tu m'apprends quelque chose... Si jusqu'à la version 2002 je connaissais à peu près toutes les variables de tête, ce n'est plus le cas aujourd'hui ! Beaucoup se plaignent qu 'Autocad n'offre pas beaucoup d'évolution au cours des versions, par contre aux niveaux des variables, ça a été la profusion (comme la multiplication des petits pains). En plus maintenant ces variables ont souvent des noms à rallonge qu'il est difficile à mémoriser. Donc je peux en apprendre tous les jours sur ces variables,c'est la que le mémo de Christian (Rebcao) est utile. Et là je ne parle que des variables système car j'ai abandonné de me pencher sur les variables d'environnement où il y en a une foultitude (voir setenv et getenv) Citer Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Aleck_Ultimate Posté(e) le 6 janvier 2021 Posté(e) le 6 janvier 2021 L'aventage des noms à rallonge c'est quant-même que c'est plus facile de les retrouver ou découvrir par simple recherche filtrée "variable" dans l'aide officielle. Y'a pleins de trucs qui vont pas avec todesk, mais leur aide est bien foutue, dans l'ensemble ^^ Citer Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux. Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage ! Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;]) Utilisateur d'AutoCAD 2021 sous Windows 10
Tramber Posté(e) le 6 janvier 2021 Posté(e) le 6 janvier 2021 , mais leur aide est bien foutue, dans l'ensemble ^^ :blink: Ca a dépendu du millésime <_> Citer Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Aleck_Ultimate Posté(e) le 6 janvier 2021 Posté(e) le 6 janvier 2021 Heu... oui, effectivement. Depuis le temps que je parcourt celle de la 2018 j'en oublie le sac de nœuds de la 2015. Et j'en connais pas de plus anciennes... Citer Je suis dysorthographique alors lâchez-moi les basques avec ça, je fait déjà de mon mieux. Membre d'Extinction Rebellion, car pour sauver le monde il n'est jamais trop tard, amour et rage ! Pour écrire un vraie point médian (e·x·e·m·p·l·e) [Alt + 0183] ou ajout d'un raccourci clavier personnalisé (ex. [AltGr + ;]) Utilisateur d'AutoCAD 2021 sous Windows 10
Messages recommandés