Author Topic: 0 layer current  (Read 6212 times)

0 Members and 1 Guest are viewing this topic.

Lee Mac

  • Seagull
  • Posts: 12928
  • London, England
Re: 0 layer current
« Reply #15 on: November 11, 2010, 11:17:03 AM »
Did we determine vla-PurgeAll was safe to use?

Code: [Select]
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(repeat 3 (vla-PurgeAll doc))

ronjonp

  • Needs a day job
  • Posts: 7531
Re: 0 layer current
« Reply #16 on: November 11, 2010, 11:17:52 AM »
Here's another  :-D
Code: [Select]
(defun c:0 (/ o)
  (vl-load-com)
  (setq o (vlax-ename->vla-object (tblobjname "layer" "0")))
  (mapcar '(lambda (x) (vlax-put o (car x) (cdr x))) '((freeze . 0) (lock . 0) (layeron . -1)))
  (setvar 'clayer "0")
  (princ)
)
Code: [Select]
(mapcar (function (lambda (x) (apply (function vlax-put) (cons o x))))
             '((freeze 0) (lock 0) (layeron -1))
     )

So many ways to skin a cat  8-) I like it!

Windows 11 x64 - AutoCAD /C3D 2023

Custom Build PC

ronjonp

  • Needs a day job
  • Posts: 7531
Re: 0 layer current
« Reply #17 on: November 11, 2010, 11:27:39 AM »
Did we determine vla-PurgeAll was safe to use?

Code: [Select]
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(repeat 3 (vla-PurgeAll doc))

Not sure if it's "safe" but I still use it  :-)

Windows 11 x64 - AutoCAD /C3D 2023

Custom Build PC

ronjonp

  • Needs a day job
  • Posts: 7531
Re: 0 layer current
« Reply #18 on: November 11, 2010, 11:29:58 AM »
 :-D   I must have too much caffeine in me today....

Windows 11 x64 - AutoCAD /C3D 2023

Custom Build PC

alanjt

  • Needs a day job
  • Posts: 5352
  • Standby for witty remark...
Re: 0 layer current
« Reply #19 on: November 11, 2010, 11:44:29 AM »
Here's another  :-D
Code: [Select]
(defun c:0 (/ o)
  (vl-load-com)
  (setq o (vlax-ename->vla-object (tblobjname "layer" "0")))
  (mapcar '(lambda (x) (vlax-put o (car x) (cdr x))) '((freeze . 0) (lock . 0) (layeron . -1)))
  (setvar 'clayer "0")
  (princ)
)
Code: [Select]
(mapcar (function (lambda (x) (apply (function vlax-put) (cons o x))))
             '((freeze 0) (lock 0) (layeron -1))
     )

So many ways to skin a cat  8-) I like it!
Oh so many. :)

Did we determine vla-PurgeAll was safe to use?

Code: [Select]
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(repeat 3 (vla-PurgeAll doc))

Not sure if it's "safe" but I still use it  :-)
Sadly, vla-purgeall ignores MLeader styles.
Civil 3D 2019 ~ Windohz 7 64bit
Dropbox

ronjonp

  • Needs a day job
  • Posts: 7531
Re: 0 layer current
« Reply #20 on: November 11, 2010, 12:06:56 PM »
Doe this do it?
Code: [Select]
(defun purge-mleaderstyles (/ mls)
  (if (setq mls (vl-remove-if-not
  '(lambda (x) (= (car x) 350))
  (dictsearch (namedobjdict) "acad_mleaderstyle")
)
      )
    (mapcar 'entdel (mapcar 'cdr mls))
  )
  (princ)
)
(purge-mleaderstyles)

Windows 11 x64 - AutoCAD /C3D 2023

Custom Build PC

alanjt

  • Needs a day job
  • Posts: 5352
  • Standby for witty remark...
Re: 0 layer current
« Reply #21 on: November 11, 2010, 12:18:35 PM »
Doe this do it?
Code: [Select]
(defun purge-mleaderstyles (/ mls)
  (if (setq mls (vl-remove-if-not
 '(lambda (x) (= (car x) 350))
 (dictsearch (namedobjdict) "acad_mleaderstyle")
)
      )
    (mapcar 'entdel (mapcar 'cdr mls))
  )
  (princ)
)
(purge-mleaderstyles)
The problem is, it will still purge if the style is used or active. Which will cause AutoCAD to crash.
Here's a CRAPPY one I did a while back, just as a proof of concept.

Code: [Select]
;;; Purge Multileader Styles (since vla-purgeall ignores them)
;;; Alan J. Thompson, 08.24.09
(defun AT:MleaderStylePurge (/)
  (vl-remove-if
    'null
    (mapcar
      '(lambda (x)
         (and
           (eq 350 (car x))
           (not (eq 330 (car (nth 5 (entget (cdr x))))))
           (not (eq (getvar "cmleaderstyle")
                    (vla-get-name (vlax-ename->vla-object (cdr x)))
                ) ;_ eq
           ) ;_ not
           (entdel (cdr x))
         ) ;_ and
       ) ;_ lambda
      (dictsearch (namedobjdict) "ACAD_MLEADERSTYLE")
    ) ;_ mapcar
  ) ;_ vl-remove-if
) ;_ defun

Know that I do not use this, I just have it in a folder of useless subroutines I wrote as learning exercises.
Civil 3D 2019 ~ Windohz 7 64bit
Dropbox