明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 803|回复: 3

vba中如何优化多行文本的TEXTSTRING属性?

[复制链接]
发表于 2024-3-24 21:22:14 | 显示全部楼层 |阅读模式
本帖最后由 truezhang 于 2024-3-24 22:14 编辑

我的多行文本内容原本是RS1A40D25E 含底座50*80*50,由于位置排版原因,没有选择使用单行文本,发现选择集里面textstring属性有很长一串特殊符号,这些符号有可能去掉吗?想导入到EXCEL里面作为元件规格显示

本帖子中包含更多资源

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

x
发表于 2024-3-25 01:55:46 | 显示全部楼层
发表于 2024-3-25 08:54:28 | 显示全部楼层
本帖最后由 liuhe 于 2024-3-25 08:56 编辑

简单粗暴的方法是,复制这个图元,然后用自带命令分解(一定要是command的分解命令)成单行文字,就可以读取里面纯文本内容。高级一点的是,通过正则规则,格式化这些格式,输出纯文本。
  1. ;;-------------------=={ UnFormat String }==------------------;;
  2. ;;                                                            ;;
  3. ;;  Returns a string with all MText formatting codes removed. ;;
  4. ;;------------------------------------------------------------;;
  5. ;;  Author: Lee Mac, Copyright © 2011 - www.lee-mac.com       ;;
  6. ;;------------------------------------------------------------;;
  7. ;;  Arguments:                                                ;;
  8. ;;  str - String to Process                                   ;;
  9. ;;  mtx - MText Flag (T if string is for use in MText)        ;;
  10. ;;------------------------------------------------------------;;
  11. ;;  Returns:  String with formatting codes removed            ;;
  12. ;;------------------------------------------------------------;;

  13. (defun LM:UnFormat ( str mtx / _replace rx )

  14.     (defun _replace ( new old str )
  15.         (vlax-put-property rx 'pattern old)
  16.         (vlax-invoke rx 'replace str new)
  17.     )
  18.     (if (setq rx (vlax-get-or-create-object "VBScript.RegExp"))
  19.         (progn
  20.             (setq str
  21.                 (vl-catch-all-apply
  22.                     (function
  23.                         (lambda ( )
  24.                             (vlax-put-property rx 'global     actrue)
  25.                             (vlax-put-property rx 'multiline  actrue)
  26.                             (vlax-put-property rx 'ignorecase acfalse)
  27.                             (foreach pair
  28.                                '(
  29.                                     ("\032"    . "\\\\\\\")
  30.                                     (" "       . "\\\\P|\\n|\\t")
  31.                                     ("$1"      . "\\\\(\\\\[ACcFfHLlOopQTW])|\\\\[ACcFfHLlOopQTW][^\\\\;]*;|\\\\[ACcFfHLlOopQTW]")
  32.                                     ("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
  33.                                     ("$1$2"    . "\\\\(\\\\S)|[\\\\](})|}")
  34.                                     ("$1"      . "[\\\\]({)|{")
  35.                                 )
  36.                                 (setq str (_replace (car pair) (cdr pair) str))
  37.                             )
  38.                             (if mtx
  39.                                 (_replace "\\\" "\032" (_replace "\\$1$2$3" "(\\\\[ACcFfHLlOoPpQSTW])|({)|(})" str))
  40.                                 (_replace "\"   "\032" str)
  41.                             )
  42.                         )
  43.                     )
  44.                 )
  45.             )
  46.             (vlax-release-object rx)
  47.             (if (null (vl-catch-all-error-p str))
  48.                 str
  49.             )
  50.         )
  51.     )
  52. )
  53. (vl-load-com)

  54. _ (LM:UnFormat "{\\O\\C1;L\\C256;ee} {\\L\\C2;M\\C256;ac}" nil)
  55. "Lee Mac"

本帖子中包含更多资源

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

x
发表于 2024-3-26 13:59:18 | 显示全部楼层
liuhe 发表于 2024-3-25 08:54
简单粗暴的方法是,复制这个图元,然后用自带命令分解(一定要是command的分解命令)成单行文字,就可以读 ...

炸开方式漏洞太大,如果只读的话还得恢复;如果有不同格式,会被炸成多个单行文字。论坛里有去除格式字符的vba源代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 03:26 , Processed in 1.682960 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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