Aller au contenu

isoler calques


Messages recommandés

Posté(e)

Bonjour

 

je répète trop souvent cette manip, de quelle manière en lisp ou autre peut on isoler après sélection de 2 ou x entités calques (ceux selectionnés les garder ouverts) et geler tous le reste ???

 

comme je ne connais pas les noms des calques à chaque fois, ça me permet de faire la comparaison......

 

Merci de votre aide

 

@+

 

Michel a

Posté(e)

Salut,

vite fait.

Attention : c'est un base, ça n'enregistre pas l'état initial des calques, et ça ne gèle pas le calque courant (normal...).

test le et dits nous les améliorations que tu voudrais.

 

(defun c:calqG (/ C N SEL)
 (vl-load-com)
 (setq sel nil
sel (ssget "I"))  
 (if (not sel)
   (setq sel (ssget))
   )  
 (repeat (setq n (vla-get-count (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))))
   (if (not (equal
       (vla-get-name (vla-item (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) (setq n (1- n))))
       (getvar "clayer")))
     (vla-put-Freeze (vla-item (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) n) :vlax-True))
   )

 (repeat (setq n (sslength sel))
   (setq c (vla-get-layer (vlax-ename->vla-object (ssname sel (setq n (1- n))))))
   (vla-put-Freeze (vlax-ename->vla-object (tblobjname "LAYER" c)) :vlax-False)
   )
 (princ)
 )

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Merci beaucoup Bred

 

ça fonctionne exactement je verrais au fur et à mesure de l'utilisation....

 

la seule chose c'est que les autres calques je les rends inactifs (que là ils sont gelés) comme ça je les libère tous d'un coup, pour expliquer je gèle des calques dont je suis sure et ensuite je jongle sur les autres calques en utilisant layiso et _layon.

 

@+

 

Michel a

 

 

 

Posté(e)

Salut,

j'ai un doute de compréhension au vu de tes demandes :

peut on isoler après sélection de 2 ou x entités calques (ceux selectionnés les garder ouverts) et geler tous le reste ???

 

la seule chose c'est que les autres calques je les rends inactifs (que là ils sont gelés)

 

:casstet:

 

Alors, la même chose mais rendant les calques inactifs :

(defun c:calqAI (/ C N SEL)
 (vl-load-com)
 (setq sel nil
sel (ssget "I"))  
 (if (not sel)
   (setq sel (ssget))
   )  
 (repeat (setq n (vla-get-count (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object)))))
   (if (not (equal
       (vla-get-name (vla-item (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) (setq n (1- n))))
       (getvar "clayer")))
     (vla-put-LayerOn (vla-item (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) n) :vlax-False))
   )

 (repeat (setq n (sslength sel))
   (setq c (vla-get-layer (vlax-ename->vla-object (ssname sel (setq n (1- n))))))
   (vla-put-LayerOn (vlax-ename->vla-object (tblobjname "LAYER" c)) :vlax-True)
   )
 (princ)
 )

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Bonjour,

 

C'est bizarre, ton lisp Bred chez moi, inacive les calques, comme la fonction de base AutoCAD d'ailleurs. C'est dommage, je trouvais l'idée séduisante de pouvoir geler les calques non selectionnés afin d'utiliser le zoom tout. Est-ce dû au fait que j'ai chargé ce lisp sur une 2008 ? Ou bien c'est la demande de speedy que je n'ai pas compris, ou troisième hypothèse, ce lisp inactive bien les calques ?

Merci d'avance de tes éclaircissements.

 

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Re,

alors, j'ai fait assez simple.

Lorsque tu lances la commande de Gel de calque non selectionné, j'enregistre dans une variable (lst-calq-G pour info) les calques précédents qui étaient gelés (+ calque actif)

Si tu veux revenir à l'état des calques précédents à cette commande, tu lance la commande "RcalqG".

Attention : une fois cette manip faites, le retour en arrière ne fonctionneras pas : il te faudra refaire la manip depuis le début (commande de gel de calque non selectionné, etc....)

 

;;; Geler tous calques sauf selectionné (et courant)
(defun c:[b]calqG[/b] (/ C N SEL)
 (vl-load-com)
 (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
lst-calq-G nil
sel nil
sel (ssget "I"))  
 (if (not sel)
   (setq sel (ssget))
   )  
 (repeat (setq n (vla-get-count (vla-get-Layers AcDoc)))
   (if (not (equal
       (vla-get-name (vla-item (vla-get-Layers AcDoc) (setq n (1- n))))
       (getvar "clayer")))
     (progn
(if (equal (vla-get-Freeze (vla-item (vla-get-Layers AcDoc) n)) :vlax-True)
  (setq lst-calq-G  (append (list (vla-item (vla-get-Layers AcDoc) n)) lst-calq-G))
  (vla-put-Freeze (vla-item (vla-get-Layers AcDoc) n) :vlax-True))
)
     (setq lst-calq-G  (append (list (vla-item (vla-get-Layers AcDoc) n)) lst-calq-G))
     )
   )
 (repeat (setq n (sslength sel))
   (setq c (vla-get-layer (vlax-ename->vla-object (ssname sel (setq n (1- n))))))
   (vla-put-Freeze (vlax-ename->vla-object (tblobjname "LAYER" c)) :vlax-False)
   )
 (princ)
)

; Retour Etat calque avant  calqG
(defun c:[b]RcalqG[/b] (/ ACDOC N)
 (vl-load-com)
 (if lst-calq-G
   (progn
     (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
     (repeat (setq n (vla-get-count (vla-get-Layers AcDoc)))
(if (not (member (vla-item (vla-get-Layers AcDoc) (setq n (1- n))) lst-calq-G))
  (vla-put-Freeze (vla-item (vla-get-Layers AcDoc) n) :vlax-False)
  )
)
     )
   )
 (setq lst-calq-G nil)
 (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport)
 (princ)
 )

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Salut,

Toutes commandes créée en lisp peuvent s'utiliser comme des commandes "standard" d'Autocad.

Il faut bien sûr que le lisp soit chargé au démarrage.

 

ex : dans un bouton : ^C^CcalqG

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Ca marche vraiment super. Peut-être la question à t'elle déjà été posée, mais je n'ai rien trouvé. Voilà, je voudrais connaître la démarche que vous utilisez pour créer vos images d'icone ?

Aprés je sais les associer au bouton.En résumé, je voudrais créer des images associés à chaque bouton qui eux-même serait associer à mes lisps usuels.

 

Merci d'avance.

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Posté(e)

Personnelement j'utilise paint : je récupère l'image d'un bouton existant que je modifie.

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

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é