|
|
发表于 2011-12-15 20:05:46
|
显示全部楼层
来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-12-15 20:07 编辑 2 m) |& v; j3 I. E* {+ s: s" ~
5 r$ a7 ^% J; v- A5 C# n3 |1 b: O" {下面的代码只针对上传的文档,仅供参考# r) W5 Y. J% \
- Sub A()
& N! f2 x- Y. c - Dim Path As String, FileName As String, D As AcadDocument, B As AcadBlock
3 Y9 h9 Q5 U( E! c0 k+ c - On Error GoTo 10
. t+ I" `& U; m! D2 _4 C; `6 F! a - '由用户在CAD当前文档的命令行输入需要修改的文件所在目录
# a5 }2 n: o7 I8 j8 k) L- T - Path = ThisDrawing.Utility.GetString(True, vbCrLf & "指定文件所在目录:" )
7 A# Q( E( X& `0 y* ^- m1 O - '如用户输入的目录字符串最后一个字符为""则去掉$ u8 g8 o* o, {' @3 y S: g% I# p1 P
- If Left(Path, 1) = "" Then Path = Right(Path, Len(Path) - 1)$ c: q' q9 N6 Y7 d+ o; @
- '逐个打开该目录下的所有"*.DWG"文档
6 p5 p- A# u! H" l - FileName = Dir(Path & "\*.dwg" )9 K2 S9 r& x. G$ H* F# b9 _
- Do Until FileName = ""1 q' x2 u' f) @; W
- Set D = ThisDrawing.Application.Documents.Open(Path & "" & FileName)
4 \- D& X2 H8 j1 o, \- V5 Y) l - '遍历该文档中所有块定义
* O: T: T9 p0 S" c+ i - For Each B In D.Blocks& B; N* Q5 \$ J+ ~# F7 a3 i
- '如果该块定义中只有两个元素则进一步检查其中内容
, @3 p5 _# B8 c' z - '否则跳过
9 u. D9 n0 h9 z" K/ U0 t - If B.Count = 2 Then9 v- S. \. b% ~3 U1 l# r
- '检查块元素是否为单行文字对象
% c' Y2 p9 X! s2 [* E& Z - If B.Item(0).ObjectName = "AcDbText" And B.Item(1).ObjectName = "AcDbText" Then
$ Q! h( p$ [3 S- K# w0 D% k6 h - '检查单行文字的内容,如符合要求即修改之,然后保存
; B3 P1 U; z5 H/ _% W - If B.Item(0).TextString = "中国杭州" And B.Item(1).TextString = "Hangzhou China" Then
! ]/ K& g% b1 ]0 R; i - B.Item(0).TextString = "杭州"
6 Q6 K, I' }' g3 m& \9 ]9 _ - B.Item(1).TextString = "Hangzhou"
$ B& e6 S* x2 G- Z. S - D.Save
9 B$ h1 { r% V1 b$ \ - ElseIf B.Item(0).TextString = "Hangzhou China" And B.Item(1).TextString = "中国杭州" Then
/ B* _$ c% I# s) v ]0 {0 w - B.Item(0).TextString = "Hangzhou"
2 n. c- A( I( L - B.Item(1).TextString = "杭州"
$ b2 V$ } u: g6 ]" X9 u, G5 r7 P( ] - D.Save1 O. v: s6 G# C$ \3 O$ ?$ E
- End If; H) J" L& b( H/ U8 U
- End If
! r9 C3 K* D' Y3 Z) W2 S* e! i - End If" |6 Q3 h6 y3 H6 m
- Next
6 r# t: n7 [- G - '关闭打开的文档" R& M& c7 O; o* n% z* j
- D.Close R& D f: Y6 h" Y
- '获取下一个文件名
/ w# k3 s6 _) D/ i9 x! \ - FileName = Dir()3 @6 z' k% Q" a& W5 `( l
- Loop
8 r5 }8 M1 ^0 M+ Q {* \$ s - 10: End Sub
复制代码 |
|