QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法' D1 B( \, X; |$ B  Q: r

  I+ ?% b. `! J  r9 d[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层# Q5 ]/ u  h" J. J
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本
$ n! f! {! W! J& t+ S- c来进行提取
 楼主| 发表于 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例程:
3 i9 e& }4 V" X9 ^3 e: q$ f! L0 f. P0 y
-----------------------------------------------------------
1 Y% H) J, h3 A6 BSub TQ()
8 }: J4 s" l- v  Z# I* T    On Error Resume Next" n5 s# d; ~0 n, [+ n1 @* I
    Dim I As Integer* {6 ?' x. r( v: m% M
    Dim E As Excel.Application, B As Workbook, S As Worksheet
  L/ X$ v. j$ O% W6 c% ^) W    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
# C  F' ^+ I3 y5 B8 p    '下面定义选择集过滤器列表为多行文字或单行文字
( U7 c6 N3 Q  Q) e6 L    FT(0) = -4: FD(0) = "<or", e3 v0 ]# A* b9 T8 X
    FT(1) = 0: FD(1) = "mtext"+ U  g  r( s1 x) i
    FT(2) = 0: FD(2) = "text"( u# |" o5 P* E0 e/ b# k$ S7 X
    FT(3) = -4: FD(3) = "or>"
2 K$ }$ g* w5 u3 T' B+ W    '创建选择集9 W" ?- _( V$ _, P: L3 G
    Set SS = ThisDrawing.SelectionSets.Add("SS")) c( |6 h) k1 r* C/ q  e
    '在屏幕上选择多行文字或单行文字对象
4 I" y1 F; d. y1 R3 p    SS.SelectOnScreen FT, FD4 a% M) p# ~5 N7 m$ K  @
     '如果选择集不为空则运行以下代码
" d1 E3 k: A3 h$ p$ {5 g    If SS.Count > 0 Then
7 p. W4 u$ a" f        '运行EXCEL程序' F0 ~1 Y2 p: @7 o+ i
        Set E = New Excel.Application
( _/ U% s& x; m        '在EXCEL中插入工作薄' |( P! n& _. n7 a! m. c) j
        Set B = E.Workbooks.Add
1 ?2 U) U: M1 S; s& x/ A        '定义工作表
' c" [  O# m& z        Set S = B.ActiveSheet9 ^9 U1 _+ J0 R% J
        '显示EXCEL程序
& F, F$ M* B  s% \3 g7 _: J        E.Visible = True
7 J$ a" k7 j$ H( W" y         '遍历选择集并处理被选中的单行文字或多行文字对象, H4 \6 i! |4 H# p
        For Each T In SS) a( h- R; |. N9 l2 k  _
            I = I + 1
; q; A7 j# v# }* i            '把单行文字或多行文字的内容写入表格; }7 _# i5 |7 x. n- x* M% Z- {
            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
4 i" y4 A, t  v* z& T; d: h! D            S.Cells(I, 1).Value = T.TextString: z. m7 c+ e  J$ t! e
        Next, |, G% w+ t/ W3 A9 W/ ]- c
    End If
; i/ s7 x, K# ]' Y% P    SS.Delete '删除用过的选择集
  u6 @! Y" j, j3 k* O+ f6 Q% ~End Sub! |3 J+ N& J3 P6 w% ^) ~- t
-----------------------------------------------------------------* r. ]! v% t2 i
: P4 T1 z2 e* w5 c! [
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。- A% ^1 F: o5 k0 z( Z( y
7 T" M( P0 s0 _, C
[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA, s* i4 i: Q- P8 X4 \3 P9 H
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了( ^0 J) }4 ?6 L. h
7 q$ x2 G' Z$ c2 m1 I7 J
[ 本帖最后由 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 )

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