lecrabe Posté(e) le 2 février 2012 Posté(e) le 2 février 2012 Hello SVP je fais appel aux pros du Lisp/Vlisp : Gilles, Bruno, Patrick_35, VDH, Bryce, Usegomme, etc http://cadxp.com/index.php?/topic/34289-isoler-masquer-des-objets-flag-dinvisibilite-60/ Je ne sais pas si vous avez vu ce sujet poste par votre serviteur ! J'aimerais si possible qq explications !? Merci d'avance, Le Decapode (lecrabe) Autodesk Expert Elite Team
Patrick_35 Posté(e) le 2 février 2012 Posté(e) le 2 février 2012 Salut Si, mais 2011... @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 2 février 2012 Posté(e) le 2 février 2012 Salut, J'ai regardé et observé rapidement. La méthode par le code DXF 60 cache l'objet en mettant le bit à 1, mais elle met aussi la propriété de visibilité à 0 (vlax-dump-object) La nouvelle méthode sous 2011 ne change PAS le code DXF 60, mais seulement la propriété de visiblité. Si cette propriété est à -1 (l'objet est visible) et à 0 (l'objet est invisible) Je pense (sans avoir regardé plus en profondeur) que cette nouvelle méthode doit utiliser les dictionnaires puisque qu'on peut retrouver cette propriété active d'une session à l'autre suivant l'état de la variable OBJECTISOLATIONMODE. La méthode du bit (60 . 1) est plus radicale et sans connaissance de programmation plus difficile à remettre en l'état si on n'a pas l'outil.La nouvelle méthode est moins brute et permet à quiconque de remettre la visibilité en l'état. Pour ma part je ne réserverai la 1ere méthode qu'a des besoins de programmation spécifique. En utilisation courante il vaudra mieux opter pour cette nouvelle fonctionnalité. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 2 février 2012 Auteur Posté(e) le 2 février 2012 Hello Oulala, je joue pas mal avec les routines de Gilles : INVIS, VISI et ALLVISI (pour tout revoir) ... Routines qui utilisent le fameux Flag 60 ! Si en plus on met par dessus la nouvelle methode de la 2011 (ou 2012) ne faudrait il pas une super routine ALLVISI version AMELIOREE qui retablisse le flag 60ET qui enleve le masquage de la 2011 (ou 2012) sur l'ensemble des entites ainsi au moins, on est sur de TOUT voir ! Qu'en pensez vous ? Le Decapode (lecrabe) PS: pour Patrick_35, j'ai cherche une signification a ton message fort COURT et j'imagine que tu n'as pas de 2011 (ou 2012) ?? Autodesk Expert Elite Team
Patrick_35 Posté(e) le 2 février 2012 Posté(e) le 2 février 2012 PS: pour Patrick_35, j'ai cherche une signification a ton message fort COURT et j'imagine que tu n'as pas de 2011 (ou 2012) ??Oui ps : message encore plus court, trois lettres ;)Pour être un peu plus prolixe, je suis sur une version 2009 @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 2 février 2012 Posté(e) le 2 février 2012 Salut, J'ai fait quelques tests avec les routines suivantes qui utilisent le code DXF 60 ou la propriété COM Visible:(defun c:invisiDXF (/ ss n elst) (if (setq ss (ssget)) (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n))))) (entmod (if (assoc 60 elst) (subst '(60 . 1) (assoc 60 elst) elst) (append elst '((60 . 1))) ) ) ) ) (princ) ) (defun c:allvisiDXF (/ ent) (setq ent (entnext)) (while ent (setq elst (entget ent)) (entmod (subst '(60 . 0) '(60 . 1) elst)) (setq ent (entnext ent)) ) (princ) ) (defun c:invisiCOM () (if (ssget) (progn (vlax-for obj (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object) ) ) ) (vla-put-Visible obj :vlax-false) ) (vla-delete ss) ) ) (princ) ) (defun c:allvisiCOM () (vl-load-com) (vlax-for blk (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vlax-for obj blk (if (vlax-property-available-p obj 'Visible) (vla-put-Visible obj :vlax-true) ) ) ) ) plus le truc que j'avais fait en .NET (ici) qui utilise la propriété .NET Visible et les commandes natives (A2011). Des objets cachés avec invisDXF, invisCOM, HIDENT et HIDEOBJECTS, seule la commande native UNISOLATEOBJECTS ne ré-affiche pas tous les objets (mais seulement ceux masqués avec HIDEOBJECTS). UNISOLENT, allvisiDXF et allvisiCOM ré-affichent tous les objets. Ce qui me ferait dire qu'il s'agit de la même chose en ce qui concerne DXF, COM et .NET. J'imagine que les commandes natives HIDEOBJECTS et ISOLATEOBJECTS stockent les objets masqués quelque part et ne ré-affichent que ceux-ci (ce qui offre un gain de performance certain par rapport aux autres méthodes qui scannent toute la base de données). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 2 février 2012 Auteur Posté(e) le 2 février 2012 Hello Gilles WAOUH je suis impressionne ! je sens que je vais faire qq tests ... Si j'ai bien compris (pas sur) avec tes routines : ALLVISIDXF ou ALLVISICOM : je suis SUR de revoir toutes les entites !? ou bien dois je enchainer ALLVISIDXF puis ALLVISICOM ?? Encore merci pour tes tests et efforts ! Le Decapode (lecrabe) Autodesk Expert Elite Team
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