QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 4511|回复: 11
收起左侧

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法
% \+ `2 v2 k3 d- F
' I6 s8 z" Y& Z& l' C[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层! k% Z6 D- Y' l1 P' m8 q+ S3 @+ P- @
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本, d; R- i& h5 e! k2 @
来进行提取
 楼主| 发表于 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例程:' j+ s, ]8 D3 _

. D6 X+ G! O8 @- |, a  Y-----------------------------------------------------------: S) t% ]: m7 S; m+ s
Sub TQ()% M. p) c) u% x7 e; [4 j
    On Error Resume Next
( h& }) U2 J2 F9 _1 F    Dim I As Integer6 a2 h/ a6 z3 {+ B7 \. ^
    Dim E As Excel.Application, B As Workbook, S As Worksheet
6 Z5 j4 W3 g1 D  f% ?8 `1 A$ w    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant9 |$ d  Q$ T5 Y. |0 H' B
    '下面定义选择集过滤器列表为多行文字或单行文字4 c& K2 M2 i; D5 E# |9 I( |% ]( m( C
    FT(0) = -4: FD(0) = "<or"
& a# h! @: c. ?8 A4 T6 @' P    FT(1) = 0: FD(1) = "mtext"* S$ V: ?5 s  r1 \' ^  m
    FT(2) = 0: FD(2) = "text"
3 N+ Y7 W4 J4 |  n( [    FT(3) = -4: FD(3) = "or>"
  E4 H9 A" k: f$ m/ x    '创建选择集
* _7 s7 g  \% a+ c# ?9 `    Set SS = ThisDrawing.SelectionSets.Add("SS")
8 u  E& X0 H* o' e# Q$ M    '在屏幕上选择多行文字或单行文字对象! Y3 q+ J: {) r$ Y2 e
    SS.SelectOnScreen FT, FD
5 b' F, k+ K9 e     '如果选择集不为空则运行以下代码
3 f& \- q# G( D- W3 O    If SS.Count > 0 Then; s- V. \. F: j
        '运行EXCEL程序
8 h7 l' h' N, t! w1 |        Set E = New Excel.Application- Z' Q6 k* m8 U  P+ i, R
        '在EXCEL中插入工作薄$ O7 Z3 H2 |2 \5 i- F
        Set B = E.Workbooks.Add1 j$ x7 f/ @7 W
        '定义工作表3 V- ]) E5 ^6 y- Q8 `$ U. t7 R
        Set S = B.ActiveSheet1 i, W, ~+ T% E- X2 C' E: `  u
        '显示EXCEL程序
8 m- z  x" C8 g$ n$ F        E.Visible = True
/ ?2 J* c  a! p! `# h  W: Q8 {         '遍历选择集并处理被选中的单行文字或多行文字对象8 B# i: ]" b% c7 Q
        For Each T In SS
5 x$ F; g; G& w            I = I + 1
7 u2 c  a1 t- D2 K            '把单行文字或多行文字的内容写入表格& J( O# ]( `- _9 y6 d1 m+ s7 t7 k3 M
            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格5 c1 S' L( C9 C3 l. g& A  I
            S.Cells(I, 1).Value = T.TextString7 Y9 ?- ?( `3 m* w1 ^
        Next
, `5 D- G9 n/ |1 o) U7 ?0 v, p    End If
4 M; U  E' a8 A/ J. j% d    SS.Delete '删除用过的选择集7 ^, O+ I. R; K: `/ k
End Sub
5 p& u$ S  S( A3 h-----------------------------------------------------------------  d0 y4 _( v) H7 Q

0 Y3 G, i0 e: u8 C* [  y/ b“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。
( V  J+ o; O% c+ h' I$ j' d
0 z% G6 F+ f; g4 g+ Y[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA
) c& q$ B% K( q( t& e- V' o楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了/ c/ |) w; \' G( G+ |

5 d% A8 z4 f" T5 k[ 本帖最后由 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 )

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