328302216 发表于 2012-10-11 10:49
多谢前辈指导 - (defun c:zdpy() ;;;单向偏移程序(墙线)
- (setq ss (ssget)) ;;;选取对象
- (setq i 0) ;
- (setq k 1)
- (setq p1 (getdist "请输入偏移距离"))
- (setq ssa (sslength ss))
- (repeat ssa ;;;循环
- (setq ss2 (ssname ss i)) ;;;取得对象中的第一个名称
- (setq ss3 (entget ss2)) ;;;取得对象属性
- (setq ss4 (cdr (assoc 0 ss3))) ;;;取得对象类别(如:LINE CIRCLE)
-
- ;;; (setq ss2a (ssname ss k))
- ;;; (setq ss3a (entget ss2a))
- ;;; (setq ss4a (cdr (assoc 0 ss3a)))
- ;;; (setq ss5 (cdr (assoc 8 ss3))) ;;;取得图层
- (if (= ss4 "LINE") ;;;判断对象是否为直线且图层为07结构
- (progn
- (setq ss6 (cdr (assoc 10 ss3))) ;;;取得对象的第一个端点坐标
- (setq ss7 (cdr (assoc 11 ss3))) ;;;取得对象的第二个端点坐标
- (setq ss8a (angle ss6 ss7))
- )
- )
- (if (equal ssa k 0.0001) (= k 0)) ;设置如果k等于ssa k就等于0
- (setq ss2a (ssname ss k))
- (setq ss3a (entget ss2a))
- (setq ss4a (cdr (assoc 0 ss3a)))
- ;;; (setq ss4b (cdr (assoc 8 ss3a)))
-
- (if (= ss4a "LINE")
- (progn
- (setq ss6a (cdr (assoc 10 ss3a)))
- (setq ss7a (cdr (assoc 11 ss3a)))
- (setq ss9a (angle ss6a ss7a))
- )
- )
- ;;; (setq ss8a (angle ss6 ss7))
- ;;; (setq ss9a (angle ss6a ss7a))
- (setq pp
- (cond
- (and (equal ss8a 1.5708 1e-4) (equal ss9a 0.0 1e-4)) (d01) ;1
- (and (equal ss8a 4.71239 1e-4) (equal ss9a 0.0 1e-4)) (d02) ;2
- (and (equal ss8a 0.0 1e-4) (equal ss9a 1.5708 1e-4)) (d01) ;3
- (and (equal ss8a 3.14159 1e-4) (equal ss9a 1.5708 1e-4)) (d03) ;4
- (and (equal ss8a 4.71239 1e-4) (equal ss9a 3.14159 1e-4)) (d04) ;5
- (and (equal ss8a 1.5708 1e-4) (equal ss9a 3.14159 1e-4)) (d03) ;6
- (and (equal ss8a 0.0 1e-4) (equal ss9a 4.71239 1e-4)) (d02) ;7
- (and (equal ss8a 3.14159 1e-4) (equal ss9a 4.71239 1e-4)) (d04) ;8
- )
- )
- (setq pp1 pp)
- (setq pp1 (list pp1 pp))
- (setq pp '())
- (setq i (+ 1 i))
- (setq k (+ 1 k))
- )
- (setq pp1 (cdr pp1))
- (command "LINE" pp1 "")
- (prin1)
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun d01()
- (setq aab 10)
- (setq ss8 (sqrt (+ (* p1 p1) (* p1 p1))))
- (setq ss9 (polar ss7a (* 0.75 pi) ss8))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun d02()
- (setq ss8 (sqrt (+ (* p1 p1) (* p1 p1))))
- (setq ss9 (polar ss7a (* 0.25 pi) ss8))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun d03()
- (setq ss8 (sqrt (+ (* p1 p1) (* p1 p1))))
- (setq ss9 (polar ss7a (* 1.25 pi) ss8))
- )
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- (defun d04()
- (setq ss8 (sqrt (+ (* p1 p1) (* p1 p1))))
- (setq ss9 (polar ss7a (* 1.75 pi) ss8))
- )
前辈帮忙再看看这个程序, 为什么ss2a为 nil ss3a又等于ss3 |