sanpoul 发表于 2016-5-19 08:39:00

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

各位大侠,有时候需手动调整多个单行或多行文字的宽度比例,需多次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)
)

fangseng 发表于 2021-5-14 21:08:12

针对调整型单行字无效!!!

永不言弃 发表于 2016-5-19 11:33:49

本帖最后由 永不言弃 于 2016-5-20 16:05 编辑

;;逆流而上的鱼制作QQ736188807
;;工具箱下载http://yunpan.cn/c3iAVqYptpwj9访问密码 cc19
(defun c:tt nil
(setq ss (ssget ":S" '((0 . "TEXT"))))
(setq p0 (cdr (assoc 11 (entget (ssname ss 0)))))
(setq ct 1)      
(while (= ct 1)   
    (setq in (grread nil 5 0))   
    (setq i 0)
    (setq nn (sslength ss))
    (repeat nn
      (setq ssn (ssname ss i))
      (setq sn1 (entget ssn))
      (if (= 5 (car in))   
(progn
    (setq pt (cadr in))
    (redraw)
    (grdraw p0 pt 3 2)
    (setq dis (/ (distance p0 pt) 10))
    (entmod (subst (cons 41 dis) (assoc 41 sn1) sn1))
)
      )
      (if (= 3 (car in))
(progn (setq pt (cadr in))
         (setq dis (/ (distance p0 pt) 10))
         (entmod (subst (cons 41 dis) (assoc 41 sn1) sn1))
         (redraw)
         (setq ct nil)
)
      )
      (setq i (1+ i))
    )
)

)

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


yoyoho 发表于 2016-5-19 17:44:47

哇!动态的! 感谢 "永不言弃" 分享程序!

jltx123456 发表于 2016-5-19 18:21:00

永不言弃 发表于 2016-5-19 11:33 static/image/common/back.gif


本代码由不死猫老师编程工具自动打乱

有必要这样子吗?

bai2000 发表于 2016-5-19 18:29:23

同意楼上说法

lucas_3333 发表于 2016-5-19 18:55:21

本帖最后由 lucas_3333 于 2016-5-19 18:56 编辑

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

取之于明,还之于明

给个例子吧
**** Hidden Message *****

冒个烟圈 发表于 2016-5-19 19:14:24

说的好,,。。。。

feng83 发表于 2016-5-19 19:24:34

学习下

feng83 发表于 2016-5-19 20:22:32

编了个针对单个单行文本编辑器,看是否能满足你的要求
(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)
)

lxw320 发表于 2016-5-19 20:47:39

同意楼上说法
页: [1] 2 3
查看完整版本: 求一个可动态调整单行/多行文字宽度比例并实时显示的程序