明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: langjs

[源码] 单行文本动态拉伸

  [复制链接]
发表于 2018-4-25 10:16 | 显示全部楼层
本帖最后由 尘缘一生 于 2018-5-6 18:18 编辑

程序修改下:增加改后变色,增加垂直书写判断合理调节。
  1. ;;; -----------------------------------
  2. ;;; 单行文本动态拉伸 by:langjs
  3. ;;; -----修改:白领坛主------------------------------
  4. (defun c:qq (/ box data ent gr h hb hh loop p ss w wb ang)
  5.   (defun emod (h w ent)
  6.     (entmod (subst
  7.               (cons h w)
  8.               (assoc h ent)
  9.               ent
  10.             )
  11.     )
  12.   )
  13.   (if (setq ss (ssget ":E:S" '((0 . "TEXT"))))
  14.     (progn
  15.       (setq ent (entget (ssname ss 0))
  16.         p (cdr (assoc 10 ent))
  17.         h (cdr (assoc 40 ent))
  18.         w (cdr (assoc 41 ent))
  19.         ang (cdr (assoc 50 ent))
  20.         box (textbox (cdr ent))
  21.         hb (/ (cadr (cadr box)) h)
  22.         wb (/ (car (cadr box)) (* h w))
  23.         loop t
  24.       )   
  25.       (princ "\n指定拉伸点:")
  26.       (while loop
  27.         (setq gr (grread t 15 0)
  28.           data (cadr gr)
  29.         )
  30.         (cond
  31.           ((= (car gr) 3)
  32.             (setq loop nil)
  33.           )
  34.           ((= (car gr) 5)
  35.             (if (/= 1 (sin ang))
  36.               (progn
  37.                 (setq hh (* hb (abs (- (cadr data) (cadr p))))
  38.                   ent (emod 40 hh ent)
  39.                 )
  40.                 (emod 41 (/ (abs (- (car data) (car p))) (* hh wb)) ent)
  41.               )
  42.             )
  43.             (if (= 1 (sin ang))
  44.               (progn
  45.                 (setq hh (/ (* hb (abs (- (cadr data) (cadr p)))) 2)
  46.                   ent (emod 40 hh ent)
  47.                 )
  48.                 (emod 41 (/ (abs (- (cadr data) (cadr p))) (* hh wb)) ent)
  49.               )
  50.             )            
  51.           )
  52.           ((member (car gr) '(11 25))
  53.             (setq loop nil
  54.               ent (emod 40 h ent)
  55.             )
  56.             (emod 41 w ent)
  57.           )
  58.         )
  59.       )
  60.     )
  61.   )
  62.   (setq oldlup (getvar "LUPREC"))
  63.   (setvar "LUPREC" 0)           ; 精度到各位,以便后续取得标准颜色号
  64.   (command "CHANGE" (ssname ss 0) "" "P" "C" (rtos (1+ (rem (getvar "CPUTICKS")
  65.                                                          8
  66.                                                        )
  67.                                                    )
  68.                                              ) ""
  69.   )
  70.   (setvar "LUPREC" oldlup)         ; 恢复数值小数位数
  71.   (princ)
  72. )
发表于 2018-4-25 11:23 | 显示全部楼层
不错的楼主,谢谢分享啊。
发表于 2019-11-14 11:32 | 显示全部楼层
请问怎样修改能固定字高,仅仅拉伸宽度?
回复 支持 1 反对 0

使用道具 举报

发表于 2019-11-15 11:56 | 显示全部楼层
不错的楼主,谢谢分享!!!!!
发表于 2020-1-5 10:01 | 显示全部楼层
本帖最后由 ketxu 于 2020-1-5 11:56 编辑

This not catch case  (divide by zero)
发表于 2021-1-30 19:34 | 显示全部楼层
这个不错,谢谢分享
发表于 2021-1-31 12:29 | 显示全部楼层
很好用啊 省的每次放大缩小  还大小控制不好  不错的楼主
发表于 2021-1-31 12:30 | 显示全部楼层
大师再放点干货出来啊
发表于 2021-6-19 09:07 | 显示全部楼层
大师,能否支持块内或者块属性文字?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 21:27 , Processed in 0.341271 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表