|
|
发表于 2009-1-23 09:13:21
|
显示全部楼层
来自: 中国浙江宁波
使用VBA开发,利用objectdbx(免费)术,可以在打开CAD平台而不打开要查询的文件的情况下读取图纸中的信息!普通的objectdbx依赖CAD平台,不打开CAD平台的DBX技术要向autodesk公司购买;" l0 H% B( y( o4 F
例程:- h: J: v% l0 W9 K* q
Option Explicit @, \4 {# ?* R3 R
Dim objDbx As AxDbDocument, P8 {! y4 ?& P8 ~" X* p
' E-' Example of batch for listing all layers on all drawings in a directory. 4 l' K1 ~% m/ t Z6 Q* n- `
Private Sub ListLayers()
+ Z# v; m& y& C' h5 U0 DSet objDbx = GetInterfaceObject("ObjectDBX.AxDbDocument")
2 k8 l0 _2 D% ADim inDir As String
: r/ H1 j$ \ q: u! ^Dim elem As Object& z- r- P4 y& }
Dim filenom As String9 E: j% N9 _2 k! U. A- \
Dim WholeFile As String
! o( L, N, [0 ~ A1 b( g5 lDim newHeight As Double
& }; s V" A" O9 _inDir = "r:\projekt\3828\A"
# m6 ?3 X9 u* P/ E- C) `+ N1 f+ z. gfilenom = Dir$(inDir & "\*.dwg")
7 r1 c3 M! I7 sDo While filenom <> ""
- e: m2 F7 S* C" B5 { ThisDrawing.Utility.Prompt vbCrLf & "File: " & filenom2 e2 A6 `9 I2 X, m
ThisDrawing.Utility.Prompt vbCrLf & "-----------------"9 n% f: d# J, l% n* }# Q
WholeFile = inDir & "\" & filenom; q$ h/ `/ u( e! A
objDbx.Open WholeFile
1 _# g- @+ E U* w' E For Each elem In objDbx.Layers
* P5 [1 k, ^( f/ T/ U9 } ThisDrawing.Utility.Prompt vbCrLf & elem.Name
8 b- h6 v. ~3 U5 ^ D. Z9 M Next6 t, C C& `8 g+ ^
Set elem = Nothing$ S; b p3 l( t. |+ n/ Z: C" R0 ~
objDbx.SaveAs WholeFile4 D4 z, U. G* K" @ d
filenom = Dir$
% B8 Y& r- s: S- J- s3 Y ThisDrawing.Utility.Prompt vbCrLf: G& c2 P! u* o: }# O; b6 ?6 M3 d5 ~
Loop+ P( [# i4 ^) l9 z$ Y% c8 C. W" n9 N
End Sub
. E; v. F/ A4 g: z
( O/ Z8 |+ _6 x; N, ^! g8 Z) O" X对属性块的访问方法跟VBA访问方式相同;
) a: [& }$ t5 R# U( ^5 A
1 J9 s; G1 ~1 H1 v$ T关于VLISP如何使用DBX可以到这看看:http://www.mjtd.com/a2/list.asp?id=315
8 |+ i3 _+ u1 ^/ ` V
1 B. {; P. p1 _3 f[ 本帖最后由 sealive_leafage 于 2009-1-23 09:23 编辑 ] |
评分
-
查看全部评分
|