construction lines

construction lines

Anonymous
Not applicable
1,633 Views
23 Replies
Message 1 of 24

construction lines

Anonymous
Not applicable

need help, my lisp isn't working.  Thanks

 

(defun-q c:dz(/ss1)
 (princ"\nErease all xlines:")
 (if(setq ss1(ssget"X"(list(cons 0"XLINE")(con67(if(xyz_is_paper)1 0))))))
  (progn
  (command"erase"ss1)
  (princ(strcat"\Erased "(itoa(sslength ss1))"xlines"))
 );_progn
)'_if
 (princ)
)

0 Likes
Accepted solutions (1)
1,634 Views
23 Replies
Replies (23)
Message 21 of 24

Anonymous
Not applicable

thanks for all your help. It works now.

 

0 Likes
Message 22 of 24

hmsilva
Mentor
Mentor

You're welcome, agmic.

 

The code you have posted, slightly modified to honor Vladimir Nesterovsky's 'xyz_is_paper', if user runs the code in model space, only model space xlines will be deleted, if in a layout, only all xlines in all layouts will be deleted.

 

;;;===============================================?==========================
;;; xyz_is_paper - returns nil for modelspace, T for paperspace
;;;  by Vladimir Nesterovsky
;;; use (cons 67 (if (xyz_is_paper) 1 0)) for ssget "X" of mspace vs. pspace
;;;  note that pspace will get all objects in layouts, not just current
;;;===============================================?==========================
(defun-q xyz_is_paper () (> 2 (getvar "cvport") (getvar "tilemode")))

(vl-load-com)
(defun c:dz ( / adoc layers locklst i ss1)
 (princ"\nErease all xlines:")
 (if (setq ss1 (ssget "X" (list (cons 0 "XLINE")(cons 67 (if (xyz_is_paper) 1 0)))))
  (progn
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    (setq layers (vla-Get-Layers adoc))
    (vlax-for lay layers
      (if (= (vla-get-lock lay) :vlax-true)
        (progn
          (setq locklst (cons (vla-get-name lay) locklst))
          (vla-put-lock lay :vlax-false)
        )
      )
  )
  (repeat (setq i (sslength ss1))
      (vla-delete (vlax-ename->vla-object (ssname ss1 (setq i (1- i)))))
    )
    (if locklst
      (vlax-for lay layers
        (if (vl-position (vla-get-name lay) locklst)
          (vla-put-lock lay :vlax-true)
        )
      )
    )
    (princ (strcat "\Erased " (itoa (sslength ss1)) " xlines"))
    );_progn
   );_if
 (princ)
)

 

Hope that helps
Henrique

EESignature

0 Likes
Message 23 of 24

Kent1Cooper
Consultant
Consultant

@hmsilva wrote:
Using entdel, with ssget "_X", if we are in a layout tab, in a dwg with multi layouts, entdel will only delete objects in current layout and model space, if we are in model space, will delete model and first layout objects...
....

Very odd -- I wonder why it would be set up to work that way, but ... why ask why?

Kent Cooper, AIA
0 Likes
Message 24 of 24

hmsilva
Mentor
Mentor

@Kent1Cooper wrote:

@hmsilva wrote:
Using entdel, with ssget "_X", if we are in a layout tab, in a dwg with multi layouts, entdel will only delete objects in current layout and model space, if we are in model space, will delete model and first layout objects...
....

Very odd -- I wonder why it would be set up to work that way, but ... why ask why?


Very odd, indeed!

 

Henrique

EESignature

0 Likes