 - (defun c:tt(/ lst are)
- (if &th&
- (progn (setq th (getreal (strcat "\n输入文字高度<" (rtos &th& 2 2 ) ">: ")))
- (if (null th) (setq th &th&) (setq &th& th))
- )
- (progn (setq th (getreal "\n请输入文字高度:<1.0>"))
- (if (null th) (setq th 1 &th& th) (setq &th& th))
- ))
- (setq DimZin-old (getvar "DIMZIN")) (setvar "DIMZIN" 8)
- (foreach a (vl-remove-if 'listp (mapcar 'cadr (ssnamex (setq ss (ssget '((0 . "LWPOLYLINE") (90 . 3)))))))
- (setq pts (mapcar 'cdr (vl-remove-if '(lambda (a) (/= (car a) 10)) (entget a))))
- (setq pts1 (car (vl-sort (mapcar'(lambda (x y)(list (distance x y) x y)) pts (cons (last pts)pts)) (function (lambda (e1 e2) (> (car e1) (car e2))))))
- p1 (cadr pts1)
- p2 (caddr pts1))
- (entmakex (list (cons 0 "TEXT")(cons 10 (mapcar (function (lambda ( a b ) (/ (+ a b) 2.0))) p1 p2))(cons 1 (rtos (/ (fix (distance p1 p2)) 1000.0) 2 3))(cons 50 (angle p1 p2))(cons 40 th)))
- (foreach a pts (if (or (equal (distance a p1) 0 1e-6)(equal (distance a p2) 0 1e-6)) nil (setq p3 a)))
- (entmakex (list (cons 0 "LINE")(cons 10 p3)(cons 11 (setq p33 (polar p3 (- (angle p1 p2) (/ pi 2)) (car (trans (mapcar '- p3 p1) 0 (mapcar '- p2 p1))))))(cons 62 1)))
- (entmakex (list (cons 0 "TEXT")(cons 10 (mapcar (function (lambda ( a b ) (/ (+ a b) 2.0))) p3 p33))(cons 1 (rtos (/ (fix (distance p3 p33)) 1000.0) 2 3))(cons 50 (angle p3 p33))(cons 40 th)))
- (setq lst (cons (strcat "1/2*"(rtos (/ (fix (car pts1)) 1000.0) 2 3)"*" (rtos (/ (fix (distance p3 p33)) 1000.0) 2 3)) lst)
- are (cons (/ (fix (* 0.5 (distance p1 p2) (distance p3 p33))) 1000000.0) are))
- )
- (entmakex (list (cons 0 "TEXT")(cons 10 (getpoint "\n计算公式插入点"))(cons 1 (apply 'strcat (append (reverse(cdr (apply 'append (mapcar'(lambda (a)(list "+" a)) lst)))) (list "=" (rtos (apply '+ are) 2 3)))))(cons 40 th)))
-
- (setvar "DIMZIN" DimZin-old)
- (princ))
|