QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法( g% Q5 r' [# c+ r4 B( s
" q  U1 S7 ?+ `4 ~4 h6 }5 k
[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层
$ g* f8 j- z6 V6 J9 A屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本+ m  t7 H% X& i- q- Z
来进行提取
 楼主| 发表于 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例程:( w. a% Q) P: C& J7 l
: i+ y: L! u& |  y& z" ^. r1 u% Q
-----------------------------------------------------------
$ S1 P( I  M* Z. F. N) O5 I: nSub TQ()$ h5 P- _) A* r) [! h/ }
    On Error Resume Next
% u* W, K/ A1 L+ b# B  y3 N    Dim I As Integer) b1 B+ \% t+ B/ k
    Dim E As Excel.Application, B As Workbook, S As Worksheet9 J+ q; T- L! \% l+ k. F
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant; R, V) k+ d8 ~; s/ f  O9 l
    '下面定义选择集过滤器列表为多行文字或单行文字6 A3 h- h1 A3 H0 S
    FT(0) = -4: FD(0) = "<or"
8 ]% r+ \1 i# n- D3 k    FT(1) = 0: FD(1) = "mtext"( d% R4 A5 T; A' F" R
    FT(2) = 0: FD(2) = "text"
1 z8 m, t( A8 b9 ^) K& @    FT(3) = -4: FD(3) = "or>"+ e# g8 @6 e1 }8 ?8 T; ?' S! _- z
    '创建选择集
# G& {. C& k2 r/ y, d    Set SS = ThisDrawing.SelectionSets.Add("SS")
, n* g, u. c/ C. Y2 t) q6 u    '在屏幕上选择多行文字或单行文字对象, G! ]1 U7 i) _2 y
    SS.SelectOnScreen FT, FD
9 V9 q8 H& ]8 }7 U) R; @7 Q: j     '如果选择集不为空则运行以下代码( M0 V' A' s5 m  {$ _8 U% h$ b9 T
    If SS.Count > 0 Then
$ ~! ?* l" F* a$ L+ f+ o( J        '运行EXCEL程序
1 g+ m, y) ?3 \        Set E = New Excel.Application. D/ N: x, N8 Z- I* {; D, W9 [; R
        '在EXCEL中插入工作薄
" U3 }- \* W" d        Set B = E.Workbooks.Add
# ^, m4 H( n  m! ?8 X1 @        '定义工作表
: E; s! K, z- N        Set S = B.ActiveSheet
8 b# G: V* D1 T: h$ V        '显示EXCEL程序
! A1 u4 `$ ^! K; s* {  P8 q        E.Visible = True/ Q& \. B/ M1 S$ a! o( \" I
         '遍历选择集并处理被选中的单行文字或多行文字对象
" G; s( R8 D4 i2 }1 I        For Each T In SS
+ s+ t( I* N: c2 n  H            I = I + 1
2 x+ o8 G& d3 Z8 a            '把单行文字或多行文字的内容写入表格
  r3 V2 O  [# z) w4 Y& d. V& k, X            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
' s. G4 ^- w$ O: ]) ?8 `            S.Cells(I, 1).Value = T.TextString
! l* o% p; U) i% `! Q* I        Next
! W$ I# s* Y: Q2 q8 _    End If3 V" \- v/ [+ E- s  I7 w6 S8 L6 L) O
    SS.Delete '删除用过的选择集# o, C( |0 h8 l6 C; k# M* Q% _
End Sub! d3 k3 X" c% `; v
-----------------------------------------------------------------: d+ P5 H2 i4 Q8 W' i

  U8 A( d+ e; _“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。
) o, G* y% Y3 \% o9 a9 c" s8 P
$ {' F4 _8 {7 n' k3 I[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA& y' ~( F/ A: t
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了
6 Z# {: \( V0 `+ M, Q" I+ i  A$ `- }7 h( }/ }4 {! |
[ 本帖最后由 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 )

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