求教呀 文字适应表格 但不能调整文字大小
各位大侠下面是我写的程序,文字适应表格的,但是有问题已解决不能调整文字大小,请教该 怎么做呀谢谢了(defun c:abc()
(setvar "CMDECHO" 0)
(setq s1 (ssget '((0 . "*TEXT"))))
(setq i 0)
(repeat (sslength s1)
(setq entname (ssname s1 i))
(setq nlist (entget entname))
(vl-cmdf "_.JustifyText" entname "" "MC");设置文字样式居中
(setq nlist (entget entname))
(setq tt (cdr (assoc 1 nlist))) ;取得文字
(setq th (cdr (assoc 40 nlist)));取得文字高度
(setq pt (cdr (assoc 10 nlist)));取得文字插入点
(setq ttlen (strlen tt)) ;取得文字字符个数
(setq twid (* (* th 0.7) ttlen));计算文字宽度
(setq lst nil)
(command "boundary" "a" "i" "n" "" "" pt "")
(setq pen (entlast))
(setq pel (entget pen));取出对象数据表
(setq pel (member '(100 . "AcDbPolyline") pel));取出其中的有关数据
(setq p1 (cdr (nth 6 pel))) ;取出第一点控制点点位
(setq p2 (cdr (nth 14 pel))) ;取出对角点控制点点位
(setq p0 (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2) 0.0));求中心点坐标 以后就是写文字啦,不表述了
(setq p1 (list (car p1) (cadr p1) 0.0));二维点坐标转三维点坐标
(setq p2 (list (car p2) (cadr p2) 0.0));二维点坐标转三维点坐标
(setq cdd (- (car p1) (car p2))) ;取得表格长度
(setq ckk (- (cadr p1) (cadr p2)));取得表格宽度
(setq nlist (subst (cons 41 cdd) (assoc 41 nlist) nlist)) ;设置文本宽度
(setq nlist (subst (cons 10 p0) (assoc 10 nlist) nlist)) ;取得表格居中
(if (> twid cdd) (progn
(setq kk 0.75ll 0.7)
(setq nlist (subst (cons 1 (strcat "\\W" (rtos ll 2) ";\\T" (rtos kk 2) ";" tt)) (assoc 1 nlist) nlist))
(setq oo (- twid (* (- ttlen 1) 0.75)))
(if (> oo cdd) (progn
(setq pp 0.75)
(setq nlist (subst (cons 44 pp) (assoc 44 nlist) nlist))
(setq yt (cdr (assoc 43 nlist)))
(setq pf (cond
((= ckk 5) (setq pf 1.8))
((= ckk 7) (setq pf 2.4))
((= ckk 10) (setq pf 3.5))
((= ckk 17) (setq pf 6))
)
)
;(setq pf 6)
(if (> yt (* th 2)) (progn
;(setq pf (* th 0.71428571428571428571428571428571))
(setq nlist (subst (cons 40 pf) (assoc 40 nlist) nlist)) ;调整多行文字大小
))
))
))
(entmod nlist)
(setq i (1+ i))
)
(setvar "OSMODE" 15359)
(princ)
)
文字大小不能调整,你是用文字适应表格,还是让表格适应文字。 用文字适应表格呀
页:
[1]