 - (defun c:zbbz (/ LC:TEXTLENGTH TEXTSTYLE-BAK TEXTSIZE-BAK TEXTHIGH XSWS PT1 PT2 STRLST TEXTLENGTH PT3 LST)
- (defun LC:TextLength (String / Tbox)
- (setq Tbox (textbox (list (cons 1 String))))
- (distance (car Tbox) (cadr Tbox))
- )
- (setq TEXTSTYLE-bak(getvar "TEXTSTYLE"))
- (setvar "TEXTSTYLE" "Standard")
- (setq textsize-bak (Getvar "textsize")) ;字高系统变量
- (setq texthigh (getreal "\n 请输入文字高度<1.5>: "))
- (if (null texthigh) (setq texthigh 1.5))
- (Setvar "textsize" texthigh)
- (setq xsws (getint "\n 请输入小数位数<3>: "))
- (if (null xsws) (setq xsws 3))
- (initget "H V ")
- (setq fxx (getkword "\n指定标记方向[H/V]<H>:"))
- (or fxx (setq fxx "H"))
- (while (setq pt1 (getpoint "\n 指定注记点: "))
- (setq pt2 (getpoint pt1 "注记位置: "))
- (setq strlst (mapcar'strcat'("Y= " "X= " "H= ")(mapcar '(lambda (x) (rtos x 2 xsws)) pt1)))
- (setq textlength (apply 'MAX (mapcar '(lambda (x) (LC:TextLength x)) strlst)));文字最大长度
- (if (= fxx "H")
- (progn
- (setq pt3 (if (> (car pt2) (car pt1))
- (polar pt2 0 (+ textlength 1))
- (polar pt2 pi (+ textlength 1))
- )
- )
- (setq lst (list pt1 pt2 pt3))
- (entmake (list '(0 . "TEXT")'(41 . 1.0)(cons 1 (cadr strlst)) (cons 10 (polar (polar (IF (>= (car pt2) (car pt1)) pt2 pt3) 0 0.5) (* 0.5 pi) (* texthigh 0.2))) (cons 40 texthigh)))
- (entmake (list '(0 . "TEXT")'(41 . 1.0) (cons 1 (car strlst)) (cons 10 (polar (polar (IF (>= (car pt2) (car pt1)) pt2 pt3) 0 0.5) (* 1.5 pi) (+ (* texthigh 0.2) texthigh))) (cons 40 texthigh)))
- (entmake (list '(0 . "TEXT") '(41 . 1.0)(cons 1 (last strlst)) (cons 10 (polar (polar (IF (>= (car pt2) (car pt1)) pt2 pt3) 0 0.5) (* 1.5 pi) (+ (* texthigh 0.4) (* texthigh 2.0)))) (cons 40 texthigh)))
- (entmake (append (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(100 . "AcDbPolyline")(cons 90 (length lst)))(mapcar '(lambda (pt) (cons 10 pt)) lst)))
- )
- (progn
- (setq pt3 (if (> (cadr pt2) (cadr pt1))
- (polar pt2 (* 0.5 pi) (+ textlength 1))
- (polar pt2 (* -0.5 pi) (+ textlength 1))
- )
- )
- (setq lst (list pt1 pt2 pt3))
- (entmake (list '(0 . "TEXT")'(41 . 1.0)(cons 1 (cadr strlst)) (cons 10 (polar (polar (IF (>= (cadr pt2) (cadr pt1)) pt2 pt3) (* 0.5 pi) 0.5) pi (* texthigh 0.2))) (cons 40 texthigh)(cons 50 (* 0.5 pi))))
- (entmake (list '(0 . "TEXT")'(41 . 1.0) (cons 1 (car strlst)) (cons 10 (polar (polar (IF (>= (cadr pt2) (cadr pt1)) pt2 pt3) (* 0.5 pi) 0.5) 0 (+ (* texthigh 0.2) texthigh))) (cons 40 texthigh)(cons 50 (* 0.5 pi))))
- (entmake (list '(0 . "TEXT") '(41 . 1.0)(cons 1 (last strlst)) (cons 10 (polar (polar (IF (>= (cadr pt2) (cadr pt1)) pt2 pt3) (* 0.5 pi) 0.5) 0 (+ (* texthigh 0.4) (* texthigh 2.0)))) (cons 40 texthigh)(cons 50 (* 0.5 pi))))
- (entmake (append (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")'(100 . "AcDbPolyline")(cons 90 (length lst)))(mapcar '(lambda (pt) (cons 10 pt)) lst)))
- )
- )
- )
- (Setvar "textsize" textsize-bak) ;还原字高系统变量
- (setvar "TEXTSTYLE" TEXTSTYLE-bak) ;还原字体系统变量
- (princ)
- )
|