试试看
测试不够
- ;; local defun
- (defun _remove-points(/ en i pe pt sscol ssl ssp)
- (setq sscol (ssadd))
- (setq ssp (ssget "_X" (list
- (cons 0 "POINT")
- (cons 410 (getvar "CTAB")))))
- (setq i -1)
- (while (setq en (ssname ssp (setq i (1+ i))))
- (setq pt (cdr (assoc 10 (entget en))))
- (if (setq ssl (ssget "C" (list (car pt)(cadr pt))
- (list (car pt)(cadr pt))
- (list
- (cons 0 "LINE,*POLYLINE")
- (cons 410 (getvar "CTAB")))))
- (progn
- (setq pe (ssname ssl 0))
- (if (or
- (equal (vlax-curve-getclosestpointto pe pt)
- (vlax-curve-getstartpoint pe) 0.00001)
- (equal (vlax-curve-getclosestpointto pe pt)
- (vlax-curve-getendpoint pe) 0.00001))
- (ssadd en sscol); gather the desired points into separate selection set
- )
- ))
- )
- sscol ;<-- return selection set with desired points
- )
- ;; usage:
- (defun C:test ()
- (setq ss (_remove-points))
- (alert (strcat "Desired points found: " (itoa (sslength ss))))
- (princ)
- )
- (vl-load-com)
此函数用于加载ActiveX DLL(VLA函数)
我编辑了上面的代码,请重试
顺便说一句,仅在2008年测试
~'J'~ |