QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法
6 n. k6 m7 Z$ S3 b! J1 O* V
/ C6 g' \/ V7 L# u; L. K. _[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层3 N$ _! v' d- U3 U5 l
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本4 Y4 D, x. Q" W8 j3 J7 R/ ?
来进行提取
 楼主| 发表于 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例程:" T3 x8 |5 e- K" [' J. ]

- {5 c# \) |- v" I/ Q# ^-----------------------------------------------------------
% {5 A* e+ o& K! p" G3 t$ [7 _) aSub TQ()5 z. L8 M( K& R& ~1 z1 ?: N
    On Error Resume Next) ]  @7 h1 o8 [* X1 g
    Dim I As Integer
2 l  N  H, g: h; Q    Dim E As Excel.Application, B As Workbook, S As Worksheet  Z% F* U" Q, C3 x; Z
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
* \5 b9 T6 O: P9 {    '下面定义选择集过滤器列表为多行文字或单行文字4 c7 w7 H2 |  Q+ _
    FT(0) = -4: FD(0) = "<or"
, `4 n9 L: g/ J8 ~    FT(1) = 0: FD(1) = "mtext"
1 Z9 o' ^8 G3 H' r8 g( X" Q0 d    FT(2) = 0: FD(2) = "text"7 ^+ ]" s  x8 d+ y7 i( {
    FT(3) = -4: FD(3) = "or>"' P0 X: S( d+ Y( `& @
    '创建选择集
, A* k) n; y9 b. I    Set SS = ThisDrawing.SelectionSets.Add("SS")7 F- j% q1 ~4 b( h; X: }
    '在屏幕上选择多行文字或单行文字对象& x9 }. U' S6 m3 j
    SS.SelectOnScreen FT, FD# a# Z8 @' J  f$ C' m) Q" y# Z
     '如果选择集不为空则运行以下代码
1 J# I. h. s. W  p    If SS.Count > 0 Then! g$ r; Z+ u2 E( H
        '运行EXCEL程序
% x2 L) B, \1 C0 b        Set E = New Excel.Application0 b& y8 \% v6 `+ f: Z) [" I6 a
        '在EXCEL中插入工作薄1 B. O' q) d6 ^; U$ x" d! L" }
        Set B = E.Workbooks.Add- F' z# z! j! j* B1 O4 S6 R
        '定义工作表. D) w$ |7 r8 W- y+ h2 }& c5 x
        Set S = B.ActiveSheet
! D6 M# X% G$ |1 ?        '显示EXCEL程序1 F# D  r1 {7 [: D8 W
        E.Visible = True& a, o7 e$ [, ]9 S  O( K2 U, S$ V: J
         '遍历选择集并处理被选中的单行文字或多行文字对象: o: h- k* u' f* T& Z
        For Each T In SS( r# t9 y1 _! T% z/ L3 m8 w& Q
            I = I + 1: r; _/ l4 V( U. Q7 D* _. t
            '把单行文字或多行文字的内容写入表格
5 ?* ?1 V; D( n" R            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
  ]$ T. r8 u8 s9 C) [- R            S.Cells(I, 1).Value = T.TextString
, s' m0 p8 @- O4 f6 q$ {        Next7 l0 U/ X$ G/ J
    End If
7 i9 _9 E$ t% g: D    SS.Delete '删除用过的选择集
' E2 U/ P$ c5 ]1 ?; G' sEnd Sub
7 e, x5 [# ?* n6 R9 V5 F% N9 a* x-----------------------------------------------------------------
6 _/ S0 `8 g- i: Q
* }0 p5 h) i$ n' I“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。2 R# p2 I7 y/ e3 Q3 A, w
( [7 z# |8 ?1 U0 b' |
[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA3 ]( r. [' E6 T
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了( q! C+ X* s- N. |. A0 a( z+ R7 {
# E' n" z/ @7 R, p
[ 本帖最后由 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 )

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