QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法
1 k: Y1 I* h) {( ~4 h
  J# t( R4 w2 b7 N& A2 N. K. W/ ^[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层
+ G3 K+ V( L# h! W2 o9 o, X4 D屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本0 K: u, K# E8 I8 v2 C' d, s8 ]7 `
来进行提取
 楼主| 发表于 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例程:: P- R4 N6 K+ [$ ~* d
0 y$ P) l7 _5 L% R; b* |0 O7 S; p
-----------------------------------------------------------) a( Q# Q( J* v+ o( P/ B7 g
Sub TQ()4 R; ^) o/ H5 b" C+ }* y0 C
    On Error Resume Next- O% N/ b5 H2 [" l
    Dim I As Integer
$ a+ ?: n7 A5 ~. n$ i    Dim E As Excel.Application, B As Workbook, S As Worksheet
- M7 C+ ^' }/ B0 C0 z0 c    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
- \4 B! {) Q" x1 e. z    '下面定义选择集过滤器列表为多行文字或单行文字! ~& `% A! [+ V) _: G$ s3 }
    FT(0) = -4: FD(0) = "<or") g/ M8 W8 _4 D
    FT(1) = 0: FD(1) = "mtext"; l8 d, }) A; ^# `# _
    FT(2) = 0: FD(2) = "text"( f. w4 v+ X7 G1 i; i% Q4 u9 j
    FT(3) = -4: FD(3) = "or>"
3 c( p% O" V2 d1 X, L    '创建选择集, b8 `8 M: [$ Q5 v
    Set SS = ThisDrawing.SelectionSets.Add("SS")
4 ^# b4 P/ C: C, q! I6 r2 S    '在屏幕上选择多行文字或单行文字对象
! v- y3 E% p$ a6 ]    SS.SelectOnScreen FT, FD! [; J: C) j9 h- n
     '如果选择集不为空则运行以下代码! g+ Z2 j5 {# F
    If SS.Count > 0 Then
; S8 h3 I1 {  l9 C5 Y" Q        '运行EXCEL程序0 _3 T8 m  t/ i% d% H8 [; f
        Set E = New Excel.Application
' }* j, B. K& w4 N+ w        '在EXCEL中插入工作薄; z- L* O- _' z' I
        Set B = E.Workbooks.Add) C: {7 T5 L$ a" J7 I+ J- J
        '定义工作表% f8 u1 w, L/ b$ Z
        Set S = B.ActiveSheet# C3 H% e$ j) r* c0 b$ A& n
        '显示EXCEL程序
- a( U# d/ I$ O2 W/ r& `! P        E.Visible = True
* t2 P: }" h- b1 Z1 H         '遍历选择集并处理被选中的单行文字或多行文字对象
% N# i  @& e) T        For Each T In SS! B) P% A- I' {0 a/ z3 L
            I = I + 1) D; W/ E* D3 S
            '把单行文字或多行文字的内容写入表格
  S1 b8 v- e1 x            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
8 k& H: N1 \( N, N- g, d& I5 Z            S.Cells(I, 1).Value = T.TextString
/ e( I' F% Y1 u% h; ^. I4 G        Next. R+ F; Q; z' m) R" M
    End If7 V& a) u' A* x4 {. l9 q! [2 c
    SS.Delete '删除用过的选择集
( v3 h; i# T. s4 i$ |End Sub- C$ a+ K9 [4 t2 L" ~
-----------------------------------------------------------------% P  n; ~3 X5 I) l, p

' W/ W4 u5 o$ U9 [) @9 R  U. H+ ?“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。
7 |+ p- I7 S* P8 W) b4 R3 R+ p1 Y* L% [: L9 |; a8 J9 z" M2 Z
[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA
. ]# J( T$ u5 R& d- \楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了- s+ i  T  z) u9 _! T, K$ F
' [5 _. e/ [+ w, F8 _* {
[ 本帖最后由 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 )

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