QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法
" m* `+ O  v3 x  B2 ~' W8 j7 m, }9 N% t" c2 H' c" J8 v- v
[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层. _. W3 W) Z' k0 h+ h" r! d8 B4 B
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 M  \% e) W; h# e1 N5 f- 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例程:
, M& S* N5 a8 @4 z$ S  Q/ ?7 [/ [* |7 [* U& T/ ?% }4 t
-----------------------------------------------------------
4 h& z% k8 v  }Sub TQ()
& L# h  {$ P" Q* h# ]+ o+ U    On Error Resume Next( v1 w" c" O$ J0 R; l
    Dim I As Integer) i. ^8 N: `7 g4 \
    Dim E As Excel.Application, B As Workbook, S As Worksheet7 ~; B, ~% `9 Y4 r
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
. V( {0 M( s3 O6 K* \) x    '下面定义选择集过滤器列表为多行文字或单行文字3 P* T" U9 j: V/ w7 V
    FT(0) = -4: FD(0) = "<or"
  }* V; A" ?. E; ?    FT(1) = 0: FD(1) = "mtext"
1 Q0 W) u- ]% _$ B& J5 H    FT(2) = 0: FD(2) = "text"
6 z2 }7 [( [. r/ I    FT(3) = -4: FD(3) = "or>"
( c# V; T0 B5 Q    '创建选择集
0 G6 q, T/ \9 {8 `" L" b( d    Set SS = ThisDrawing.SelectionSets.Add("SS")
9 D& D2 @7 q& U' H6 K% E0 V+ E    '在屏幕上选择多行文字或单行文字对象
. b) ^7 E) a: k4 m2 M" y+ A" C. G& q    SS.SelectOnScreen FT, FD% K) ~! g7 t5 K( Z& P- K9 Y" |
     '如果选择集不为空则运行以下代码
/ Y$ N4 _* n0 O1 W) x    If SS.Count > 0 Then
" C$ T6 k9 G6 ^& m- @; t1 f+ `; Y        '运行EXCEL程序- e/ ~3 W, Y0 |* ?
        Set E = New Excel.Application
5 T4 o& j& \( n/ g8 b4 k, V6 W        '在EXCEL中插入工作薄" n) a# {/ c( F
        Set B = E.Workbooks.Add
" o3 |" u- a) t, E5 R' J: d. y/ z        '定义工作表7 Q1 e. A4 B; g: L4 z
        Set S = B.ActiveSheet
1 H( z6 r/ B9 T( v# f- A        '显示EXCEL程序, v. R9 x0 V% j% s$ x, X
        E.Visible = True
/ u. ]1 [' I' T         '遍历选择集并处理被选中的单行文字或多行文字对象
0 J! Z/ ?9 p9 K* F  Y6 ~        For Each T In SS
' q  B0 n3 c6 L) ~: ^            I = I + 1/ g! @4 Q0 R5 V) p6 D
            '把单行文字或多行文字的内容写入表格; \4 |/ a( @& Y/ n# f
            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
! w# d, f2 n! J4 k6 M" e+ C' P            S.Cells(I, 1).Value = T.TextString
) ?% u# C4 B8 ?( g. z3 T" p        Next2 t, l* A6 o( N2 D) ^
    End If
6 d/ e2 p- Y# {    SS.Delete '删除用过的选择集
0 K. p4 l$ ^; q; u. WEnd Sub
# C' o. r2 S6 V. M6 m; w4 u-----------------------------------------------------------------
% v- k( O5 d; \9 Q9 U/ i0 \, J# J2 B# C* b
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。% K8 W7 ^' N" l% F0 x- d$ T* w

+ H: M. s& h3 G8 i3 ~+ X7 _8 R4 o[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA  x6 M0 z: R$ _2 G
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了" S& A4 h# ]) M3 h6 D. j/ x
1 Z* O: M1 S) s9 E1 s
[ 本帖最后由 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 )

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