Jump to content

How to erase Table thru AutoLISP while running Script ??


Ashish123

Recommended Posts

Hello All,

 

I am trying to remove one table from my drawings. Please take a look at the attached sample dwg. I have over 8000 drawings to modify. All drawings contains 3 tables as shown in sample drawing.

 

I want to erase table 3. The location of the table 3 can be anywhere in with in outside border.

 

tried many things. but no luck so far.

 

right now i have an autolisp that works fine if i run it in one drawing. but it doesn't work while running thru script.

 

(defun c:abcd()

(setq ss1 (ssget))

(command "erase" "p" "" )

(command "zoom" "e" "")

(command "qsave")

(princ)

)

 

i have a scrip that loads the autolisp containing the above code.

 

any help would be really appreciated.

TEST DWG.dwg

Link to comment
Share on other sites

If its a table with 4 columns can be done. A word of warning this is destructive once saved table is gone. I would test on a few that have been copied. I would back them all up 1st.

 

 

(defun AH:deltable ( / x y)
(setvar 'ctab "Model")
(setq y 4)
(setq ss (ssget "X" (list (cons 0 "ACAD_TABLE"))))
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object(ssname ss (setq x (- x 1)))))
(setq cols (vla-get-Columns obj))
(if (= cols Y)(vla-delete obj))
)
)
(AH:deltable)

 

 

open dwg1 (load "deltable") close Y
open dwg2 (load "deltable") close Y
open dwg3 (load "deltable") close Y

Link to comment
Share on other sites

Hi Bigal,

 

Thank you very much for the reply. It works like a charm.

 

the only thing i noticed is that your code works when i have a table with 4 columns. Is there a way to modify the code to delete the table with 4 or more rows.?

 

Thank you once again.

Link to comment
Share on other sites

I have modified your code to following code & it works like a charm.

 

(defun AH:deltable ( / x y)

(setvar 'ctab "Model")

(setq x 4)

(setq ss (ssget "X" (list (cons 0 "ACAD_TABLE"))))

(repeat (setq y (sslength ss))

(setq obj (vlax-ename->vla-object(ssname ss (setq y (- y 1)))))

(setq rows (vla-get-Rows obj))

(if (>= rows x)(vla-delete obj))

)

)

(AH:deltable)

 

 

Thank you very much.

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...