本帖最后由 langjs 于 2017-10-20 11:18 编辑
;;; -----------------------------------
;;; 单行文本动态拉伸 by:langjs
;;; -----------------------------------
(defun C:qq (/ box data ent gr h hb hh loop p ss w wb)
(defun emod (h w ent) (entmod (subst (cons h w) (assoc h ent) ent ) ) )
(if (setq ss (ssget ":E:S" '((0 . "TEXT"))))
(progn
(setq ent (entget (ssname ss 0)) p (cdr (assoc 10 ent)) h (cdr (assoc 40 ent))
w (cdr (assoc 41 ent)) box (textbox (cdr ent)) hb (/ h (cadr (cadr box)))
wb (/ (car (cadr box)) (* h w)) loop t )
(princ "\n指定拉伸点:")
(while loop
(setq gr (grread t 15 0) data (cadr gr))
(cond
((= (car gr) 3) (setq loop nil) )
((= (car gr) 5) (setq hh (* hb (abs (- (cadr data) (cadr p)))) ent (emod 40 hh ent))
(emod 41 (/ (abs (- (car data) (car p))) (* hh wb)) ent))
((member (car gr) '(11 25)) (setq loop nil ent (emod 40 h ent)) (emod 41 w ent)
)))))
(princ)
)
网友答: 请问怎样修改能固定字高,仅仅拉伸宽度?网友答: 本帖最后由 lee50310 于 2023-6-18 06:22 编辑
圈選 多組文字
無法同步縮放
只能 一個文字縮放完 在換下一個文字

网友答: 本帖最后由 尘缘一生 于 2018-5-6 18:18 编辑
程序修改下:增加改后变色,增加垂直书写判断合理调节。
网友答:
大师的思路和技巧是值得学习的!网友答:
进来好好学习,感谢大师分享源码网友答:
这个有用,支持支持网友答:
回帖是一种美德!感谢楼主的无私分享 谢谢网友答:
版本的作品,必须顶网友答:
谢谢大师的分享。。网友答:
感谢大师的分享
。。网友答:
很好用,以后不用这么麻烦的缩放字体了网友答:
不错的楼主,谢谢分享啊。
;;; -----------------------------------
;;; 单行文本动态拉伸 by:langjs
;;; -----------------------------------
(defun C:qq (/ box data ent gr h hb hh loop p ss w wb)
(defun emod (h w ent) (entmod (subst (cons h w) (assoc h ent) ent ) ) )
(if (setq ss (ssget ":E:S" '((0 . "TEXT"))))
(progn
(setq ent (entget (ssname ss 0)) p (cdr (assoc 10 ent)) h (cdr (assoc 40 ent))
w (cdr (assoc 41 ent)) box (textbox (cdr ent)) hb (/ h (cadr (cadr box)))
wb (/ (car (cadr box)) (* h w)) loop t )
(princ "\n指定拉伸点:")
(while loop
(setq gr (grread t 15 0) data (cadr gr))
(cond
((= (car gr) 3) (setq loop nil) )
((= (car gr) 5) (setq hh (* hb (abs (- (cadr data) (cadr p)))) ent (emod 40 hh ent))
(emod 41 (/ (abs (- (car data) (car p))) (* hh wb)) ent))
((member (car gr) '(11 25)) (setq loop nil ent (emod 40 h ent)) (emod 41 w ent)
)))))
(princ)
)
网友答: 请问怎样修改能固定字高,仅仅拉伸宽度?网友答: 本帖最后由 lee50310 于 2023-6-18 06:22 编辑
戏男 发表于 2023-6-17 19:28
不能框选文字,只能单独处理一个文字
圈選 多組文字
無法同步縮放
只能 一個文字縮放完 在換下一個文字

- ;;; -----------------------------------
- ;;; 多组单行文本动态拉伸 by:langjs
- ;;
- ;;; -----------------------------------
- (defun C:qq2 (/ box data ent gr h hb hh loop p ss w wb)
- ;---------------------------------------
- (defun emod (v w ent)
- (entmod (subst (cons v w) (assoc v ent) ent))
- )
- ;---------------------------------------
- (defun get-tt(ent)
- (setq p (cdr (assoc 10 ent))
- h (cdr (assoc 40 ent))
- w (cdr (assoc 41 ent))
- box (textbox (cdr ent))
- hb (/ h (cadr (cadr box)))
- wb (/ (car (cadr box)) (* h w))
- loop t
- );end_setq
- )
- ;----------------------------------------
-
- (if (setq ss (ssget '((0 . "TEXT"))))
- (progn
-
- (princ "\n指定拉伸点:")
- (foreach ex lst
- (setq ent(entget ex))
- (get-tt ent)
- (while loop
- (setq gr (grread t 15 0)
- data (cadr gr)
- );end_setq
-
-
- (cond
- ((= (car gr) 3)(setq loop nil))
- ((= (car gr) 5)
- (setq hh(* hb (abs (- (cadr data) (cadr p)))))
- (if (<= hh 0)(setq hh 0.1)) ;预防分母为0
- (setq ent (emod 40 hh ent))
- (emod 41 (/ (abs (- (car data) (car p))) (* hh wb)) ent)
- )
- ((member (car gr) '(11 25))
- (setq loop nil ent (emod 40 h ent))
- (emod 41 w ent)
- )
- );end_cond
-
- );end_while
- );end_foreach
- );end_progn
- );end_if
- (princ)
- );end_defun_qq
网友答: 本帖最后由 尘缘一生 于 2018-5-6 18:18 编辑
程序修改下:增加改后变色,增加垂直书写判断合理调节。

- ;;; -----------------------------------
- ;;; 单行文本动态拉伸 by:langjs
- ;;; -----修改:白领坛主------------------------------
- (defun c:qq (/ box data ent gr h hb hh loop p ss w wb ang)
- (defun emod (h w ent)
- (entmod (subst
- (cons h w)
- (assoc h ent)
- ent
- )
- )
- )
- (if (setq ss (ssget ":E:S" '((0 . "TEXT"))))
- (progn
- (setq ent (entget (ssname ss 0))
- p (cdr (assoc 10 ent))
- h (cdr (assoc 40 ent))
- w (cdr (assoc 41 ent))
- ang (cdr (assoc 50 ent))
- box (textbox (cdr ent))
- hb (/ (cadr (cadr box)) h)
- wb (/ (car (cadr box)) (* h w))
- loop t
- )
- (princ "\n指定拉伸点:")
- (while loop
- (setq gr (grread t 15 0)
- data (cadr gr)
- )
- (cond
- ((= (car gr) 3)
- (setq loop nil)
- )
- ((= (car gr) 5)
- (if (/= 1 (sin ang))
- (progn
- (setq hh (* hb (abs (- (cadr data) (cadr p))))
- ent (emod 40 hh ent)
- )
- (emod 41 (/ (abs (- (car data) (car p))) (* hh wb)) ent)
- )
- )
- (if (= 1 (sin ang))
- (progn
- (setq hh (/ (* hb (abs (- (cadr data) (cadr p)))) 2)
- ent (emod 40 hh ent)
- )
- (emod 41 (/ (abs (- (cadr data) (cadr p))) (* hh wb)) ent)
- )
- )
- )
- ((member (car gr) '(11 25))
- (setq loop nil
- ent (emod 40 h ent)
- )
- (emod 41 w ent)
- )
- )
- )
- )
- )
- (setq oldlup (getvar "LUPREC"))
- (setvar "LUPREC" 0) ; 精度到各位,以便后续取得标准颜色号
- (command "CHANGE" (ssname ss 0) "" "P" "C" (rtos (1+ (rem (getvar "CPUTICKS")
- 8
- )
- )
- ) ""
- )
- (setvar "LUPREC" oldlup) ; 恢复数值小数位数
- (princ)
- )
感谢大师的分享
。。网友答:
很好用,以后不用这么麻烦的缩放字体了网友答:
不错的楼主,谢谢分享啊。