求高手编写LISP代码
请高手编写LISP代码。请先下载“附件.DWG“文件,打开文件,在布局视口中,当点选编号为L001的多线段后,通过函数实现:先把该条多线段和该多线段上的所有拐点(名为拐点的块参照)以及与该多线段相连的所有多线段作为选集A,再以打印范围框(即黑色实线框)作为选择框,将框内所有文字加入选集A,然后将整个图形中除选集A之外的所有元素删除。
也就是说排除节点处的圆和点?其它全要? 就是:多线段要,多线段上节点处的块参照(也即圆和点)要,与多线段相连(即共两端端点)的其他所有多线段要,打印框内所有文字要,除上述要的之外,其他的都删除。
删去 块参照 出现不交 怎么样处置 选定的多线段和线段上节点处的块参照是要的,和选定线段相连的其他线是要的,其他的可以作删除处理,能处理好把要的留下就行,谢谢 现在“选择插入点在多段线顶点上的图元(即名为拐点的块参照)”,已有代码可以实现了,代码如下:
;选择插入点在多段线顶点上的图元
(defun c:lsp()
(setq en (car (entsel "\nSelect:")))
(while en
(setq data (entget en) pl nil)
(foreach xx data (if (= 10 (car xx)) (setq pl (cons (cdr xx) pl))))
(setq filter01 (mapcar '(lambda(xx) (cons 10 xx)) pl))
(setq filter02 (mapcar '(lambda(xx) (cons 11 xx)) pl))
(setq filter (append filter01 filter02))
(setq ss (ssget "x" (append (list '(-4 . "<OR")) filter (list '(-4 . "OR>")))))
(setq ss (ssdel en ss))
(sslength ss);这一步是验证
(setq en nil)
)
)另外有一个问题,能否通过代码实现选择与这些图元相隔最近且在某一图层内的文字,或者是以每个图元为中心框选一定范围内的文字,也就是在附件中,只选择“1、2、3、4、5”这几个文字,而不要把”6、7、8、9、10“这几个文字选进来。谢谢各位高手,能让快点结贴!!!
附件里面哪有123456789这些文字? 不好意思,忘了重新上传一个了,谢谢各位
页:
[1]