Aviglémy Posté(e) le 9 juin 2008 Posté(e) le 9 juin 2008 Bonjour,Comment faire fonctionner la fonction Layiso dans une Xref ? Comme Layoff qui désactive un calque à l'intérieur d'une Xref, mais cette fois ci pour isoler plusieurs calques sélectionnés. Merci d'avance.. :)
Patrick_35 Posté(e) le 9 juin 2008 Posté(e) le 9 juin 2008 Salut Un petit lisp qui gèle que les calques sur des xref(s).Il est possible de l'adapter pour qu'il prenne aussi le dessin, mais si le calque sur lequel le xref inséré est gelé, les calques sélectionnés seront aussi gelés, ce qui n'est pas le but recherché. (defun c:gexr(/ cal doc js n nd nt sel vie vp xd xt) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (while (setq sel (nentsel)) (setq cal (cdr (assoc 8 (entget (car sel))))) (or (member cal js) (setq js (cons cal js)) ) ) (vla-startundomark doc) (and js (vlax-for lay (vla-get-layers doc) (or (member (setq sel (vla-get-name lay)) js) (not (vl-string-search "|" sel)) (if (or (eq (getvar "tilemode") 1) (eq (getvar "cvport") 1)) (or (eq sel (getvar "clayer")) (vla-put-freeze lay :vlax-true) ) (progn (setq vie (vla-get-activepviewport doc)) (vla-getxdata vie "" 'xt 'xd) (or (member (vlax-make-variant sel) (vlax-safearray->list xd)) (progn (setq n (vlax-safearray-get-u-bound xt 1) nt (vlax-make-safearray vlax-vbinteger (cons 0 (1+ n))) nd (vlax-make-safearray vlax-vbvariant (cons 0 (1+ n))) j 0 ) (repeat (1+ n) (vlax-safearray-put-element nt j (vlax-safearray-get-element xt j)) (vlax-safearray-put-element nd j (vlax-safearray-get-element xd j)) (setq j (1+ j)) ) (vlax-safearray-put-element nt (1+ n) 1002) (vlax-safearray-put-element nd (1+ n) "}") (vlax-safearray-put-element nt (1- n) 1003) (vlax-safearray-put-element nd (1- n) sel) (vla-setxdata vie nt nd) (setq vp T) ) ) ) ) ) ) ) (and vp (progn (vla-display vie :vlax-false) (vla-display vie :vlax-true) ) ) (vla-endundomark doc) (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
Aviglémy Posté(e) le 10 juin 2008 Auteur Posté(e) le 10 juin 2008 Merci Patrick_35 ! J'ai modifié : (vla-put-freeze lay :vlax-true) par : (vla-put-layeron lay :vlax-false) pour l'avoir en désactivé.Par contre je ne sais pas comment faire pour qu'il prenne le dessin...Et si la Xref est toujours insérée dans un calque qui se nomme Xref ? ;)
Patrick_35 Posté(e) le 10 juin 2008 Posté(e) le 10 juin 2008 Re, Tu peux désactiver un calque, mais tu remarqueras que le lisp est aussi prévu pour conserver les calques sélectionnés dans la fenêtre active d'une présentation (d'où la gestion des xdatas dans le lisp). Les autres sont donc gelés (toujours dans la fenêtre active). Alors la logique entre désactivé et gelé ;) Pour qu'il prenne aussi les calques dans le dessin, enlève cette ligne(not (vl-string-search "|" sel)) Et si tu veux que le calque "xref" ne soit pas pris en compte par un malheureux clic, tu peux mettre à la place de la ligne supprimée précédemment.(member (strcase sel) '("XREF"))J'ai fait une liste '("XREF") afin de laisser la possibilité d'ajouter d'autres calques à exclure. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Aviglémy Posté(e) le 11 juin 2008 Auteur Posté(e) le 11 juin 2008 Nikel !Ce lisp va changer ma façon de travailler !Je voulais demander, si c'est possible avec une fenêtre sélection ?Mais je pense que le nentsel empêche cette méthode ?
Patrick_35 Posté(e) le 11 juin 2008 Posté(e) le 11 juin 2008 Re, Je voulais demander, si c'est possible avec une fenêtre sélection ?Ben oui, c'est bien le nentsel qui ne permet pas d'autre mode de sélection. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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