找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1201|回复: 8

如何将一个复杂的MTEXT中的字体、字高和字符形成一个表?(已经完成)

[复制链接]
发表于 2004-8-6 03:37:59 | 显示全部楼层 |阅读模式

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

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

×
如何将一个复杂的MTEXT中的字体、字高和字符形成一个表。
表的形式 ((字体  字高  字符)   (字体  字高  字符)  ((字体  字高  字符) ......)
复杂的MTEXT如
(1 . "12{\\H2x;232\\H0.5x;2323}d\\H2x;23{\\f宋体|b0|i0|c134|p0;二类工业用地}a{\\H0.5631x;sd}d")
(1 . "{\\f宋体|b0|i0|c134|p2;12\\H2x;232\\H0.5x;2323\\H2x;23\\f隶书|b0|i0|c134|p49;235\\H0.5x;55}")
(1 . "{\\f黑体|b0|i0|c134|p0;\\H11.84x;a}{\\f华文彩云|b0|i0|c134|p0;\\H13.32x;贡}
    {\\f黑体|b0|i0|c134|p0;\\H13.32x;拷d}{\\f华文琥珀|b0|i0|c134|p0;\\H13.32x;共}
    {\\f方正舒体|b0|i0|c134|p0;\\H13.32x;同}{\\f黑体|b0|i0|c134|p0;\\H8.88x;as}
    {\\f黑体|b0|i0|c134|p0;\\H16.28x;d}{\\f黑体|b0|i0|c134|p0;\\H14.8x;基}
    {\\f黑体|b0|i0|c134|p0;\\H16.28x;本}{\\f黑体|b0|i0|c134|p0;\\H16.28x;}"
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-8-6 05:41:51 | 显示全部楼层
请参考:
[php]
(defun c:test (/ lst)
  ;(vl-load-com)
  (setq dd  (ssget '((0 . "mtext"))))
  (setq n 0)
  (while (< n (sslength dd))
    (setq obj (vlax-ename->vla-object (ssname dd n)))
    (setq lst (append lst (list (vla-get-stylename obj)
                            (vla-get-height obj)
                            (vla-get-textstring obj))))
    (setq n (1+ n))
  )
  lst
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-6 06:25:05 | 显示全部楼层

Re: [求助]:有请众高手前来解决一个问题!

最初由 黄卫文 发布
[B]如何将一个复杂的MTEXT中的字体、字高和字符形成一个表。
表的形式 ((字体  字高  字符)   (字体  字高  字符)  ((字体  字高  字符) ......)
复杂的MTEXT如
(1 . "12{\\H2x;232\\H0.5x;2323}d\\H2x;23{\\f宋体|... [/B]

你把这个复杂字体发上来,就是写一个也很费时间的:)
Mtext很麻烦,其实就是一个拆分,但要将那几个控制符提出来,不知道2002到2005的控制部分有没有增减
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-6 10:51:59 | 显示全部楼层
只能一个一个的读字符串,再判断,所以快不了

或者炸开多重文本分析
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-6 11:14:01 | 显示全部楼层
最初由 lsjjm 发布
[B]请参考:
[php]
(defun c:test (/ lst)
  ;(vl-load-com)
  (setq dd  (ssget '((0 . "mtext"))))
  (setq n 0)
  (while (< n (sslength dd))
    (setq obj (vlax-ename->vla-object (ssname dd n)))
    (... [/B]

你这代码仅对相同的字高和字体有效,这是最简单的情况。如果(vla-get-textstring obj)包括了复杂的定义就不是想要的结果了。

MMMM:炸开也有一个问题,就是炸开后字高是保持了,可是字体是用了缺省的。就想了解一下一个一个字符判断有什么高效的方法。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-6 13:03:55 | 显示全部楼层
其实两个都不是最好的办法,不过相对来说,一个一个读比较保险。
炸开多重文本后,字型定义会消失;一个一个读时,如果文本内容中存在有MTEXT的控制符,就比较麻烦了。这样的程序,应该是Autodesk才能编的最好。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-6 20:13:17 | 显示全部楼层
用 vl-string->list 和 vl-list->string 组合来做如何
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-8-6 20:20:30 | 显示全部楼层
用炸开法吧,写起来简单一点。
ww,字型可以反推嘛 ;)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-8-11 00:15:00 | 显示全部楼层
这个函数已经完成,有兴趣的朋友可以去下载。http://www.xdcad.net/forum/showthread.php?s=&threadid=234150
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 08:26 , Processed in 0.356758 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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