|
发表于 2009-1-23 09:13:21
|
显示全部楼层
来自: 中国浙江宁波
使用VBA开发,利用objectdbx(免费)术,可以在打开CAD平台而不打开要查询的文件的情况下读取图纸中的信息!普通的objectdbx依赖CAD平台,不打开CAD平台的DBX技术要向autodesk公司购买;
8 z( a( s$ G% ] d: C, f7 z例程:
2 b# M- z; ^- ^( xOption Explicit& Q0 q+ h# ~* N: ^
Dim objDbx As AxDbDocument
4 m- X7 j0 {" T6 m# I- d' E-' Example of batch for listing all layers on all drawings in a directory. $ z( d) l p4 o1 r1 K# _7 w9 L
Private Sub ListLayers()* \ S( M- s& J
Set objDbx = GetInterfaceObject("ObjectDBX.AxDbDocument")1 v6 O1 N' U9 o9 ^
Dim inDir As String# P3 K9 a( c" v8 z* O
Dim elem As Object
4 [9 ?5 U* m6 m% d8 i/ N7 FDim filenom As String5 M4 c6 K. g0 I: L% W% S$ u
Dim WholeFile As String' R8 o5 J0 t8 W, {
Dim newHeight As Double
' t# {# n& m0 sinDir = "r:\projekt\3828\A"
6 y6 B \* u: o# U7 _1 k3 k. v; qfilenom = Dir$(inDir & "\*.dwg")6 o k; z/ a& b
Do While filenom <> ""
5 u5 S5 O8 N) H" R ThisDrawing.Utility.Prompt vbCrLf & "File: " & filenom
$ ?, D4 l& U6 O; Y: O" s ThisDrawing.Utility.Prompt vbCrLf & "-----------------"# a" N8 A' X" G
WholeFile = inDir & "\" & filenom
, L7 `" y4 n2 Z9 l" F! @1 s# \ objDbx.Open WholeFile
$ B: w/ G9 P& b For Each elem In objDbx.Layers
1 R2 K( r; v* I4 Z* L0 a3 A) I ThisDrawing.Utility.Prompt vbCrLf & elem.Name8 y; ]+ h0 p4 \; p3 f% y* C, f
Next- y: }2 I0 p$ e! V" m* h2 q. |( \, z
Set elem = Nothing
3 d3 ?# t! X" ^; S9 t& ^' D. l( ^ objDbx.SaveAs WholeFile
% X- o5 p. e$ Y8 k8 V8 h$ ]& _ filenom = Dir$/ E, s5 b3 y5 V; G$ R2 N
ThisDrawing.Utility.Prompt vbCrLf
, \. `( Y, E. vLoop
9 S7 u! r* }' S6 X3 d1 h& rEnd Sub! L( |7 W) N7 P, J
$ ?7 z0 V" s, h. E/ p3 q. _+ G对属性块的访问方法跟VBA访问方式相同;7 U5 m; y) g1 D u6 a5 Q7 o
" }# \* \( T) T9 x关于VLISP如何使用DBX可以到这看看:http://www.mjtd.com/a2/list.asp?id=315
; N7 W6 k* U S* r7 ]6 ~7 s' K; ]0 K: I C
[ 本帖最后由 sealive_leafage 于 2009-1-23 09:23 编辑 ] |
评分
-
查看全部评分
|