明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3904|回复: 28

[已解答] 求一个可动态调整单行/多行文字宽度比例并实时显示的程序

[复制链接]
发表于 2016-5-19 08:39 | 显示全部楼层 |阅读模式
各位大侠,有时候需手动调整多个单行或多行文字的宽度比例,需多次ctrl+1调出特性框,再输入新的宽度比例,这样修改很慢,且有时候输入的比例也不知道是否合适,还需再调。手头上有lsp调整的程序,但还想能更智能,现想请大神编写能动态调整宽度比例的程序,如可用鼠标实时控制宽度并显示。万分感谢。
附:
(defun c:bgg(/ en ent entdata zhi nzhi shu)
   (setq p1 (getreal"输入新的宽度比例:"))
  (setq en (entsel));只针对单行文字
  (setq entdata (entget (car en)))
  (print entdata);查看群码数值
  (setq zhi(assoc 41 entdata));群码41可以修改
  (setq shu (cdr zhi));原数值
  (setq nzhi (cons 41 p1));按群码41修改内容
  (setq entdata (subst nzhi zhi entdata))
  (entmod entdata)
  ;(princ shu)
  (princ)
)

点评

程序这样话,没多大用处。  发表于 2018-4-25 10:33
发表于 2021-5-14 21:08 | 显示全部楼层
针对调整型单行字无效!!!
回复 支持 1 反对 0

使用道具 举报

发表于 2016-5-19 11:33 | 显示全部楼层
本帖最后由 永不言弃 于 2016-5-20 16:05 编辑
  1. ;;逆流而上的鱼制作QQ736188807
  2. ;;工具箱下载http://yunpan.cn/c3iAVqYptpwj9  访问密码 cc19
  3. (defun c:tt nil
  4.   (setq ss (ssget ":S" '((0 . "TEXT"))))
  5.   (setq p0 (cdr (assoc 11 (entget (ssname ss 0)))))
  6.   (setq ct 1)      
  7.   (while (= ct 1)   
  8.     (setq in (grread nil 5 0))   
  9.     (setq i 0)
  10.     (setq nn (sslength ss))
  11.     (repeat nn
  12.       (setq ssn (ssname ss i))
  13.       (setq sn1 (entget ssn))
  14.       (if (= 5 (car in))   
  15.   (progn
  16.     (setq pt (cadr in))
  17.     (redraw)
  18.     (grdraw p0 pt 3 2)
  19.     (setq dis (/ (distance p0 pt) 10))
  20.     (entmod (subst (cons 41 dis) (assoc 41 sn1) sn1))
  21.   )
  22.       )
  23.       (if (= 3 (car in))
  24.   (progn (setq pt (cadr in))
  25.          (setq dis (/ (distance p0 pt) 10))
  26.          (entmod (subst (cons 41 dis) (assoc 41 sn1) sn1))
  27.          (redraw)
  28.          (setq ct nil)
  29.   )
  30.       )
  31.       (setq i (1+ i))
  32.     )
  33.   )
  34.   
  35. )

  36. (print "欢迎使用《逆流而上的鱼制作QQ736188807》")(princ)


本帖子中包含更多资源

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

x
发表于 2016-5-19 17:44 | 显示全部楼层
哇!动态的! 感谢 "永不言弃" 分享程序!
发表于 2016-5-19 18:21 | 显示全部楼层
永不言弃 发表于 2016-5-19 11:33
本代码由不死猫老师编程工具自动打乱


有必要这样子吗?
发表于 2016-5-19 18:29 | 显示全部楼层
同意楼上说法
发表于 2016-5-19 18:55 | 显示全部楼层
本帖最后由 lucas_3333 于 2016-5-19 18:56 编辑

多行文字没有宽度比例这个属性吧

取之于明,还之于明

给个例子吧
  1. (defun c:tt (/ s p e gr)
  2.   (if (setq s (ssget "_+.:S:E:L" '((0 . "TEXT"))))
  3.     (progn
  4.       (setq p (cdr (assoc 10 (entget (setq e (ssname s 0))))))
  5.       (while (eq (car (setq gr (grread t 15 0))) 5)
  6.         (redraw)
  7.         (grdraw p (cadr gr) 1 -1)
  8.         (vla-put-ScaleFactor
  9.           (vlax-ename->vla-object e)
  10.           (distance p (cadr gr))
  11.          )
  12.       )
  13.       (redraw)
  14.     )
  15.   )
  16.   (princ)
  17. )
  18. (vl-load-com)
发表于 2016-5-19 19:14 | 显示全部楼层
说的好,,。。。。
发表于 2016-5-19 19:24 | 显示全部楼层
学习下
发表于 2016-5-19 20:22 | 显示全部楼层
编了个针对单个单行文本编辑器,看是否能满足你的要求
(defun c:tt(/ en entdata p gr w ww)
  (setq en (entsel))
  (setq entdata (entget (car en)))
  (if (wcmatch (cdr(assoc 0 entdata)) "TEXT")
    (progn
      (setq p (cdr(assoc 10 entdata)))
      (while (and (setq gr (grread 5))(= (car gr) 5))
        (setq w (car(cdr gr)))
        (setq ww (abs (-(car p)(car w))))
        (entmod (subst (cons 41 ww) (assoc 41 entdata) entdata))
        (entupd (cdr (assoc -1 entdata)))
        ))
    (princ "类型错误:")
    )
  (princ)
)
发表于 2016-5-19 20:47 | 显示全部楼层
同意楼上说法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-7 06:02 , Processed in 0.258786 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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