Select and Deleting Lines & Text.

Select and Deleting Lines & Text.

Anonymous
Not applicable
2,637 Views
5 Replies
Message 1 of 6

Select and Deleting Lines & Text.

Anonymous
Not applicable

Hello,

 

I'm still very new at LISP and was wondering if anyone could help me understand the syntax/code for selecting and deleting lines and text.

 

I would like a function that simply selects a line in a known location and deletes it. Then a similar one for text.

I've had a go and came up with this mess :S I'd like to know what I'm doing wrong so I can improve, so looking at the code below what's out of place?

 

(setq to_be_deleted (ssget "_F" pt1(list 732.6 264.075)pt2(list 829.626 259.55)))
(if ss (command "_.Erase" to_be_deleted ""))

 

The idea was it would select everything in a box then delete it, but I just get a bunch of errors as I don't fully understand the syntax. If this is the wrong approach I'm happy to go with deleting 1 line/text at a time.

 

0 Likes
Accepted solutions (1)
2,638 Views
5 Replies
Replies (5)
Message 2 of 6

Anonymous
Not applicable

 

Here is what use for deleting everything in a polyline.

EWP everything in polyline not crossing 

ECP everything inside and crossing including the polyline

 

 

(defun c:EWP (/ *error*
                highlight 
        	cmddia 
        	filedia 
        	mirrtext 
        	pickadd 
        	pickauto 
        	pickfirst 
        	selectionpreview 
        	cmdecho 
        	osmode)
(vl-load-com)
  (SB:get_vars)
  (inivar)
    (defun *error* (msg)
    (SB:reset_vars)
    (if
      (not
        (wcmatch
          (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        )
      (princ
        (strcat "\nError: " msg)
        )?
    )
    (princ)
  )
  (princ"\nPick a CLOSED POLYLINE (and everything inside will be erased)...")
  (setq CLOSEDPOLY
	 (vlax-ename->vla-object
	   (car
	     (entsel "\nSelect object :")
	     )
	   )
	)
  (if
    (/= CLOSEDPOLY nil)
    (progn
      (setq POLYTRUEFALSE
		 (vlax-get-property CLOSEDPOLY 'objectname)
		)
      (if
	(= POLYTRUEFALSE "AcDbPolyline")
	(progn
	  (setq CLOSEDTRUEFALSE
		 (vlax-get-property CLOSEDPOLY 'closed)
		)
	  (if
	    (/= CLOSEDTRUEFALSE :vlax-true)
	    (progn(setq CLOSEDPOLY nil)
	      (princ "\nThe POLYLINE isn't CLOSED...")
	      )
	    )
	  )
	(progn
	  (setq CLOSEDPOLY nil)
	  (princ "\nSelect a POLYLINE...")
	  )
	)
      )
    )
  (while
    (= CLOSEDPOLY nil)
    (progn
      (princ "\nNothing Selected...")
      (setq CLOSEDPOLY
	     (vlax-ename->vla-objet
	       (car
		 (entsel "\nSelect object :")
		 )
	       )
	    )
      (if
	(/= CLOSEDPOLY nil)
	(progn
	  (setq POLYTRUEFALSE
		 (vlax-get-property CLOSEDPOLY 'objectname)
		)
	  (if
	    (= POLYTRUEFALSE "AcDbPolyline")
	    (progn
	      (setq CLOSEDTRUEFALSE
		     (vlax-get-property CLOSEDPOLY 'closed)
		    )
	      (if
		(/= CLOSEDTRUEFALSE :vlax-true)
		(progn
		  (setq CLOSEDPOLY nil)
		  (princ "\nThe POLYLINE isn't CLOSED...")
		  )
		)
	      )
	    (progn
	      (setq CLOSEDPOLY nil)
	      (princ "\nSelect a POLYLINE...")
	      )
	    )
	  )
	)
      )
    )
  (setq ENDPARAM
	 (fix
	   (vlax-curve-getEndParam CLOSEDPOLY)
	   )
	)
  (setq COUNT 0)
  (setq listapt nil)
  (while
    (<= COUNT ENDPARAM)
    (progn
      (setq xy
	     (vlax-curve-getPointAtParam CLOSEDPOLY COUNT)
	    )
      (setq listapt
	     (append listapt
		     (list xy)
		     )
	    )
      (setq COUNT
	     (1+ COUNT)
	    )
      )
    )
  (setq lengthlista
	 (length listapt)
	)
  (setq pt1
	 (nth
	   (- lengthlista 2) listapt)pt2
	 (nth
	   (1- lengthlista) listapt)
	)
  (setq strpt1
	 (vl-princ-to-string pt1)strpt2 (vl-princ-to-string pt2)
	)
  (if
    (= strpt1 strpt2)
    (progn
      (setq listapt (vl-remove pt1 listapt)
		)
      )
    )
  (setq selset
	 (ssget "_WP" listapt)
	);select 
  (if
    (/= selset nil)
    (progn
      (setq selnumb
	     (sslength selset)
	    )
      (setq COUNT 0)
      (while
	(< COUNT selnumb)
	(progn
	  (setq ent
		 (ssname selset count)
		)
	  (entdel ent)
	  (setq COUNT
		 (1+ COUNT)
		)
	  )
	)
      )
    (princ "\nNo objects to erase...")
    )
(SB:reset_vars)
  (princ)
  )
;______________________________________________________________________________________________________________________ ;
;															;
;															;
;															;
;															;
;															;
;______________________________________________________________________________________________________________________ ;
(defun c:ECP (/ *error*
                highlight 
        	cmddia 
        	filedia 
        	mirrtext 
        	pickadd 
        	pickauto 
        	pickfirst 
        	selectionpreview 
        	cmdecho 
        	osmode)
(vl-load-com)
  (SB:get_vars)
  (inivar)
    (defun *error* (msg)
    (SB:reset_vars)
    (if
      (not
        (wcmatch
          (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
        )
      (princ
        (strcat "\nError: " msg)
        )?
    )
    (princ)
  )
  (princ"\nPick a CLOSED POLYLINE (and everything inside will be erased)...")
  (setq CLOSEDPOLY(vlax-ename->vla-object(car (entsel "\nSelect object :")
					      )
		    )
	)
  (if
    (/= CLOSEDPOLY nil)
    (progn(setq POLYTRUEFALSE
		 (vlax-get-property CLOSEDPOLY 'objectname)
		)
      (if
	(= POLYTRUEFALSE "AcDbPolyline")
	(progn
	  (setq CLOSEDTRUEFALSE
		 (vlax-get-property CLOSEDPOLY 'closed)
		)
	  (if
	    (/= CLOSEDTRUEFALSE :vlax-true)
	    (progn(setq CLOSEDPOLY nil)
	      (princ "\nThe POLYLINE isn't CLOSED...")
	      )
	    )
	  )
	(progn
	  (setq CLOSEDPOLY nil)
	  (princ "\nSelect a POLYLINE...")
	  )
	)
      )
    )
  (while
    (= CLOSEDPOLY nil)
    (progn
      (princ "\nNothing Selected...")
      (setq CLOSEDPOLY
	     (vlax-ename->vla-objet
	       (car
		 (entsel "\nSelect object :")
		 )
	       )
	    )
      (if
	(/= CLOSEDPOLY nil)
	(progn
	  (setq POLYTRUEFALSE
		 (vlax-get-property CLOSEDPOLY 'objectname)
		)
	  (if
	    (= POLYTRUEFALSE "AcDbPolyline")
	    (progn
	      (setq CLOSEDTRUEFALSE
		     (vlax-get-property CLOSEDPOLY 'closed)
		    )
	      (if
		(/= CLOSEDTRUEFALSE :vlax-true)
		(progn
		  (setq CLOSEDPOLY nil)
		  (princ "\nThe POLYLINE isn't CLOSED...")
		  )
		)
	      )
	    (progn
	      (setq CLOSEDPOLY nil)
	      (princ "\nSelect a POLYLINE...")
	      )
	    )
	  )
	)
      )
    )
  (setq ENDPARAM
	 (fix
	   (vlax-curve-getEndParam CLOSEDPOLY)
	   )
	)
  (setq COUNT 0)
  (setq listapt nil)
  (while
    (<= COUNT ENDPARAM)
    (progn
      (setq xy
	     (vlax-curve-getPointAtParam CLOSEDPOLY COUNT)
	    )
      (setq listapt
	     (append listapt
		     (list xy)
		     )
	    )
      (setq COUNT
	     (1+ COUNT)
	    )
      )
    )
  (setq lengthlista
	 (length listapt)
	)
  (setq pt1
	 (nth
	   (- lengthlista 2) listapt)pt2
	 (nth
	   (1- lengthlista) listapt)
	)
  (setq strpt1
	 (vl-princ-to-string pt1)strpt2 (vl-princ-to-string pt2)
	)
  (if
    (= strpt1 strpt2)
    (progn
      (setq listapt (vl-remove pt1 listapt)
		)
      )
    )
  (setq selset
	 (ssget "_CP" listapt)
	);select crossing 
  (if
    (/= selset nil)
    (progn
      (setq selnumb
	     (sslength selset)
	    )
      (setq COUNT 0)
      (while
	(< COUNT selnumb)
	(progn
	  (setq ent
		 (ssname selset count)
		)
	  (entdel ent)
	  (setq COUNT
		 (1+ COUNT)
		)
	  )
	)
      )
    (princ "\nNo objects to erase...")
    )
  (princ)
  (SB:reset_vars)
  )


;;;-------------------;;;
(defun inivar ()
(setvar "CMDECHO" 0)
(setvar "FLATLAND" 0)
(setvar "OSMODE" 0)
(setvar "ORTHOMODE" 0)
(setvar "PLINETYPE" 2)
(setvar "AUPREC" 0)
(setvar "UNITMODE" 1)
(setvar "LUNITS" 2)
(setvar "DIMZIN" 0)
(setvar "EDGEMODE" 1)
)




(defun SB:get_vars ()
  (setq highlight (getvar "highlight")
        cmddia (getvar "cmddia")
        filedia (getvar "filedia")
        mirrtext (getvar "mirrtext")
        pickadd (getvar "pickadd")
        pickauto (getvar "pickauto")
        pickfirst (getvar "pickfirst")
        selectionpreview (getvar "selectionpreview")
        cmdecho (getvar "cmdecho")
        osmode (getvar "osmode" )
        )
   (princ)
  )




(defun SB:reset_vars ()         
(setvar "highlight" highlight)
(setvar "cmddia" cmddia)
(setvar "filedia" filedia)
(setvar "mirrtext" mirrtext)
(setvar "pickadd" pickadd)
(setvar "pickauto" pickauto)
(setvar "pickfirst" pickfirst)
(setvar "selectionpreview" selectionpreview)
(setvar "cmdecho" cmdecho)
(setvar "osmode" osmode)
  )







 

 

 

 

 

0 Likes
Message 3 of 6

CodeDing
Advisor
Advisor

...well that escalated quickly...

Message 4 of 6

ronjonp
Mentor
Mentor

See if this turns any light bulbs on 🙂

;; Set your variables first
(setq pt1 '(732.6 264.075))
(setq pt2 '(732.6 264.075))
;; See if something is selected (0 . "line,text") creates object filter
;; be aware that point selections need to be on screen to work
(setq to_be_deleted (ssget "_F" (list pt1 pt2) '((0 . "line,text"))))
(if to_be_deleted
  ;; ss
  (command "_.Erase" to_be_deleted "")
)
0 Likes
Message 5 of 6

Anonymous
Not applicable

HAHAHA okay okay 

Better? LOL

0 Likes
Message 6 of 6

Anonymous
Not applicable
Accepted solution

thanks for helping everyone, but this is actually a duplicate of this post:

https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/select-amp-delete-lines-text/td-p/88...

the spam filter decided to block all my posts then release them all at once.

0 Likes