如何通过AutoLI擦除表格
大家好,我正在尝试从我的绘图中删除一个表。请查看随附的示例图纸。我有8000多张图纸要修改。所有图纸包含3个表格,如示例图纸所示。
我想删除表3。表3的位置可以是边界内的任何位置。
尝试了很多事情。但到目前为止运气不好。
现在我有一个autolisp,如果我在一个图形中运行它,它可以很好地工作。但它在运行脚本时不起作用。
(defun c:abcd()
(setq ss1(ssget))
(命令“erase”“p”)
(命令“zoom”“e”)
(命令“qsave”)
(普林斯)
)
我有一个脚本,加载包含上述代码的autolisp。
任何帮助都将不胜感激。
测试图纸。图纸 如果它是一个有4列的表,则可以完成。警告一句,一旦保存的表消失,这将是破坏性的。我会测试一些已经复制的。我会首先支持他们。
(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
嗨,比格尔,
非常感谢您的回复。它就像一个符咒。
我注意到的唯一一件事是,当我有一个包含4列的表时,您的代码可以工作。有没有办法修改代码以删除包含4行或更多行的表。?
再次感谢您。 我已经将您的代码修改为以下代码&它像一个符咒一样工作。
(defun AH:deltable(/x y)
(setvar“ctab”模型)
(setq x 4)
(setq ss(ssget“X”(列表(cons 0“ACAD_表”)))
(重复(setq y(sslength ss))
(setq obj(vlax ename->vla object(ssname ss(setq y(-y 1 k)а)'))
(setq rows(vla get rows obj))
(如果(>=第x行)(vla删除obj))
)
)
(AH:可删除)
非常感谢你。 很高兴听到它帮助了一个简单的解决方案。
页:
[1]