QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4527|回复: 11
收起左侧

[已解决] 如何一次性提取多行文字内的所有文字

 关闭 [复制链接]
发表于 2008-7-18 11:52:53 | 显示全部楼层 |阅读模式 来自: 中国福建三明

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法7 t! m/ S- I! @9 h4 @6 r: r  e

1 |2 j5 G6 v# u( O[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层
. _# U$ Z3 s* C3 J屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 2008-7-18 13:49:32 | 显示全部楼层 来自: 中国福建三明
我的目地是EXCEL。但只要能至TXT之类就都好办了,三楼的可否讲如何操作
发表于 2008-7-18 13:50:41 | 显示全部楼层 来自: 中国浙江宁波
“工具”菜单里,选择“数据提取”;可以提取到excel

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 应助

查看全部评分

 楼主| 发表于 2008-7-18 14:00:44 | 显示全部楼层 来自: 中国福建三明
楼上的,那只能提取块里的数据,不能提提取多行文字里的数据
发表于 2008-7-18 14:44:55 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本- j' n; f$ f  B6 F0 z
来进行提取
 楼主| 发表于 2008-7-18 16:48:31 | 显示全部楼层 来自: 中国福建三明
我这是2004版的CAD。没有你们讲的数据提取功能,我把属性提取看成数据提取了
发表于 2008-7-18 18:35:12 | 显示全部楼层 来自: 中国辽宁鞍山
数据提取功能一样适用于多行文字,楼上的可以试试
 楼主| 发表于 2008-7-18 19:01:08 | 显示全部楼层 来自: 中国福建三明
我这是2004版的CAD。找不到你们讲的数据提取功能
发表于 2008-7-19 00:01:06 | 显示全部楼层 来自: 中国

回复 10# 的帖子

可以用二次开发功能编程提取。以下是VBA例程:# B3 s( f% m3 f. ]8 c( Q2 h& i

% K5 A& \% x# L8 A' n  x( Y! E-----------------------------------------------------------
$ s# i, s" o& Y2 P+ H$ a+ e6 J5 kSub TQ()  x+ ~! O, L8 x9 D+ r& F
    On Error Resume Next
( ]6 V" j: o+ X( `0 v    Dim I As Integer
0 y! i2 T6 g" n' s5 g0 C3 o" l    Dim E As Excel.Application, B As Workbook, S As Worksheet8 u" P0 s3 @" O) V
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant; |0 j8 Q: e( B3 ~# Y- y3 f/ E
    '下面定义选择集过滤器列表为多行文字或单行文字4 n) Q9 o/ N8 n6 S: O" e8 e' l; h
    FT(0) = -4: FD(0) = "<or"
8 G# c# r0 H' W4 G6 [2 G) v" Y    FT(1) = 0: FD(1) = "mtext") B+ v& C2 t' g  R  s" c
    FT(2) = 0: FD(2) = "text"3 o8 P8 x7 m' B% n2 z) f0 e
    FT(3) = -4: FD(3) = "or>"& H6 J2 Y- j* ^8 ?* h
    '创建选择集
7 j& x9 p) }& ~0 f! z/ T4 Y' t$ G" h    Set SS = ThisDrawing.SelectionSets.Add("SS")- I0 M- |/ P2 P% b! M0 u9 h
    '在屏幕上选择多行文字或单行文字对象" F1 e$ u! P7 ]* r
    SS.SelectOnScreen FT, FD' g9 Q  F: }2 o0 \5 G  _
     '如果选择集不为空则运行以下代码, p' \: o8 {2 ^' [' X
    If SS.Count > 0 Then$ o. s( I* w; e2 s+ E) b( F
        '运行EXCEL程序
, C" s) ^! Y. S+ s6 u& m# b! M! G        Set E = New Excel.Application1 G. M+ ~) |0 W  Q# H" \0 A
        '在EXCEL中插入工作薄$ `4 i% q2 s$ H0 P! |$ S
        Set B = E.Workbooks.Add6 ^$ ~) u: k3 J! V# x8 Z7 x
        '定义工作表; C, l+ N' Y7 q. O9 g6 g) Q( g. o
        Set S = B.ActiveSheet# R2 Y7 {' D4 [% L7 r, A
        '显示EXCEL程序% W; ]7 Y; P& P
        E.Visible = True' j4 O8 I" e2 |9 v2 W  n6 n
         '遍历选择集并处理被选中的单行文字或多行文字对象
  @  G1 M2 V" M1 O        For Each T In SS3 H8 K1 r/ L0 X7 @4 i0 T
            I = I + 1% p' q2 r+ |- x& Q. [) b$ R
            '把单行文字或多行文字的内容写入表格
+ P0 \# u" d/ J1 C            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格' d+ E5 g( z, q4 ^  F
            S.Cells(I, 1).Value = T.TextString
: X  C8 k8 `# m        Next
  }+ y. M% p- I/ e* h    End If, b. J  C  I0 [$ }; ]& u
    SS.Delete '删除用过的选择集
+ ~2 F, R1 T0 R# QEnd Sub
4 _* @1 ]- L. F3 z: I) Y  c-----------------------------------------------------------------
7 h' B2 r$ C' ?; B/ B. x: I, {( f7 ^+ ]: w
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。7 p! D1 Y; W! j: U+ X# ]

1 ^  ^& v3 [8 Y* k' S[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

参与人数 1三维币 +15 收起 理由
wsj249201 + 15 应助

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA& U$ M# y( N6 U: h  T5 ~4 [6 M' V
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了
; f0 \3 f, Z! L) j1 i, @' u' [% I5 M
6 Z( c, y/ w) F9 f[ 本帖最后由 fsj 于 2008-7-19 06:53 编辑 ]

评分

参与人数 1三维币 +1 收起 理由
wsj249201 + 1 感谢你对问题的及时查看并回复说明!

查看全部评分

发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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