求一个可动态调整单行/多行文字宽度比例并实时显示的程序
各位大侠,有时候需手动调整多个单行或多行文字的宽度比例,需多次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)
)
针对调整型单行字无效!!! 本帖最后由 永不言弃 于 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)
哇!动态的! 感谢 "永不言弃" 分享程序! 永不言弃 发表于 2016-5-19 11:33 static/image/common/back.gif
本代码由不死猫老师编程工具自动打乱
有必要这样子吗? 同意楼上说法 本帖最后由 lucas_3333 于 2016-5-19 18:56 编辑
多行文字没有宽度比例这个属性吧
取之于明,还之于明
给个例子吧
**** Hidden Message ***** 说的好,,。。。。 学习下 编了个针对单个单行文本编辑器,看是否能满足你的要求
(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)
) 同意楼上说法