Jump to content

purge des filtres des calques nommés ?


Recommended Posts

Bonjour

 

Voici un petit programme dont l'auteur m'est inconnu qui fait cela

 

 (defun C:LayerFiltersDelete ()
(vl-Load-Com)
(vl-Catch-All-Apply '(lambda ()
(vla-Remove
(vla-GetExtensionDictionary
(vla-Get-Layers
(vla-Get-ActiveDocument
(vlax-Get-Acad-Object)))) "ACAD_LAYERFILTERS")))
(princ "\nAll layer filters have been deleted.")
(princ)
)

 

Tu copies ca dans le bloc note de Windows, tu l'enregistres en filtre.lsp (par exmple)

 

Puis dans AutoCAD tu lances la commande appload, tu charges ton fichier lsp

 

Et pous finir tu lance la commande LAYERFILTERSDELETE

 

Et normalement tes filtres sont supprimés sauf ceux de base

 

A plus

 

Eric

 

Link to post
Share on other sites

melino,

 

Voici une routine plus souple dont l'auteur est connu.

 

;;; DelSomeFilters

;;; Efface les filtres de calques de façon sélective

;;;

;;; Compatibilité: AutoCAD 2000 et plus

;;;

;;; Instructions:

;;; 1) Charger ce fichier

;;; 2) Tapez DSF sur la ligne de commande

;;;

;;; Par Serge Camiré, CadNovation, 2003/03/16

;;; http://www.cadnovation.com/fr

;;;

 

(vl-load-com)

 

(defun DelSomeFilters ( mask / lext-dict ldict lay_entity lay_filters filter_name)

(vl-load-com)

(setq lext-dict (entget (vlax-vla-object->ename

(vla-GetExtensionDictionary (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object))))

)))

(setq lay_entity (if (member (cons 3 "ACAD_LAYERFILTERS") lext-dict)

(cdr (assoc 360 lext-dict))

nil

))

(if lay_entity (setq lay_filters (entget lay_entity)))

(if lay_filters (setq lay_filters (member (assoc 3 lay_filters) lay_filters)))

(while lay_filters

(setq filter_name (cdar lay_filters))

(if (wcmatch filter_name mask)

(dictremove lay_entity filter_name)

)

(setq lay_filters (cddr lay_filters))

)

(princ)

)

 

;;; Exemples:

;;; (DelSomeFilters "*[1-9]*") ; Tous les calques avec des nombres

;;; (DelSomeFilters "*") ; Tout

;;; (DelSomeFilters "???,~*m*,N*") ; Tous les calques ayant 3 caractères ET ceux n'ayant pas de 'm' ET ceux ne débutant pas par N

;;; (DelSomeFilters "*")

 

(defun c:dsf () (DelSomeFilters "*") (princ))

(princ "\nTapez DSF pour effacer tous les filtres de calques")

(princ)

 

 

Serge

Link to post
Share on other sites

Bonjour à tous

 

(setq lay_entity (if (member (cons 3 "ACAD_LAYERFILTERS") lext-dict)

 

Serge, juste une question sur ton lisp, le ACAD_LAYERFILTERS, tu le trouves où dans la doc ?. Ce qui me gène dans ces deux lisp, c'est de ne pas savoir où trouver ce fichu argument, même en parcourant l'explorateur d'objet en vba.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Link to post
Share on other sites

Patrick 35,

 

Si tu vas dans Vlide, tu peux te créer un espion sur (namedobjdict). De là, tu peux faire un double-clic dessus qui t'ouvres une nouvelle fenetre. Celle-ci offre 2 entrées: {entrées...} et {identificateur} "C". Tu double-clique sur {entrées...} qui t'ouvre l'entrée du dictionnaire. Tu y découvres tous les dictionnaires. C'est beaucoup plus rapide que par programmation.

 

Serge

 

Link to post
Share on other sites

Merci beaucoup Serge, je ne connaissais pas cette manière de faire. J'avais bien trouvé dans mes recherches ACAD_GROUP, ACAD_LAYOUT, ACAD_MLINESTYLE, ACAD_PLOTSETTINGS et ACAD_PLOTSTYLENAME mais absolument rien sur ACAD_LAYERFILTERS, d'où ma question, ce qui induit aussi de savoir s'il n'y en a pas d'autre dans le même style.

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Link to post
Share on other sites
  • 5 years later...

Bonjour à tous,

 

Désolé de faire remonter un vieux sujet, mais (sauf erreur de recherche de ma part) c'est le seul qui traite de cette thématique. Ma question est assez similaire, mais concerne des versions plus récentes.

 

En déplacement, sur un poste équipé de la version 2010, un fichier présentait un bug : lorsque l'on supprime les filtres (gestionnaire de calque, sur-lignage, clic droit, supprimer) ils disparaissent, mais à la réouverture du gestionnaire de calque, ils sont revenus. Quelques recherches sur la toile :

le lisp de ce topic // http://www.cadnovation.com/fr/Tips.asp

http://autodesk.blogs.com/between_the_lines/2004/12/layer_filter_an.html

... n'ont rien donné.

 

De retour sur une simple version 2005, la suppression par clic droit fonctionne normalement.

D'où ma question, car ça m'interpèle : comment faire pour supprimer des filtres de calques récalcitrant sous 2010 ????

 

D'avance, merci.

 

 

Une seule chose à dire : MERCI CADxp !

Link to post
Share on other sites

Merci pour cette réponse rapide (maintenant c'est moi qui tarde ... hum)

Malheureusement JAV, que je connaissais, ne fonctionne pas.

 

Mais après une investigation poussée ... je vais poser ma question autrement.

En effet, ce n'est pas le fichier en question qui est en cause, mais l'utilisation d'AutoCAD 2010.

 

En version 2005, il y a dans le gestionnaire de claques un bouton APPLIQUER.

Mais dans la version 2010, on peut faire pleins de choses (filtre de calques, de propriétés, ancrage, transparence ...) sauf qu'aucune manip de suppression ne fonctionne.

 

En clair, lancement du logiciel, création d'un nouveau fichier, ouverture du gestionnaire de calque, ajout d'un filtre ... et HOP celui-ci va perdurer à jamais ; malgré sa suppression (dans la liste des filtres : clic droit > supprimer) qui n'est invisible que jusqu'à la fermeture du gestionnaire.

 

D'où ma question en rapport avec ce sujet :

Comment confirmer la suppression d'un filtre de calque avec AutoCAD 2010 ?

Une seule chose à dire : MERCI CADxp !

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...