|
|
发表于 2009-1-23 09:13:21
|
显示全部楼层
来自: 中国浙江宁波
使用VBA开发,利用objectdbx(免费)术,可以在打开CAD平台而不打开要查询的文件的情况下读取图纸中的信息!普通的objectdbx依赖CAD平台,不打开CAD平台的DBX技术要向autodesk公司购买;) E2 ~$ K% N: L; `9 E9 p
例程:8 Z0 c% L6 C1 l0 Y" K" _ s w6 M
Option Explicit
+ a8 Q1 A+ [, G" xDim objDbx As AxDbDocument
& G2 C! N q( \' E-' Example of batch for listing all layers on all drawings in a directory. 4 e1 ^0 K" t3 l+ L, A
Private Sub ListLayers()8 }3 V( c; S$ j0 Z0 M& ~5 {8 n2 U
Set objDbx = GetInterfaceObject("ObjectDBX.AxDbDocument")4 d3 C. e$ U: D7 p0 z
Dim inDir As String" E+ T2 `$ \* \- e) g
Dim elem As Object
% } c. y, g' J7 u8 F7 WDim filenom As String
1 y2 B* r0 B' O, d5 YDim WholeFile As String
6 |' A( J% l7 ~+ G7 ]Dim newHeight As Double
, T/ @1 E% H6 m8 L2 FinDir = "r:\projekt\3828\A"+ D! S6 Y3 m+ T9 D) H* t4 S
filenom = Dir$(inDir & "\*.dwg")& M2 M! t: [& z; X
Do While filenom <> ""
8 l+ `) X! \" A' n* c0 U% V3 A* v ThisDrawing.Utility.Prompt vbCrLf & "File: " & filenom$ g5 M" B9 \/ \% p) |% S7 z
ThisDrawing.Utility.Prompt vbCrLf & "-----------------"
! p- a1 j4 `1 ^( r! q. c3 d+ @! ` WholeFile = inDir & "\" & filenom
& P" u0 J; d( ?' n4 V: H4 E5 D, ] objDbx.Open WholeFile
( b7 {% e+ t# y8 `- u For Each elem In objDbx.Layers) S# S( {% x( G& S* b7 c
ThisDrawing.Utility.Prompt vbCrLf & elem.Name
9 z& k" C8 K' W, e+ f# L Next
! M2 S* z; ^1 a# g5 J Set elem = Nothing
4 j: k; H% t" s8 |7 L0 K objDbx.SaveAs WholeFile
! {' H% @6 |$ S6 O. w5 A filenom = Dir$
5 q: P) T* X6 @4 `! Y3 v6 m ThisDrawing.Utility.Prompt vbCrLf( x- ?5 T1 y( |: H e
Loop* P' l" a" E% S8 k: V
End Sub
# Y3 H" e. v/ ]8 Q/ M2 J2 b8 o; q4 Y# R( j
对属性块的访问方法跟VBA访问方式相同;
* I) k! m2 T+ l
8 r4 e! r* y0 ]0 j关于VLISP如何使用DBX可以到这看看:http://www.mjtd.com/a2/list.asp?id=315+ `2 \# ]' _8 z [: _
! k+ d5 `# j" h; _4 v2 P
[ 本帖最后由 sealive_leafage 于 2009-1-23 09:23 编辑 ] |
评分
-
查看全部评分
|