QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
一DWG格式图纸,内有众多的多行文字,如果用复制.粘贴的办法是可以提取多行文字内的文字,但太慢了,不知有没什么办法
* T$ `6 w' u: m2 q7 D. l0 K1 |2 m* L6 e
[ 本帖最后由 wsj249201 于 2008-7-19 08:34 编辑 ]
发表于 2008-7-18 13:28:24 | 显示全部楼层 来自: 中国四川成都
要看你往什么地方提,提来干嘛,OK?
发表于 2008-7-18 13:40:52 | 显示全部楼层 来自: 中国浙江台州
文字单独设图层, Z+ _9 c" Z+ Q5 |0 Q) G* R
屏蔽其他图层就可以快速提取所有文字了
 楼主| 发表于 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 | 显示全部楼层 来自: 中国江苏苏州
用特定对象选择,只选择文本: z# h7 }* M$ E, N9 ~
来进行提取
 楼主| 发表于 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例程:
7 C2 f' P6 f4 W! Y& e
$ x1 c* s) a3 o- ~$ O6 U------------------------------------------------------------ w  O9 S/ g9 m
Sub TQ()+ S% e4 t. ~. q* @1 S% `% F$ O5 l
    On Error Resume Next
3 I* n; S0 H6 C& E+ k, u2 f" }    Dim I As Integer, X8 B. ?4 I0 ~4 B' m- @1 Q. }
    Dim E As Excel.Application, B As Workbook, S As Worksheet% A, n/ @+ E3 ^  i! @# w1 g  E5 M0 }
    Dim SS As AcadSelectionSet, T As Object, FT(3) As Integer, FD(3) As Variant
; O- q5 d" n# V5 @7 P& H    '下面定义选择集过滤器列表为多行文字或单行文字& Z$ f) o9 p/ i4 `- A4 s' W% H
    FT(0) = -4: FD(0) = "<or"
- _: v+ r' |# i5 [8 W( r1 `; R( F    FT(1) = 0: FD(1) = "mtext"
( S. T# i9 l, X: ~8 K    FT(2) = 0: FD(2) = "text"- @, J$ r6 {5 `( ?4 J
    FT(3) = -4: FD(3) = "or>"& ?# A3 L) E" c# H) t+ y& u
    '创建选择集
/ j3 _; @; E* o, b3 @( r    Set SS = ThisDrawing.SelectionSets.Add("SS")
  ]/ @8 _! i% N% ?( h% U    '在屏幕上选择多行文字或单行文字对象* i+ k. }2 P% J3 u3 {! Q
    SS.SelectOnScreen FT, FD8 P7 W9 Y( P3 o$ \( ^
     '如果选择集不为空则运行以下代码+ S2 C; n3 n) P/ y
    If SS.Count > 0 Then- D$ a3 k+ g4 V& {! E5 V7 d
        '运行EXCEL程序, e) X. c! k" m4 G
        Set E = New Excel.Application
3 R: J0 j+ @. W& G; @" h# b, d( h/ B  O        '在EXCEL中插入工作薄+ _+ m4 N4 [# D, Q! {# T4 P* f3 t
        Set B = E.Workbooks.Add! X. `6 w0 K+ a
        '定义工作表8 A5 }# V) ~/ A/ G
        Set S = B.ActiveSheet
0 x6 ~( h" `0 _- X1 B2 S        '显示EXCEL程序
  j' V( x; r# u* _        E.Visible = True
4 c/ `# s* ~% u( f% F; }. G# {/ h         '遍历选择集并处理被选中的单行文字或多行文字对象3 q, R, B# `, X& d9 d
        For Each T In SS
; c- M7 t' s! ]: Q8 A+ A5 v, h' o            I = I + 1
4 u" N, p' @- f$ v* a- C            '把单行文字或多行文字的内容写入表格
$ A5 ?$ W8 C1 S9 r& ^3 v  ?            '对于多行文字,如果直接写入则字符串中很可能包含转义符,使用者可根据需要对字符串运算处理后再写入表格
( S! B+ n9 [/ {+ ]7 T  u            S.Cells(I, 1).Value = T.TextString
- r8 g. W( J6 H9 b        Next5 k( w" P5 ~1 ?$ b
    End If) \  H$ k( S  Q% f. J
    SS.Delete '删除用过的选择集
8 g  I& R  \: }7 k. ~: fEnd Sub# I# q+ F2 Y1 \( q: T; a" Q% ]
-----------------------------------------------------------------
7 N& ^& L' G3 P5 u% r; w5 t- N- H8 j( H& g: A9 X
“Alt+F11”打开VBA编辑器,将以上代码复制粘贴到thisdrawing对象代码窗口,在“工具”菜单下点“引用”,选择EXCEL类库(名称与EXCEL版本有关,如EXCEL2000为“Microsoft Excel 9.0 Object Library”),确定后即可使用。9 d. B9 r6 b0 k8 b) `$ S+ T, I" p
$ Q8 ]. h) d5 }
[ 本帖最后由 woaishuijia 于 2008-7-19 02:39 编辑 ]

评分

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

查看全部评分

 楼主| 发表于 2008-7-19 06:51:45 | 显示全部楼层 来自: 中国福建三明
我爱谁家真是高手,很感谢,实现了目标。看来也要学点VBA$ I4 T; |4 f5 F' a) R# x
楼上还搞到这么晚,辛苦了(应该今天不用上班了吧),再一次多谢了
& C3 [& x/ A5 {/ A, D$ ^8 s
  f4 [* H7 I. B7 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 )

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