明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2731|回复: 6

用LISP怎样取得MText中的文本信息?

[复制链接]
发表于 2008-1-24 11:18 | 显示全部楼层 |阅读模式
用LISP怎样取得MText中的文本信息?
一行用MText写的文本"XⅠ526",我想用图元表,但发现得到的是这么一个东西
  1. (1 ."\\C7;\\fTimes New Roman|b0|i0|;\\H1.7121975272894;X\\f宋体|b0|i0|;\\H2.1221603155136;Ⅰ\\fTimes New Roman|b0|i0|;\\H1.7121975272894;526")
复制代码
也就是说它包含了字体信息,现在我只想留下"XⅠ526",这么一个文本。
因为是要调用这个文本,所以不能将其炸开,而且炸开之后它也变成了三段Text,分别为"X" "Ⅰ" "526"。
请高人帮帮忙,谢谢!
发表于 2008-1-24 16:40 | 显示全部楼层

炸开,得到文本,然后 undo 回去

发表于 2008-1-24 21:34 | 显示全部楼层

不知道会不会出现其它情况:

(defun c:test ()
  (setq ent (car (entsel "\n选择MTEXT文字:")))
  (setq dxf (entget ent))
  (setq str0 "")
  (setq txt (cdr (assoc 1 dxf)))
  (setq txt (vl-string-subst "" "{" txt))
  (setq txt (vl-string-subst "" "}" txt))
  (while (setq n (vl-string-search ";" txt))
    (if (= (setq str (substr txt 1 1)) "\\")
      (setq txt (substr txt (+ n 2)))
      (progn
 (setq str0 (strcat str0 (substr txt 1 1)))
 (setq txt (substr txt 2))
      )
    )
  )
  (setq str0 (strcat str0 txt))
  (princ (strcat "当前MTEXT中的文本为: " str0))
  (princ)
)

发表于 2008-1-24 23:52 | 显示全部楼层

明总和lzh都写了mtext提取文本的函数,可以搜索找找。

正则表达式

 楼主| 发表于 2008-1-25 08:33 | 显示全部楼层

感谢各位高人前辈的指点。

2楼的方法似乎不可行,主要是炸开后变成了好几段TEXT。

3楼的代码目前实验没有出错,借用了^_^

也搜索了一下“正则表达式”,太高深了,暂时看不懂,还要慢慢学习。

再次感谢各位!

发表于 2008-1-25 09:58 | 显示全部楼层

;; 二楼的方法在特殊情况下容易出错

(defun c:test (/ en ss str)
  (if (setq en (entsel "\n选择多行文字: "))
    (progn
      (command "_.explode" (car en))
      (setq ss (ssget "_p") str "")
      (repeat (setq n (fix (sslength ss)))
        (setq en  (ssname ss (setq n (1- n)))
              en  (entget en)
              str (strcat (cdr (assoc 1 en)) str)
        )
      )
      (command "_.undo" 1)
      (alert str)
    )
  )
  (princ)
)

发表于 2008-1-25 10:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-12 21:32 , Processed in 0.166337 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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