|
|
发表于 2011-12-15 20:05:46
|
显示全部楼层
来自: 中国辽宁
本帖最后由 woaishuijia 于 2011-12-15 20:07 编辑
3 b( b$ }3 C8 r$ t) Q3 N. d& A5 _, B9 ]( t
下面的代码只针对上传的文档,仅供参考# ]! f5 c/ N! z
- Sub A()
/ u/ s9 a$ Z3 P# L - Dim Path As String, FileName As String, D As AcadDocument, B As AcadBlock" w$ D' G& z) C; n5 L2 R- a' w7 d
- On Error GoTo 101 }( U. P4 [3 ^. T
- '由用户在CAD当前文档的命令行输入需要修改的文件所在目录. V! a k! a$ R6 v6 P4 E" k
- Path = ThisDrawing.Utility.GetString(True, vbCrLf & "指定文件所在目录:" )6 m/ M: b5 V0 r6 w4 R D- J
- '如用户输入的目录字符串最后一个字符为""则去掉/ Q5 l6 P: {0 l5 {& H& X0 M7 \
- If Left(Path, 1) = "" Then Path = Right(Path, Len(Path) - 1)
" s# d, [/ x0 ^2 x- h6 o - '逐个打开该目录下的所有"*.DWG"文档
|8 z l& Q+ ? s - FileName = Dir(Path & "\*.dwg" )
: h; F8 H z9 g) X - Do Until FileName = ""
( P/ N. `+ E) f8 Z3 g: d - Set D = ThisDrawing.Application.Documents.Open(Path & "" & FileName)
3 Z! n9 h' W6 v' V* J - '遍历该文档中所有块定义
% p! t. I/ L" s9 |5 R# m; } - For Each B In D.Blocks
2 r$ N: ~: m# A* J, ?( N - '如果该块定义中只有两个元素则进一步检查其中内容( o' S; @% c3 i, n
- '否则跳过
( P( j D% x9 r - If B.Count = 2 Then
7 s8 a, K- q' E' x/ L/ l/ M# G, @ - '检查块元素是否为单行文字对象
* n+ Q' D3 w* o5 w z& a& t F - If B.Item(0).ObjectName = "AcDbText" And B.Item(1).ObjectName = "AcDbText" Then& i0 m. B9 B4 C0 ^
- '检查单行文字的内容,如符合要求即修改之,然后保存
. p8 b8 m. G( x& s - If B.Item(0).TextString = "中国杭州" And B.Item(1).TextString = "Hangzhou China" Then) N$ L0 e& G, ^- \8 U, j- A
- B.Item(0).TextString = "杭州"" f" w( Y' n$ K2 ~
- B.Item(1).TextString = "Hangzhou"( K; a8 l% u% J4 f8 V/ q* u
- D.Save
- F' O/ u# k# b* n! ^% Z& F - ElseIf B.Item(0).TextString = "Hangzhou China" And B.Item(1).TextString = "中国杭州" Then
" Y A4 @9 j5 d$ l/ O1 [ - B.Item(0).TextString = "Hangzhou"
$ Y3 o' i$ a4 q. ]0 X+ z$ H - B.Item(1).TextString = "杭州"
$ m4 {1 _$ D9 Q; D1 O2 p - D.Save
7 l, s/ v/ X4 `+ O/ P; S - End If2 K" n: p' a, x4 N
- End If
( {5 b$ g) N4 H4 [5 ] - End If
- C1 [; \- m4 Y6 E& R1 d - Next- H; y5 [9 E2 |$ w
- '关闭打开的文档
3 W: h9 W E4 P" ?. Z) o" ^/ x' j - D.Close+ J) ~# s7 {" V/ g o( J2 N
- '获取下一个文件名
: Q" ~8 j, V/ Y0 J' W3 C - FileName = Dir()5 _- w- R* \' m5 @/ E$ G& M/ f
- Loop
& D4 ]* X$ D9 } q. r. J% ` - 10: End Sub
复制代码 |
|