|
|
发表于 2009-1-23 09:13:21
|
显示全部楼层
来自: 中国浙江宁波
使用VBA开发,利用objectdbx(免费)术,可以在打开CAD平台而不打开要查询的文件的情况下读取图纸中的信息!普通的objectdbx依赖CAD平台,不打开CAD平台的DBX技术要向autodesk公司购买;: g( C' j. N0 `2 W" f8 T4 A
例程:
' ? x: y- _, G& L% d b0 ~Option Explicit
" T9 `3 t. E7 x0 QDim objDbx As AxDbDocument
w- F: i3 {, H- [' E-' Example of batch for listing all layers on all drawings in a directory.
! D1 U @9 @* L- v4 a" e9 D& _Private Sub ListLayers()3 C @! m+ Y8 F! m2 E8 C
Set objDbx = GetInterfaceObject("ObjectDBX.AxDbDocument"), w0 g% m4 v; A+ V8 o( n
Dim inDir As String D1 S' I6 G/ ^3 I i
Dim elem As Object4 L9 Y0 J, @1 ?# L2 A+ H9 H
Dim filenom As String* {. ^# I/ O. c' i% o- e: O
Dim WholeFile As String
7 N4 S2 p' ~2 x) p& U& h. gDim newHeight As Double
K) ]3 `6 X- @$ u! ?inDir = "r:\projekt\3828\A"
0 ]; G( N% n6 Qfilenom = Dir$(inDir & "\*.dwg")
9 d Y& D0 t; J: x- ^# }Do While filenom <> ""
/ _4 S# `; D+ y6 w ThisDrawing.Utility.Prompt vbCrLf & "File: " & filenom! Q* y# M' h& a8 }/ D; U7 A* U) E
ThisDrawing.Utility.Prompt vbCrLf & "-----------------"
# i6 U' }9 z6 u& D7 i7 I7 W4 v0 ] WholeFile = inDir & "\" & filenom8 ~; t6 [- o- B5 f6 o; w9 s
objDbx.Open WholeFile$ Q4 w# j$ b/ T0 Z* L9 k3 S
For Each elem In objDbx.Layers! U5 b: A: f% {6 m' }
ThisDrawing.Utility.Prompt vbCrLf & elem.Name
) g; e m( R& M5 w3 L0 W# e Next9 x: j6 X# I$ }4 d, s0 p3 ~
Set elem = Nothing
4 T$ B6 e& F( i+ k& W objDbx.SaveAs WholeFile$ C1 J! Q v8 _ n9 E; r# p+ G0 k
filenom = Dir$$ h7 ^$ O4 n" n. J# [2 e1 h3 N
ThisDrawing.Utility.Prompt vbCrLf
& `3 ^& c) O0 [+ ?( p" y, bLoop
( {: D O6 y" _% [End Sub
/ [* I# j5 I; r N v& V D
9 B! M3 i2 ^* y4 a# W1 G' |对属性块的访问方法跟VBA访问方式相同;- Y# v, h, d ^3 U2 [# C% D1 d
3 Z3 `/ R# q9 e* y关于VLISP如何使用DBX可以到这看看:http://www.mjtd.com/a2/list.asp?id=3156 P7 A4 W X6 [; }4 ~
2 d! y" Y# O7 h; U: ~8 l[ 本帖最后由 sealive_leafage 于 2009-1-23 09:23 编辑 ] |
评分
-
查看全部评分
|