QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法
5 {: Q7 h: ^0 `8 j8 N1 w
' d, N: R) n3 H[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层; X, ?, g/ m9 z+ i3 [8 ^# V3 V; G
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本
: g$ C2 ~0 }( Z: r0 H来进行提取
 楼主| 发表于 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例程:4 W" R4 |" u% _

+ ^" Y/ {1 C) v# e-----------------------------------------------------------9 U- I* i  [+ Q4 H: a
Sub TQ()
# O, X7 n3 \9 k" @    On Error Resume Next7 I% }. S) h' t6 M2 R" m
    Dim I As Integer  r. Z8 N1 V$ f3 {: \, T% p& b  q) v5 n1 r2 F
    Dim E As Excel.Application, B As Workbook, S As Worksheet. Y2 K; H  O0 r& l
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant- F# @- k! K0 b8 e& c
    '下面定义选择集过滤器列表为多行文字或单行文字
( r8 S  o( ]( O: j0 m    FT(0) = -4: FD(0) = "<or"
; ~0 p% X% l5 _- u* b) U- p    FT(1) = 0: FD(1) = "mtext"+ |+ r* F" m1 z$ l- ~  Y% \
    FT(2) = 0: FD(2) = "text"4 I; L% }4 t8 i+ Q5 w
    FT(3) = -4: FD(3) = "or>"
5 Y" E% x: @4 V' |  ^9 q    '创建选择集; g+ K* R7 {9 x* Q& n: n
    Set SS = ThisDrawing.SelectionSets.Add("SS")
! \. N" ?; J+ E% v! ]) U7 g    '在屏幕上选择多行文字或单行文字对象5 D: P, m; M  [8 [
    SS.SelectOnScreen FT, FD
- I3 o9 _6 [6 e7 O/ I     '如果选择集不为空则运行以下代码
4 F9 {& S0 `1 R& l8 ]. e    If SS.Count > 0 Then6 I" v0 l. }4 z' A( E3 C
        '运行EXCEL程序
( m. G9 y3 p& Q6 q4 @7 H) ^( w        Set E = New Excel.Application% P3 c1 |! `, M  u! Q( Q7 Z
        '在EXCEL中插入工作薄
  K, q* m; \( ?6 @9 Q        Set B = E.Workbooks.Add
. ?! e, F) W6 l' q/ l        '定义工作表
) a% ~* J2 E1 J        Set S = B.ActiveSheet6 E; g/ o5 I* m" ^1 H2 t8 ?) |
        '显示EXCEL程序- h+ d* T: z3 y& J; z0 V/ z7 }
        E.Visible = True, J/ ^0 Q7 ?% b9 M0 B4 Q5 P  R
         '遍历选择集并处理被选中的单行文字或多行文字对象3 o+ X$ z8 Z6 B" S  c. `
        For Each T In SS# ?6 b) S+ y/ T* W; E
            I = I + 1
" `; }5 X% i  H2 a# J            '把单行文字或多行文字的内容写入表格
, r: h! ]+ v* c% i2 x$ h) B            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格* A2 Z" R7 m2 I! s% C
            S.Cells(I, 1).Value = T.TextString& R5 @* X% \7 f. w0 }
        Next
& ^9 K( v$ ~& g1 ~9 O3 K# s: r    End If; ?4 u/ z8 a: b2 P8 o
    SS.Delete '删除用过的选择集3 L2 m3 f  G. ], d' N
End Sub
! L; D$ X, r# S; E: e% g9 c-----------------------------------------------------------------
0 e# c) z* m2 v: Y- p5 D& j
1 O! P9 q) W. l" \“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。1 h% A  c- @/ f2 t; g+ C8 `

2 w# I% G& ~! ]; B[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA+ J2 m& j: P/ w# d$ K( H( k  _1 H
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了
+ D. |- L2 A6 n
+ n5 ~3 ~, A! a- L[ 本帖最后由 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 )

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