乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 19|回复: 19

[编程交流] 摆脱文本格式

[复制链接]

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:15:24 | 显示全部楼层 |阅读模式
我想迭代给定图形的多行文字,并将其导出到Excel。假设在名为MTEXPOBJ的图形中有一个多行文字,其中“sample”写在第一行,“note”写在第二行。这将被解读为“样本注释”。我使用textstring属性:
.
.
将MTEXTEXTBJ设置为AcadMText
MsgBox MTEXTEXTBJ。文本字符串
.
.
autocad返回“sample\Pnote”。这对我来说很合适。
问题是此多行文字的文本格式何时更改。例如,如果双击多行文字,并在“文字格式”框中将颜色更改为红色,autocad将返回
{\C1;示例\Pnote}
 
或者如果我把字体改成verdana
{\fVerdana | b0 | i0 | c0 | p34;sample\fVerdana | b0 | i0 | c178 | p34;\P\fVerdana | b0 | i0 | c0 | p34;注}
 
如何访问多行文字中的真实内容?并排除与字符串合并的文本格式数据。
非常感谢您的帮助。。
回复

使用道具 举报

0

主题

4

帖子

4

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 09:19:26 | 显示全部楼层
你好
 
我认为除了遍历文本字符串和单独剥离控制字符之外,没有其他方法了。请看一下ExpressTools大写文字工具lisp,您将看到Autodesk也是这样做的。
文件tcasessup。lsp,这是他们去除格式的部分:
  1. (defun acet-mtext-format-extract ( str / lst raw len pos frmt flst a n j lst2 )
  2. (setq lst (list "{"    "}"    "\\P"    "\\~"
  3.                 "\\{"    "\\}"    "\\O"    "\\L"
  4.                 "\\S"    "\\A1"    "\\A2"    "\\A3"
  5.                 "\\f"    "\\C"    "\\H"    "\\T"
  6.                 "\\Q"    "\\W" "\\p"
  7.           );list
  8.       raw ""
  9.       len (strlen str)
  10.       pos 0
  11. );setq
  12. (while (> (strlen str) 0)
  13. (setq lst2 (mapcar '(lambda (x) (acet-str-find x str)) lst)
  14.        lst2 (mapcar '(lambda (x) (if x (list x) x)) lst2)
  15.        lst2 (apply 'append lst2)
  16.           j (apply 'min lst2)
  17. );setq
  18. (if (/= j 0)
  19.      (progn
  20.        (setq  raw (strcat raw
  21.                           (substr str 1 (- j 1))
  22.                   )
  23.               str (substr str j)
  24.                 a (acet-mtext-format-bite str) ;; (list format str offset)
  25.              frmt (car a)
  26.               str (cadr a)
  27.                 n (+ pos j)
  28.               pos (+ pos
  29.                      j
  30.                      (caddr a)
  31.                      (- (strlen frmt) 1)
  32.                   )
  33.              frmt (list frmt n)
  34.              flst (cons frmt flst)
  35.        );setq
  36.        (setq n (+ (length lst) 10));get out of inner loop
  37.      );progn
  38.      (setq raw (strcat raw str)
  39.            str ""
  40.      );setq then get out
  41. );if   
  42. );while
  43. (list raw (reverse flst))
  44. );defun acet-mtext-format-extract

 
/Petri网
回复

使用道具 举报

0

主题

4

帖子

4

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 09:24:50 | 显示全部楼层
我通常只是分解多行文字。使用匹配属性到我想要的格式,然后重新组合文本实体。
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:26:59 | 显示全部楼层
Hi Petri(mahahaavaaha)
这些代码会去掉文本格式吗?你能告诉我怎么用吗。我对Lisp程序不太熟悉。
我把它们复制到一个空白记事本中,并将其保存为tcasessup。lsp。然后在acad中
工具>AutoLISP>加载应用程序i加载TCASSUP。lsp。然后,我在提示符下写下tcassup,然后按Enter键。但acad返回错误:“未知命令”tcasessup。按F1键获取帮助。”
这是正确的方式吗?
回复

使用道具 举报

0

主题

31

帖子

29

银币

初来乍到

Rank: 1

铜币
3
发表于 2022-7-6 09:31:02 | 显示全部楼层
我用了一个叫做stripmtext的。lsp,但我怀疑它基本上做了相同的事情。。。
stripmtext[308]。lsp
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:31:36 | 显示全部楼层
 
我用同样的方法测试了它。autocad给了我一个错误:
“无法加载DCL文件stripmtext[3]。DCL”
 
文件中说,对于AutoCAD 2000到2004。我的是2007年。
无论如何谢谢你
 
我正试图找到一个VBA代码
回复

使用道具 举报

0

主题

31

帖子

29

银币

初来乍到

Rank: 1

铜币
3
发表于 2022-7-6 09:37:39 | 显示全部楼层
道歉。。。不会让我上传DCL。。。呃,试试这个拉链。。。我在2006年7月8日运行过
stripmtext[3]。拉链
回复

使用道具 举报

1

主题

6

帖子

5

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:38:21 | 显示全部楼层
 
我应该如何运行它?它仍然返回相同的错误。我应该将DCL文件复制到特殊路径吗?或者在acad中手动加载?
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 09:41:31 | 显示全部楼层
有一个更新的版本。
  1. ;|
  2. StripMtext 4 BETA
  3. Main function that performs the format removal written by John Uhden
  4. All other supporting code and user interface written by Steve Doman
  5. -------------------------------------------------------------------
  6. Notes for Beta 4A 7/18/2005:
  7. 1) New file names are: StripMtext[4a].lsp & StripMtext[4].dcl
  8. 2) Added support for Acad Tables.
  9. 3) Fields inside Mtext objects seem to process ok, but need more testing.
  10. 4) Currently working on Tab removal.  DCL shows Tabs, but it doesn't work yet.
  11. 5) The report which prints a count of objects processed is temporarily disabled.
  12. 6) Please email bug reports, comments, or annoyances to: sdoman@qwest.net
  13. 7) Should I add support for the new fangled ArcLength Dimensions?
  14. |;
回复

使用道具 举报

0

主题

31

帖子

29

银币

初来乍到

Rank: 1

铜币
3
发表于 2022-7-6 09:45:32 | 显示全部楼层
将它们都放在支持目录中,然后应用。Autocad中的lsp。。。使用stripmtext运行
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-7 06:30 , Processed in 1.313503 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表