- (defun c:qt3 (;|/ ss i ss1 ss2 ss3 ss4 ss5 ss6 ss6_1 ss7 ss8 ss9 ss10 a1 a2 a3|;) ;判断墙体线是否刚好连接
- (setq ss (ssget)) ;选择对象
- (setq i 0)
- (setq ss7 '())
- (repeat (sslength ss) ;循环选择对象
- (setq ss1 (ssname ss i)) ;取得选集中的第一个对象名称
- (setq ss2 (entget ss1)) ;取得对象所有属性
- (setq ss3 (cdr (assoc 0 ss2))) ;取得对象类别(如:LINE CIRCLE)
- ;(setq ss4 (cdr (assoc 8 ss2))) ;取得对象的图层
- (if (and (= ss3 "LINE") ;|(= ss4 "07结构")|;)
- ;判断所选对象是否为直线且图层是否为"06轮廓"
- (progn
- (setq ss5 (cdr (assoc 10 ss2)))
- (setq ss6 (cdr (assoc 11 ss2)))
- )
- )
- (setq ss6_1 (list ss5 ss6)) ;将单条直线的端点坐标结合成一列表
- (setq ss7 (append ss6_1 ss7)) ;将对象结合成一个列表
- (setq ss6_1 nil) ;将ss6_1再次设为空列表
- (setq i (+ 1 i))
- )
- (setq ss8 (length ss7)) ;取得ss7列表中的元素个数
- (setq a1 0
- a2 0
- a3 0
- )
- (repeat ss8 ;循环ss8等于ss7列表中的元素个数
- (setq ss9 (nth a1 ss7)) ; 取得ss7中的第q个元素值并赋给ss9
- (repeat ss8 ;循环
- ;;; (setq ss9 (nth a1 ss7))
- (setq ss10 (nth a2 ss7)) ;
- (if (equal ss9 ss10 0.01) ;判断ss9是否等于ss10,只能用equal判断不能用=判断,因为ss9和ss10里面都有多个元素!
- (setq a3 (+ 1 a3)) ;如果ss9等于ss10 a3就递增1
- (setq a3 (+ 0 a3))
- ) ;if
- (setq a2 (+ 1 a2)) ;设置取得列表ss7中的第a2个元素递增1
- ) ;repeat
- (if (/= a3 2) ;判断a3是否等于2
- (command "CIRCLE" ss9 50) ;如果a3不等于2就用
- ) ;if
- (setq a3 0 ;把这些变量归零
- ss10 nil
- a2 0
- ss9 nil
- )
- (setq a1 (+ 1 a1))
- ) ;repeat
- (princ)
- )
感觉还有不少漏洞,希望高手们帮忙打打补丁! |