本帖最后由 ZZXXQQ 于 2014-9-5 20:54 编辑
 - (defun c:tt ()
- (setvar "CMDECHO" 0)
- (while (and (setq s1 (entsel "\n选择矩形长边一点: "))
- (setq ent (entget(car s1)))
- (= (cdr(assoc 0 ent)) "LWPOLYLINE"))
- (setq ptlst (list))
- (foreach x ent (if (= (car x) 10) (setq ptlst (cons (cdr x) ptlst))))
- (setq ptlst (reverse ptlst))
- (setq p1 (osnap (cadr s1) "END"))
- (setq p2 (osnap (cadr s1) "NEAR"))
- (setq ang (angle p2 p1))
- (while (not(equal (distance p1 (car ptlst)) 0 1e-6))
- (setq ptlst (append (cdr ptlst) (list(car ptlst))))
- )
- (setq ang1 (angle (caddr ptlst) p1))
- (if (or (> ang ang1) (and (equal ang 0 1e-6) (> ang1 pi)))
- (setq p3 (polar (polar p1 (+ (/ pi 2) ang) 5) (+ pi ang) 12))
- (setq p3 (polar (polar p1 (- ang (/ pi 2)) 5) (+ pi ang) 12))
- )
- (command "_.RECTANG" p1 p3)
- )
- (setvar "CMDECHO" 1)
- (princ)
- )
|