你这个求交点子程序有很多问题,首先if对应的()位置错误,还有最后求得的坐标根本不是交点坐标。你的交点点表若改为(setq pt_list (append pt_list (list (sub_test1 (ssname ss i)))))才可以,但前提是你的sub_test1 函数能用才行。我大概按你的子程序修正了几个括号,但生成的数量需减1,而且划圆的地方坐标不对。 - (defun c:62( / pt_list)
- (setq ss (ssget '((0 . "line"))))
- ;;;(setq pt_list nil)
- (setq i 0)
- (repeat (sslength ss)
- (setq pt_list (append pt_list (list (sub_test1 (ssname ss i)))))
- (setq i (1+ i))
- )
- (foreach pt pt_list (command "circle" pt 10))
- (alert (strcat "共有<"(itoa (length pt_list))">交点在界面上!"))
- (prin1)
- )
- ;求取交点子程序
- (defun sub_test1(#en)
- (setq endata(entget #en))
- (setq pt10 (cdr(assoc 10 endata)))
- (setq pt11 (cdr(assoc 11 endata)))
- (setq ssint (ssget "f"(list pt10 pt11)))
- (setq ssint (ssdel #en ssint))
- (if(>(sslength ssint )0)
- (progn
- (setq j 0)
- (repeat (sslength ssint)
- (setq ena (ssname ssint j))
- (if (ssmemb ena ss)
- (progn
- (setq pta (cdr(assoc 10 (entget ena))))
- (setq ptb (cdr(assoc 11 (entget ena))))
- (setq intpt (inters pt10 pt11 pta ptb))
- (setq intp1 (osnap intpt "int"))
- (if (not(member intpt1 pt_list))(setq pt_list(cons intpt1 pt_list)))
- )
- )
- (setq j(1+ j))
- )
- )
- )
- )
|