额 我也写了个,不知道有没有满足要求
 - (defun c:tt( / dix diy en fix_heng fix_zong heng heng_1 i lst pt pt_1 pt_2 pt_3 zong zong_1)
- (setq en (entget (car (entsel "\n选择矩形:"))))
- (setq pt (reverse (cdr (reverse (getpoint "\n选择右上角点:")))))
- (setq lst (mapcar 'cdr (vl-remove-if '(lambda (x) (/= 10 (car x))) en)))
- (setq i 0)
- (repeat 4
- (setq dix (car (nth i lst)))
- (setq diy (cadr (nth i lst)))
- (cond
- ((< dix (car pt)) (setq heng (- (car pt) dix)))
- ((< diy (cadr pt)) (setq zong (- (cadr pt) diy)))
- )
- (setq i (1+ i))
- )
- (setq fix_heng (fix (/ heng 100.0)))
- (setq fix_zong (fix (/ zong 10.0)))
- (setq heng_1 (* (+ fix_heng 1) 100))
- (setq zong_1 (* (+ fix_zong 1) 10))
- (setq pt_1 (list 10 (- (car pt) heng_1) (cadr pt))
- pt_2 (list 10 (- (car pt) heng_1) (- (cadr pt) zong_1))
- pt_3 (list 10 (car pt) (- (cadr pt) zong_1))
- )
- (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 4) (cons 70 1) (cons 10 pt) pt_1 pt_2 pt_3))
- (princ)
- )
|