Author Topic: make layer filters..list of non plot layers  (Read 1575 times)

0 Members and 1 Guest are viewing this topic.

EddieFromDc

  • Newt
  • Posts: 34
make layer filters..list of non plot layers
« on: October 12, 2009, 10:23:26 AM »
Hello,

from this topic & code http://www.theswamp.org/index.php?topic=12640.msg155185#msg155185
How can I create a list of non plot layers & layers frozen in viewports ?

..  (list "Non Plot layers"      "*"   "*"   "*"   ?   "*"   ?)
..  (list "Frozen layers in viewports"   "*"   "*"   "*"   ?   "*"   ?)



;The Code
(defun sdg_CreateLayerFilter (filtlst /  lfiltobj safecode safefilt)
  (vl-load-com)
  (setq LFILTOBJ (vla-addobject
                   (vla-GetExtensionDictionary
                     (vla-Get-Layers
                       (vla-Get-ActiveDocument
                         (vlax-Get-Acad-Object)
                       )
                     )
                   )
                   "ACAD_LAYERFILTERS"
                   "AcDbDictionary"
                 )
        SAFECODE (vlax-make-safearray 2 '(0 . 6))
        SAFEFILT (vlax-make-safearray 12 '(0 . 6))
  )
  (vlax-safearray-fill SAFECODE (list 1 1 1 1 70 1 1))
  (foreach
         SUBLST FILTLST
    (vlax-safearray-fill
      SAFEFILT
      (mapcar '(lambda (X) (vlax-make-variant X 8)) SUBLST)
    )
    (vla-addxrecord LFILTOBJ (nth 0 SUBLST))
    (vla-setxrecorddata
      (vla-item LFILTOBJ (nth 0 SUBLST))
      SAFECODE
      SAFEFILT
    )
  )
  (prin1)
)
(defun c:MakeFilters ( / filtlst)
  (setq filtlst
    (list   ;;name      Lay   col   lt   flags   lw   plot
      (list "OnThawed"      "*"   "*"   "*"   13   "*"   "*")
      (list "OffThawed"   "*"   "*"   "*"   15   "*"   "*")
      (list "OnFrozen"      "*"   "*"   "*"   5   "*"   "*")
    )
  )
  (sdg_CreateLayerFilter filtlst)
)
(c:MakeFilters)   


VVA

  • Newt
  • Posts: 166
Re: make layer filters..list of non plot layers
« Reply #1 on: October 13, 2009, 07:18:15 AM »
Hello,
...
How can I create a list of non plot layers ...
...
Code: [Select]
(defun c:NPLT (/ xdict dict layFlt)
;;; No Plot Layer Filter
    (setq xdict
   (vlax-vla-object->ename
     (vla-getextensiondictionary
       (vla-get-layers
(vla-get-activedocument (vlax-get-acad-object))
       ) ;_ end of vla-get-layers
     ) ;_ end of vla-getextensiondictionary
   ) ;_ end of vlax-vla-object->ename
    ) ;_ end of setq

    (setq dict
   (if (setq dict (dictsearch xdict "ACAD_LAYERFILTERS"))
     (cdr (assoc -1 dict))
     (dictadd xdict
      "ACAD_LAYERFILTERS"
      (entmakex
'(
  (0 . "dictionary")
  (100 . "AcDbDictionary")
  (280 . 0)
  (281 . 1)
)
      ) ;_ end of entmakex
     ) ;_ end of dictadd
   ) ;_ end of if
    ) ;_ end of setq

    (princ
      (if (dictsearch dict (setq layFlt "No_Plot_Layers"))
(strcat
  "Layer filter named <"
  layFlt
  "> already exists."
) ;_ end of strcat
(if
  (dictadd dict
   layFlt
   (entmakex
     (append
       '(
(0 . "xrecord")
(100 . "AcDbXrecord")
(280 . 1)
)
       (list (cons 1 layFlt))
       '(
(1 . "*")
(1 . "*")
(1 . "*")
(70 . 3072)
(1 . "*")
(1 . "*")
(-3
  ("ACAD"
   (1000 . "PLOTTABLE== \"FALSE\"")
  )
)
)
     ) ;_ end of append
   ) ;_ end of entmakex
  ) ;_ end of dictadd
   (strcat
     "Created layer filter named <"
     layFlt
     ">."
   ) ;_ end of strcat
   "OOPS! Layer filter not created !!!"
) ;_ end of if
      ) ;_ end of if
    ) ;_ end of princ
    (princ)
  )