明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4489|回复: 10

将单行文本改为多行文本的源程序

  [复制链接]
发表于 2007-11-6 09:03:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-11-6 9:14:40 编辑

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

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

;********单行文本转换为多行文本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)  ;恢复对象捕捉设置
)

------------------------------------------------------------------------------------------------

本帖子中包含更多资源

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

x

点评

好像不是楼主原创  发表于 2012-7-24 14:59

评分

参与人数 1明经币 +1 收起 理由
wayne_myles + 1 很给力!

查看全部评分

发表于 2007-11-6 10:07:00 | 显示全部楼层

顶!先下来再说!支持!

暂时不用,但是对于新手来说定有启发性。

发表于 2007-11-9 08:37:00 | 显示全部楼层
有没有多行文本改为单行文本的程序?

点评

炸开  发表于 2012-2-27 20:59
发表于 2007-11-9 10:38:00 | 显示全部楼层

谢谢楼主的分享,现在用不着,以后应该用得着!

发表于 2007-11-9 11:57:00 | 显示全部楼层

坦白说,不好用。

发表于 2007-11-9 12:18:00 | 显示全部楼层

回3楼,炸开就可以了

不需要程序呀

发表于 2007-11-12 10:13:00 | 显示全部楼层
本帖最后由 作者 于 2007-11-12 10:27:19 编辑

我已经把该功能移植到4.3版仿R14特性工具中。

4.3版添加双击启动编辑命令、点转标高、中心线、同心圆、单行文本转多行文本等功能,
并作了多处小改进:支持标注变量dimsoxd、添加对文字遮罩的支持等。

详细内容:http://bbs.mjtd.com/forum.php?mod=viewthread&tid=61313

我也试图开发这样个程序,用entmake的方法写了一大堆程序,由于无法有效控制对齐点只好作罢。
你的程序简单实用我直接采纳。非常感谢!

含第三方程序的文件

本帖子中包含更多资源

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

x
发表于 2012-2-27 19:37:07 | 显示全部楼层
entmake我试了也不行为什么啊?
发表于 2012-7-23 15:55:00 | 显示全部楼层
正在找,偏偏就有;急人所急,多多多谢。
发表于 2012-7-23 20:58:04 | 显示全部楼层
下面这个不知道算不算:

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2025-5-28 01:21 , Processed in 0.175736 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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