求助完善下列程序,批量打断交点后,能否把亮显交点的数量一起统计出来,谢谢!
求助完善下列程序,批量打断交点后,能否把亮显交点的数量一起统计出来,谢谢!;;;批量打断交点
(defun c:tt(/ i j en iss)
(setq cmd (getvar 'cmdecho))
(setvar 'cmdecho 0)
(while (setq ss (ssget ":S"))
(setq pts nil)
;(setq t0 (vtime))
(command "undo" "g")
(ss->lst ss)
;;先将选择集转表
(setq sslst1 (reverse (cdr (reverse sslst)))
sslst2 (cdr sslst)
)
(interss sslst1 sslst2)
;;再求交点
(foreach n pts
(if
(setq iss (ssget "c"
(mapcar '+ n '(1e-13 1e-13 0))
(mapcar '- n '(1e-13 1e-13 0))
)
)
(progn
(setq j 0)
(repeat (sslength iss)
(setq en (ssname iss j))
(command "break" en n "@")
;;打断
(setq j (1+ j))
)
)
)
)
)
(setvar 'cmdecho cmd)(princ)
)
;;;;选择集转表
(defun ss->lst (ss / e i)
(setq i 0 sslst '())
(while (setq e (ssname ss i))
(setq sslst (cons (vlax-ename->vla-object e) sslst))
(setq i (1+ i))
)
sslst
)
;;所有的交点表
(defun interss (s1 s2 / newpts ipts)
(foreach x sslst1
(foreach y sslst2
(setq ipts (vla-intersectwith x y 0)
ipts (vlax-variant-value ipts)
)
(if (> (vlax-safearray-get-u-bound ipts 1) 0)
(progn
(setq ipts (vlax-safearray->list ipts))
(while (> (length ipts) 0)
(setq newpts (list (car ipts)
(cadr ipts)
(caddr ipts)
)
)
(if (not (member newpts pts))
(setq pts (cons newpts pts))
)
(setq ipts (cdddr ipts))
)
)
)
)
)
pts
)
;;;;;;获得ssget的点坐标
(defun ss->po (ss)
(setq plpr (last (ssnamex ss 0)))
;;获得ssget选择集的一个信息表。
(setq p1 (last (cadr plpr))
p3 (last (cadddr plpr))
)
;;提取刚才的窗选对角坐标。
(setq p1 (trans p1 0 1)
p3 (trans p3 0 1)
)
(ssget "w" p1 p3)
;;返回选集
)
(Princ points)
(princ (strcat "\n共有交点" (itoa (highlight points)) "个"))
(princ)
)
新增上述,还是无反应,请教是什么原因?待解答 还是用ARCGIS做,比较简单。 请详细些好吗? 谢谢分享,学习一下 可以添加图吗?看起来更方便 又一个好程序~感谢楼主分享!正是我需要的功能~
页:
[1]