明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: langjs

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

  [复制链接]
发表于 2021-6-19 10:06 | 显示全部楼层
本帖最后由 lee50310 于 2023-6-18 05:55 编辑
请问怎样修改能固定字高,仅仅拉伸宽度?

修改後
  1. ;;; -----------------------------------
  2. ;;; 单行文本动态拉伸 by:langjs
  3. ;;; -----------------------------------
  4. (defun C:qq (/ box data ent gr h hb hh loop p ss w wb)
  5.   (defun emod (h w ent)
  6.     (entmod (subst (cons h w) (assoc h ent) ent))
  7.   )
  8.   (if (setq ss (ssget ":E:S" '((0 . "TEXT"))))
  9.     (progn
  10.       (setq ent   (entget (ssname ss 0))
  11.       p   (cdr (assoc 10 ent))
  12.       h   (cdr (assoc 40 ent))
  13.       w   (cdr (assoc 41 ent))
  14.       box   (textbox (cdr ent))
  15.       hb   (/ h (cadr (cadr box)))
  16.       wb   (/ (car (cadr box)) (* h w))
  17.       loop t
  18.       )
  19.       (princ "\n指定拉伸点:")
  20.       (while loop
  21.   (setq gr   (grread t 15 0)
  22.         data (cadr gr)
  23.   )
  24.   (cond
  25.     ((= (car gr) 3) (setq loop nil))
  26.     ((= (car gr) 5)
  27.      (setq hh  (* hb (abs (- (cadr data) (cadr p)))))
  28.      (if (<= hh 0)(setq hh 0.1)) ;预防分母为0
  29.      ;;((setq ent (emod 40 hh ent))
  30.      (emod 41 (/ (abs (- (car data) (car p))) (* hh wb)) ent)
  31.     )
  32.     ((member (car gr) '(11 25))
  33.      (setq loop nil
  34.      ent  (emod 40 h ent)
  35.      )
  36.      (emod 41 w ent)
  37.     )
  38.   )
  39.       )
  40.     )
  41.   )
  42.   (princ)

  43. )
                            .
                                .




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-9-7 16:12 | 显示全部楼层
谢谢大神的分享
发表于 2023-6-17 19:23 | 显示全部楼层
这个好像只能对一个文本起作用,可以框选几行文本统一放大缩小吗?把所选的所有文本当成一个整体来缩放
发表于 2023-6-17 19:28 | 显示全部楼层
lee50310 发表于 2021-6-19 10:06
找到 程式中的 程式碼                                .
                                .
(cond

不能框选文字,只能单独处理一个文字
发表于 2023-6-18 06:19 | 显示全部楼层
本帖最后由 lee50310 于 2023-6-18 06:22 编辑
戏男 发表于 2023-6-17 19:28
不能框选文字,只能单独处理一个文字

圈選 多組文字
無法同步縮放
只能 一個文字縮放完 在換下一個文字

  1. ;;; -----------------------------------
  2. ;;; 多组单行文本动态拉伸 by:langjs
  3. ;;  
  4. ;;; -----------------------------------

  5. (defun C:qq2 (/ box data ent gr h hb hh loop p ss w wb)
  6. ;---------------------------------------
  7.   (defun emod (v w ent)
  8.     (entmod (subst (cons v w) (assoc v ent) ent))
  9.   )
  10. ;---------------------------------------  
  11. (defun get-tt(ent)      
  12.   (setq p         (cdr (assoc 10 ent))
  13.             h         (cdr (assoc 40 ent))
  14.             w         (cdr (assoc 41 ent))
  15.             box         (textbox (cdr ent))
  16.             hb         (/ h (cadr (cadr box)))
  17.             wb         (/ (car (cadr box)) (* h w))
  18.             loop t
  19.   );end_setq
  20. )  
  21. ;----------------------------------------
  22.   
  23.   (if (setq ss (ssget '((0 . "TEXT"))))
  24.     (progn
  25.                        
  26.           (princ "\n指定拉伸点:")
  27.                   (foreach ex lst
  28.                     (setq ent(entget ex))
  29.                              (get-tt ent)
  30.       (while loop
  31.                  (setq gr   (grread t 15 0)
  32.                        data (cadr gr)
  33.                  );end_setq
  34.                  
  35.                                    
  36.                                         (cond
  37.                                                    ((= (car gr) 3)(setq loop nil))
  38.                                                  ((= (car gr) 5)
  39.                                          (setq hh(* hb (abs (- (cadr data) (cadr p)))))
  40.                                  (if (<= hh 0)(setq hh 0.1)) ;预防分母为0
  41.                                  (setq ent (emod 40 hh ent))
  42.                                  (emod 41 (/ (abs (- (car data) (car p))) (* hh wb)) ent)
  43.                              )
  44.                              ((member (car gr) '(11 25))           
  45.                                       (setq loop nil ent (emod 40 h ent))           
  46.                                       (emod 41 w ent)
  47.                              )
  48.             );end_cond
  49.                     
  50.       );end_while
  51.            );end_foreach
  52.     );end_progn
  53.   );end_if
  54.   (princ)
  55. );end_defun_qq

发表于 2023-6-19 08:02 | 显示全部楼层

不错的楼主,谢谢分享啊。
发表于 2023-11-29 18:48 | 显示全部楼层
方便使用,简单明了,收藏!
发表于 2024-3-22 09:57 | 显示全部楼层
感谢分享感谢分享感谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 09:52 , Processed in 0.568982 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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