本帖最后由 ZZXXQQ 于 2015-8-31 15:45 编辑
原程序代码如下: - ;删除与选中图块同名的图中所有的图块,处理建筑图时使用。
- ;图中的家具等无用的图块。
- (defun c:eb ( / ent entl i ss ssx len)
- (print "请选择需要删除的块:")
- (setq ss (ssget '((0 . "INSERT"))))
- (setq len (sslength ss))
- (setq i 0)
- (while (< i len)
- (setq ent (ssname ss i))
- (setq entl2 (assoc 2 (entget ent)))
- (setq ssx (ssget "X" entl2))
- (command ".erase" ssx "")
- (setq i (+ 1 i))
- )
- )
其中 倒数第5行中的(setq ssx (ssget "X" entl2))语句有问题,问题在于ssget函数的filter-list原应该是组码表,但程序中现只是点对。
思考了多种方法均没有成功:
1、想采用quote函数,但该函数后面不可以跟带变量,如果跟带变量之后,只会变成变量名的字符串;
2、想创建一个只含有一项内容的一组码表,采用 (ssadd entl2),将entl2点对创建到一个新的表里,但不知道哪里出问题了,程序运行到这步断了;
3、想采用得到图元的组码表后,将这个表里的除entl2外的其它内容均删除,得到只包含entl2点对的组码表;
想请问一下,对于这种情况,是否有什么好的解决办法,是否有命令直接创建图元组码表?
谢谢!
|