Aller au contenu

Objet non selectionnable


Messages recommandés

Invité tjrsNRV
Posté(e)

Bonjour et bonne année à tous !

 

Je voudrais savoir s'il est possible de rendre un objet (bloc ou Xref) non-sélectionnable. un reactor ?

 

C'est pour éviter que lors q'uon sélectionne, le fond de plan fasse partie de la sélection. Je sais qu'on peut sélectionner de gauche à droite pour éviter ça mais ça ne me convient pas...

 

 

Sechanbask

 

[Edité le 4/1/2011 par tjrsNRV]

Invité tjrsNRV
Posté(e)

Avec le calque verrouillé, on peux toujours sélectionner à la souris les objets qui sont dans ce calque. et comme mon xref fait 40 Mo une fois nettoyé, si je le sélectionne effectivement je ne peux pas le déplacer, le supprimer etc, mais il apparait dans le jeu de sélection et donc à chaque fois ça met mon PC à genou...

Invité tjrsNRV
Posté(e)

bloc : mauvaise idée,

 

il est possible de rendre des objets invisible par programmation, mais pas non-sélectionnable ?

Posté(e)

il est possible de rendre des objets invisible par programmation, mais pas non-sélectionnable ?

 

Oui, par programmation uniquement. C'est d'ailleurs pour ça que je déconseille l'utilisation de ce bit d'invisibilité car un utilisateur lambda pourrait se tirer les cheveux lors d'une purge inefficace lors de l'utilisation ultérieure d'un tel fichier.

 

Néanmoins voici les codes E_OFF et E_ON qui permettent d'utiliser ce bit.

 

(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 . ""))) 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)
)

 

[Edité le 6/1/2011 par bonuscad]

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Salut,

 

Je crois que tjrsNRV/Sechanbask ne cherche pas à rendre des objets invisible (ce qui est possible en Natif depuis la version 2011 ou par programmation) mais à rendre des entités non-sélectionnables.

Et ça, à ma connaissance, ce n'est pas possible.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

  • 2 semaines après...
Posté(e)

En revanche il est possible de filtrer (enlever) les objets des calques verrouillés d'un jeu de sélection, en Lisp, et éventuellement dans un réacteur..

 

Sinon pour faire simple j'utiliserais le filtre de sélection en filtrant les Blocs/XRefs qui ont certaine propriété (calque par exemple).

Posté(e)

le filtre de sélection n'est pas applicable tout au long de l'édition d'un fichier, donc je ne vois que la programmation pour faire ça...

Posté(e)

En fait je comprends pas très bien ce que tu veux faire...

 

Mais si tu veux filtrer la sélection courante lorsqu'elle est modifiée tu peux brancher un réacteur comme ça :

(vlr-miscellaneous-reactor "NOM" '((:vlr-pickfirstModified . Filtre)))

 

Puis tu écris une fonction avec 2 arguments, qui récupère et traite la sélection courante :

(defun Filtre (u v / sel)

(setq sel (cadr(ssgetfirst)))

.... traitement ...

)

 

A la sortie il faut effacer le réacteur :

(mapcar 'vlr-remove (vl-remove-if-not '(lambda(u)(= (vlr-data u) "NOM")) (cdr(car(vlr-reactors :vlr-miscellaneous-reactor)))))

Posté(e)

Ou alors, si tu veux simplement avoir ton fond en visuel, change l'ensemble de tes Xrefs en une seule image (sortie traceur au format image de tous les XRef), comme ça, hormis le cadre, rien ne sera sélectionnable...

Rien ne t'empêche de rattacher tes Xrefs par la suite à la place de l'image.

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

non mon problème ne peux pas être résolu en changeant le PC, car j'aurais toujours besoin de faire des sélections de droite à gauche pour lancer la commande ETIRER. et comme je fait une selection de droite à gauche mais si mon XREF est dans un calque verrouiller, ça me le sélectionne et c'est très lourd !!!

 

 

J'ai pas un tracteur, mais un PC plutôt récent (moins d'un an). Les Xref avec lesquels je travaille sont très lourd graphiquement parlant (hachures, textures que je dois conserver pour travailler)

 

Je voudrais interdire, quelque soit la commande lancée, de sélectionner les XREF.

 

 

Je ne sais pas qui peut se permettre de changer de PC à chaque fois qu'il a besoin d'une fonction, mais pour nous c'est pas une solution valable...

 

bonuscad : je ne comprends ta proposition, tu pourrais préciser la marche à suivre ?

Posté(e)

Mais oui, ou mieux : tu fais un DWF (Fichier/Exporter..) que tu ré-importe (il faut sans doute remettre à l'échelle).

Contrairement aux images le DWF est "snapable", et j'ai vérifié il n'est pas accroché par la commande Etirer..

 

Pour importer un DWF il faut aller dans Insertion, ça marche comme une XRef mais ça s'appelle un "Calque sous-jacent"

 

[Edité le 17/1/2011 par krunch]

Posté(e)

Tu as combien de RAM ? quel windows? quelle carte graphique? (l'a tu mise a jour)

 

l'age d'un pc n'a rien a voir avec ses performances

 

 

car nous travaillons presque tous avec des xrefs et n'avons pas ce probleme de ralentissement

en cas de sélection de ces dernières (même volumineuse).

 

tu n'a peut être pas besoins de voir tes hachures par exemple, si tu les gèles cela ira surement mieux

 

essaye de ne faire apparaître ce que tu as besoin

 

Quel est le poids de ces fameuses xref ?

 

Et si tes toujours énervé ce n'est pas de notre faute

nous essayons de t'aider et prenons sur notre temps pour résoudre ton problème

alors un p'tit merci de temps en temps ne ralentira pas ton tracteur

 

tendrement

;)

Posté(e)

En effet avec le DWF c'est encore mieux et certainement plus fluide car ça reste du vectoriel.

 

Je pense que trjNRV tiens sa solution.

 

La démarche?

 

Par exemple dans ton dessin ou un nouveau dessin, arrange toi pour n'avoir que tes XRefs de chargés et tu fais une sortie sur le périphérique DWF (si pas disponible rajoute le par le gestionnaire de tracé).

Cela va te créer un DWF contenant tout tes XRefs

 

Dans ton dessin origine tu Détache ou Décharge tout tes XRefs et à la place du attache ton DWF.

 

krunch à raison les objets dans le DWF restent "snapables" (accroche objet) contrairement à une image (qui aurait pixélisée suivant le zoom), l'idéal quoi ! ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour,

 

Une autre possibilité éventuelle : mettre la variable HIGHLIGHT à 0 pour désactiver l'affichage en pointillés des objets sélectionnés et avoir de meilleures performances d'affichage.

 

A noter que sur AutoCAD 2011 (peut-être aussi sur les versions précédentes, je ne me souviens plus), les objets appartenant à un calque verrouillé ne sont pas du tout inclus dans les sélections (pas mis en surbrillance/pointillé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 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é