hpimprint Posted November 16, 2021 Posted November 16, 2021 layer properties manager autofilter i have a .dwg having many layers inside. these layers have similar names in series example (CWS) (CWS) 100-101 (CWS) 100-325 (CWS) 100.675 (TFR) (TFR) 200-345 (TRF) 324-100 ... .. . As you see the layer initial part let to separate them as different groups. in the example above the group (CWS), the group (TFR) ,.... Is there a way to auto-create filters (inside the layer property manager) automatically so that each filter contains one of these groups? Eventualy also a lisp where i write by hand (in the lisp code, before starting the lisp) the group list (example: (CWS); (TFR); ...) and then the lisp work on layers to creare filter layers? here attached an example: example.dwg Quote
guran Posted November 16, 2021 Posted November 16, 2021 https://knowledge.autodesk.com/support/autocad-architecture/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/AutoCAD-Architecture/files/GUID-EABD5D5F-CEB0-4089-AA8C-CA9E2BF65723-htm.html Quote
hpimprint Posted November 16, 2021 Author Posted November 16, 2021 thank you, but i ask: is it possible to do it by lisp? Quote
tombu Posted November 16, 2021 Posted November 16, 2021 Load this: (defun hpimprint (/ collection names) (setq names (list "")) (if (not (vl-catch-all-error-p (setq collection (vl-catch-all-apply (function (lambda () (vla-item (vla-getextensiondictionary (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) "ACAD_LAYERFILTERS"))) )))) (vlax-for item collection (setq names (cons (vla-get-name item) names)))) names (or(member "Linetype" names)(command "._-layer" "filter" "new" "property" "All" "LINETYPE==\"~Continuous\"" "Linetype" "X" nil)) (or(member "Lineweight" names)(command "._-layer" "filter" "new" "property" "All" "LINEWEIGHT==\"~Default\"" "Lineweight" "X" nil)) (or(member "NCS" names)(command "._-layer" "filter" "new" "property" "All" "NAME==\"[A,C,E,L,V]-*\" or NAME== \"Layer*\"" "NCS" "X" nil)) (or(member "CWS" names)(command "._-layer" "filter" "new" "property" "All" "NAME==\"(CWS)*\" or NAME== \"Layer*\"" "CWS" "X" nil)) (or(member "TFR" names)(command "._-layer" "filter" "new" "property" "All" "NAME==\"(TFR)*\" or NAME== \"Layer*\"" "TFR" "X" nil)) (or(member "BD" names)(command "._-layer" "filter" "new" "property" "All" "NAME==\"(BD)*\" or NAME== \"Layer*\"" "BD" "X" nil)) (princ "Layer Filter Names » ")(princ names) ; (princ "\nSave, close and reopen the DWT or DWG for the Filters to be put into alphabetical order.") (princ) ) (vl-load-com) (hpimprint) 1 Quote
hpimprint Posted November 17, 2021 Author Posted November 17, 2021 a question: the line (or(member "NCS" names)(command "._-layer" "filter" "new" "property" "All" "NAME==\"[A,C,E,L,V]-*\" or NAME== \"Layer*\"" "NCS" "X" nil)) what objects will eleborate? Quote
tombu Posted November 17, 2021 Posted November 17, 2021 5 hours ago, hpimprint said: a question: the line (or(member "NCS" names)(command "._-layer" "filter" "new" "property" "All" "NAME==\"[A,C,E,L,V]-*\" or NAME== \"Layer*\"" "NCS" "X" nil)) what objects will eleborate? Three of those were part of a list of Layer Filters I use included as examples. NCS or National CAD Standards layer names are followed by the default template installed with our Civil 3D and are explained at https://www.nationalcadstandard.org/ncs5/pdfs/ncs5_clg_lnf.pdf. The "NCS" Layer Filter works for the NCS Layers we use. The "Linetype" Layer Filter only displays Layers with a Linetype assigned and the "Lineweight" Layer Filter only displays Layers with a Lineweight assigned. You can delete any of those lines that add Layer Filters you don't need or add lines for new ones you need. Quote
tombu Posted November 17, 2021 Posted November 17, 2021 1 hour ago, hpimprint said: thank you! Glad I could help, maybe someday you'll have gotten as much help from this site as I have! Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.