乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 233|回复: 14

ObjectDBX

[复制链接]

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2006-9-28 06:50:23 | 显示全部楼层 |阅读模式
有没有办法用ObjectDBX读取一些系统变量?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2006-9-28 13:07:06 | 显示全部楼层
不,我不知道
回复

使用道具 举报

10

主题

63

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2006-9-28 13:20:49 | 显示全部楼层
我模模糊糊地记得,它返回了执行代码的当前图形中的系统变量(可能是错误的)
建议:将感兴趣的系统变量存储在自定义字典中,或作为扩展数据附加到图形中的某些对象,以后可以通过objectdbx访问它们。
回复

使用道具 举报

26

主题

275

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
379
发表于 2006-9-28 14:31:50 | 显示全部楼层
由于ObjectDBX对未打开的图纸最有用,并且AutoCAD的系统变量要么存储在图纸中,要么存储在应用程序级别,那么您为什么(如果我可以大胆地问的话)要阅读它们?
只是想知道您想做什么。
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2006-9-28 17:22:47 | 显示全部楼层
我需要检查图纸是公制的还是英制的。
AutoCAD系统变量Measurement
0为英制
1为公制
用于将文件作为块打开或插入
回复

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2006-9-29 05:59:24 | 显示全部楼层
不确定确切,但我认为
这将是不可能做到与ObjectDBX方法恕我直言
试试这个:
  1. Option Explicit
  2. Public Function GetVars(selfiles As Variant, sysVarName As String) As Variant
  3. Dim fName As String
  4. Dim acdoc As AcadDocument
  5. Dim sysvar() As Variant
  6. Dim m As Integer
  7. For m = 0 To UBound(selfiles)
  8. fName = selfiles(m)
  9. Set acdoc = Application.Documents.Open(fName, True)
  10. ReDim Preserve sysvar(m)
  11. sysvar(m) = acdoc.GetVariable(sysVarName)
  12. acdoc.Close
  13. Next m
  14. GetVars = sysvar
  15. End Function
  16. Public Sub FindFile(ByRef files As Collection, strDir, strExt)
  17.   Dim strFileName
  18.   If (Right(strDir, 1)  "") Then
  19.     strDir = strDir & ""
  20.   End If
  21.   strFileName = Dir(strDir & "*.*", vbDirectory)
  22.   Do While (strFileName  "")
  23.     If (UCase(Right(strFileName, 3)) = UCase(strExt)) Then
  24.       files.Add strDir & strFileName
  25.     End If
  26.   strFileName = Dir
  27.   Loop
  28.   
  29. End Sub
  30. Sub Test()
  31. Dim dmod
  32. dmod = ThisDrawing.GetVariable("SDI")
  33. If dmod  0 Then
  34. ThisDrawing.SetVariable "SDI", 0
  35. End If
  36. Dim path As String
  37. path = "D:\AUTOLISP\LISPS\PRIMITIVES\#FILE&S\PURGE" '' change your path here
  38. Dim collFiles As New Collection
  39. Call FindFile(collFiles, path, "DWG")
  40. Dim i As Integer
  41. ReDim selfiles(collFiles.Count - 1) As String
  42. For i = 1 To collFiles.Count
  43. selfiles(i - 1) = collFiles.Item(i)
  44. Next
  45. Dim sysvar() As Variant
  46. sysvar = GetVars(selfiles, "measurement")
  47. ThisDrawing.SetVariable "SDI", dmod
  48. Dim dataVar(999, 1) As Variant
  49. For i = 0 To UBound(sysvar)
  50. dataVar(i, 0) = selfiles(i)
  51. dataVar(i, 1) = sysvar(i)
  52. Next
  53. End Sub

Fatty
~'J'~
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2006-9-29 07:56:51 | 显示全部楼层
您使用的是什么版本的AutoCAD?
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2006-9-29 09:04:32 | 显示全部楼层
我用Autocad mechanical 2006
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2006-9-29 10:53:04 | 显示全部楼层
在这种情况下,我认为有一种方法可以通过使用C#或 VB.NET.NET API来实现。
你有兴趣试一试吗?
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2006-9-29 11:06:24 | 显示全部楼层

哦,是的,我是
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-6 12:41 , Processed in 0.594666 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表