ObjectDBX
有没有办法用ObjectDBX读取一些系统变量不……不是我';我知道 我模糊地记得它返回了当前图形中的系统变量,在其中执行代码(可能是错误的)
建议:存储您';我们对自定义字典感兴趣,或者将其作为扩展数据附加到图形中的某些对象,稍后可以通过objectdbx访问它们。 因为ObjectDBX对于未打开的图形和自动CAD最有用;系统变量要么存储在图形中,要么存储在应用程序级别,为什么(如果我可以大胆地问的话)您要读取它们
我只是想知道你';我们正在努力。 我需要检查图纸是公制还是英制
AutoCAD系统变量测量值为英制,用于打开或插入文件作为块 不太确定,但我认为这是不可能的,用ObjectDBX方法IMHO试试这个:Option Explicit
Public Function GetVars(selfiles As Variant, sysVarName As String) As Variant
Dim fName As String
Dim acdoc As AcadDocument
Dim sysvar() As Variant
Dim m As Integer
For m = 0 To UBound(selfiles)
fName = selfiles(m)
Set acdoc = Application.Documents.Open(fName, True)
ReDim Preserve sysvar(m)
sysvar(m) = acdoc.GetVariable(sysVarName)
acdoc.Close
Next m
GetVars = sysvar
End Function
Public Sub FindFile(ByRef files As Collection, strDir, strExt)
Dim strFileName
If (Right(strDir, 1)"\") Then
strDir = strDir & "\"
End If
strFileName = Dir(strDir & "*.*", vbDirectory)
Do While (strFileName"")
If (UCase(Right(strFileName, 3)) = UCase(strExt)) Then
files.Add strDir & strFileName
End If
strFileName = Dir
Loop
End Sub
Sub Test()
Dim dmod
dmod = ThisDrawing.GetVariable("SDI")
If dmod0 Then
ThisDrawing.SetVariable "SDI", 0
End If
Dim path As String
path = "D:\AUTOLISP\LISPS\PRIMITIVES\#FILE&S\PURGE" '' change your path here
Dim collFiles As New Collection
Call FindFile(collFiles, path, "DWG")
Dim i As Integer
ReDim selfiles(collFiles.Count - 1) As String
For i = 1 To collFiles.Count
selfiles(i - 1) = collFiles.Item(i)
Next
Dim sysvar() As Variant
sysvar = GetVars(selfiles, "measurement")
ThisDrawing.SetVariable "SDI", dmod
Dim dataVar(999, 1) As Variant
For i = 0 To UBound(sysvar)
dataVar(i, 0) = selfiles(i)
dataVar(i, 1) = sysvar(i)
Next
End Sub脂肪;J#039~ 您使用的是什么版本的AutoCAD? 我使用Autocad mechanical 2006 在这种情况下,我认为有一种方法可以通过.NETAPI使用C#或VB.NET实现
你有兴趣试一试吗?
哦,是的,我';m
页:
[1]
2