找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 640|回复: 1

[原创]:将单行文本改为多行文本的源程序

[复制链接]
发表于 2007-11-6 09:19:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
不用多说,一目了然,关键是文本宽度计算

----------------------------------代码--------------------------------------------------

;********单行文本转换为多行文本xofox**********
;en 图元名,endata 图元数据,tid 图元标志(若为TEXT则表示为单行文本),tt 文本,th文本高度
;pt 文本基点,ang 文本旋转角度,ttlen 文本大致长度,tstr 相对坐标形式的多行文本的另一点

(defun c:dm(/ s1 i en tid tt th pt ang ttlen twid tang tlen tstr)

  (setq sysvar (getvar "OSMODE")) ;获得并保存对象捕捉设置
  (setvar "OSMODE" 16384)  ;关闭对象捕捉

  (setq s1 (ssget '((0 . "TEXT") ))) ;选取单行文本,构造非空选择集
  (if (/= s1 nil) (print)
      (progn (setvar "OSMODE" sysvar) (exit) )
  )

  (setq i -1)
  (repeat (sslength s1)
     (setq i (+ i 1))
     (setq en (ssname s1 i))
     (setq endata (entget en))
     (setq tid (cdr (assoc 0 endata)))  ;判断是否单行文本
     (setq tt (cdr (assoc 1 endata)))  ;取得文字
     (setq th (cdr (assoc 40 endata)))  ;取得文字高度
     (setq pt (cdr (assoc 10 endata)))  ;取得文字插入点
     (setq ang (cdr (assoc 50 endata)))  ;取得文字旋转角度
     (setq ttlen (strlen tt))   ;取得文字长度
     (setq twid (* (* th 0.7) ttlen))  ;计算文字宽度
     (setq tang (/ (* 180 (+ ang (atan(/ th twid)))) pi))  ;计算多行文本对角点的旋转角度
     (setq tlen (sqrt (+ (* th  th) (* twid twid))))  ;计算多行文本对角线的长度
     (setq tstr (strcat "@" (rtos tlen) "<" (rtos tang)))  ;对角点的相对坐标
     (setq ang (/ (* ang 180) pi))  ;转换弧度为角度
     (command "-mtext" pt "h" th "r" ang tstr tt "")  ;在原位置以原角度原高度生成多行文本
     (entdel en)     ;删除单行文本  
   )

  (setvar "OSMODE" sysvar)  ;恢复对象捕捉设置
)

------------------------------------------------------------------------------------------------
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-11-16 10:53:54 | 显示全部楼层
你这个文字宽度计算方法有误,应该是调用该单行文本的字体设置中的高宽比系数来计算,而不应用一个0.7统一计算。因为有很多人的图中的文字高宽比并不一定是0.7。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 03:01 , Processed in 0.185484 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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