peraperson 发表于 2014-2-19 15:39 
谢谢回复
你说的是 我的表意不明
我做了一下下面这张图可能比较直观点 45度的话2个位置都可以  - (defun gxl-Num-TAng (ang sty / n)
- (setq n (rem (+ (* 2 pi) ang) sty))
- (if (equal n sty 1e-6)
- 0.0
- n
- )
- )
- (defun mkpl (lst / pt)
- (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(62 . 4) '(100 . "AcDbPolyline") (cons 90 (length lst)) '(70 . 1))
- (mapcar '(lambda (pt)(cons 10 pt)) lst )))
- )
- (defun mktext (str pt th)
- (entmake (list '(0 . "TEXT") '(62 . 3) (cons 1 str) (cons 10 pt) (cons 40 th)))
- )
- (defun c:tt ( / ang1 ang2 e i p1 p2 p3 p4 pm pt pts sn ss x y)
- (while (setq ss (ssget '((0 . "LWPOLYLINE"))))
- (repeat (setq i (sslength ss))
- (setq e (ssname ss (setq i (1- i)))
- pts (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget e)))
- pm (mapcar '(lambda (x y) (/ (+ x y) 2)) (car pts) (caddr pts))
- ang1 (gxl-Num-TAng (angle (car pts) (cadr pts)) pi)
- ang2 (gxl-Num-TAng (angle (cadr pts) (caddr pts)) pi)
- p1 (polar (polar pm pi 500) (* -0.5 pi) 500)
- p3 (polar (polar pm 0 500) (* 0.5 pi) 500)
- p2 (list (car p3) (cadr p1))
- p4 (list (car p1) (cadr p3))
- pt (polar p4 (* 0.5 pi) 50)
- sn (ssadd)
- )
- (mkpl (list p1 p2 p3 p4))
- (ssadd (entlast) sn)
- (mktext "PF1" pt 150)
- (ssadd (entlast) sn)
- (if (> ang1 ang2) (command "_rotate" sn "" pm (/ (* 180 ang2) pi))
- (command "_rotate" sn "" pm (/ (* 180 ang1) pi))
- )
- )
- )
- )
|