denisf Posté(e) le 26 février 2007 Posté(e) le 26 février 2007 A tous les lispeurs de génie, bonjour! J'appelle depuis un lisp la commande layiso (qui fait partie des bonus cadtools) en écrivant (c:layiso) pas de problème.Mais pas moyen de lui indiquer un objet à choisir depuis le lisp comme on le ferait par exemple avec (ssget pt1) pt1 étant sur un objet. Qui pourrait me filer un tuyau? Merci Denis
Bred Posté(e) le 26 février 2007 Posté(e) le 26 février 2007 Salut et bienvenue ! layiso est un lisp des express tool que tu trouveras dans C:\Program Files\AutoCAD xxxx\Express, donc soit tu le modifies, soit tu le copies est tu te créés une fonction "clone" sous un autre nom en renseignant SS en argument. copie ci-dessous :(Defun C:LAYISO (/ SS CNT LAY LAYLST VAL VPMODE) ;;;local function to find an unused layer state name for saving (acet-error-init (list (list "cmdecho" 0 "expert" 0 ) T ;flag. True means use undo for error clean up. );list );acet-error-init (acet-autoload '("lman.lsp" "(bns_sl name)")) ;;changed to support LAYUNISO (if (and (= 1 (acet-LayVpMode-Get)) (= 0 (getvar "tilemode")) ; if in a paper space (/= 1 (getvar "cvport")) ; viewport ) (setq VPMODE T) ; set flag for viewport behavior ) (if (not (setq [surligneur][b]SS[/b][/surligneur] (ssget "_i"))) (progn (prompt "\nSelect object(s) on the layer(s) to be isolated: ") (setq SS (ssget)) ) ) (if SS (progn (setq CNT 0) (while (and ss (> (sslength ss) 0) (setq LAY (ssname SS CNT)) );and (setq LAY (cdr (assoc 8 (entget LAY)))) (if (not (member LAY LAYLST)) (setq LAYLST (cons LAY LAYLST)) ) (setq CNT (1+ CNT)) ) (cond (VPMODE (bns_sl "ACET-lAYISO") ;setq Save the current layer state (setq acet:LSTVPORT (list (xstrcase (getvar "ctab")) (acet-currentviewport-ename))) ;setq save the layout and the viewport (command "_.vplayer" "_freeze" "*" "_Current") (foreach VAL LAYLST (command "_Thaw" VAL "_Current")) (command "") (if (= (length LAYLST) 1) (prompt (acet-str-format "\nLayer %1 has been isolated in this viewport." (car LAYLST))) (prompt (acet-str-format "\n%1 layers have been isolated in this viewport." (itoa (length LAYLST)))) ) ) (T (bns_sl "acet-layiso") ;setq Save the current layer state (setq acet:LSTVPORT (list (xstrcase (getvar "ctab")) (acet-currentviewport-ename))) ;setq save the layout and the viewport ;(setq acet:LSTVPORT (list "MODEL")) ;setq new GLOBAL for LAYUNISO (if (member (getvar "CLAYER") LAYLST) (setq LAY (getvar "CLAYER")) (setvar "CLAYER" (setq LAY (last LAYLST))) ) (command "_.-LAYER" "_OFF" "*" "_Y") (foreach VAL LAYLST (command "_ON" VAL)) (command "") (if (= (length LAYLST) 1) (prompt (acet-str-format "\nLayer %1 has been isolated." (car LAYLST))) (prompt (acet-str-format "\n%1 layers have been isolated. Layer %2 is current." (itoa (length LAYLST)) LAY) ) ) ) ) ) ) (acet-error-restore) (princ) ) [Edité le 26/2/2007 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 26 février 2007 Posté(e) le 26 février 2007 Ah, Bred a été le plus rapide ;)Le plus simple, au vu du besoin c'est de faire son propre layiso comme avec cet exemple (defun c:geler(/ doc lay sel) (vl-load-com) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (if (setq sel (entsel)) (progn (setq sel (entget (car sel)) doc (vla-get-activedocument (vlax-get-acad-object))) (vla-put-activelayer doc (vla-item (vla-get-layers doc) (cdr (assoc 8 sel)))) (vlax-for lay (vla-get-layers doc) (if (not (eq (vla-get-name lay) (cdr (assoc 8 sel)))) (vla-put-freeze lay :vlax-true) ) ) ) ) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
denisf Posté(e) le 27 février 2007 Auteur Posté(e) le 27 février 2007 Vous êtes des chefs! Pas pu me conecter aujourd'hui, c'est la bourre!!! çà fait plaisir de voir que d'autres trouvent des solutions pendant ce tempsC'est une solution simpleMerci beaucoup Denis
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