乐筑天下

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

图纸模板文件路径在API中的位置?

[复制链接]

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-5-17 13:40:16 | 显示全部楼层 |阅读模式
我一直在创建一个VBA模块,它将简单地设置我们所有的搜索路径、文件名和文件位置(支持路径)
我需要的几乎都在Preferences集合中,但是我找不到设置图纸模板文件路径位置的方法。有人知道吗
[代码谢谢你,马克
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2007-5-17 14:49:07 | 显示全部楼层
调试。打印该路径,您将找到yadayada;yadayada 即一根长字符串由分隔
如果你再加上它,效果很好
设置首选项=ThisDrawing.Application。偏好 SupportPath=Preferences.Files.SupportPath调试。打印支持路径
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-5-17 15:00:33 | 显示全部楼层
我想他'在这种情况下,你发布的内容并不't显示特定路径
从我'我看到了,有#039;无法(通过straigh VBA)设置该路径 本人'我确信它是#039;它埋在注册表的某个地方,您可以修改它以指向您的SS模板文件 只是大声思考。
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-5-17 15:20:28 | 显示全部楼层

你好,马特,
是的,谢谢,这正是我所说的,我在任何地方都找不到它
AutoCAD最近似乎在添加新功能方面做得很好,但未能在VBA中提供这些功能。关于如何以编程方式添加该路径,您还有其他建议吗
谢谢你,马克
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2007-5-17 15:31:47 | 显示全部楼层
如果您知道如何通过LSP或VBA更改注册表,则可以通过这种方式进行修改
我在HKCU\Software\Autodesk\AutoCAD\R17.0\ACAD-5106:409\Profiles\[您的配置文件名]\Preferences\AecProject50\Sheet Set Template中找到了该设置;s代表ABS 2007.1。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2007-5-17 15:45:19 | 显示全部楼层

不,我知道怎么做,马特
我可以发布一个新帖子,请求帮助吗
标记
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2007-5-17 15:47:45 | 显示全部楼层
FWIW,
这是我如何通过lisp实现的:
  1. (vla-put-pagesetupoverridestemplatefile
  2.   (vla-get-files
  3.     (vla-get-preferences
  4.       (vlax-get-acad-object)
  5.     )
  6.   )
  7.   "c:\"
  8. )
或者这个:
  1. (setenv "AlternativePageSetUpsTemplate" "C:\")
Ron
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-5-17 15:57:12 | 显示全部楼层

罗恩,你是说页面设置在上面吗
这是指图纸模板文件位置吗
如果是这样,我确实在VBA中看到了这一点
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2007-5-17 16:03:08 | 显示全部楼层

这是VBA中的Ron,但用于创建图纸和页面设置覆盖的默认模板,我需要用于其上方的方法图纸集模板文件位置再次感谢Mark
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2007-5-17 18:05:46 | 显示全部楼层
把这个放在一个模块中(我认为它来自Randall Rath)
  1. Option Explicit
  2. '@~~~~~~~~ API Constants for Win32 Reg. ~~~~~~~~~~~@
  3. Public Const REG_SZ = 1
  4. Public Const REG_EXPAND_SZ = 2
  5. Public Const REG_BINARY = 3
  6. Public Const REG_DWORD = 4
  7. Public Const HKEY_CLASSES_ROOT = &H80000000
  8. Public Const HKEY_CURRENT_USER = &H80000001
  9. Public Const HKEY_LOCAL_MACHINE = &H80000002
  10. Public Const HKEY_USERS = &H80000003
  11. Public Const HKEY_PERFORMANCE_DATA = &H80000004
  12. Public Const HKEY_CURRENT_CONFIG = &H80000005
  13. Public Const HKEY_DYN_DATA = &H80000006
  14. Public Const REG_OPTION_NON_VOLATILE = 0
  15. Public Const REG_CREATED_NEW_KEY = &H1
  16. Public Const REG_OPENED_EXISTING_KEY = &H2
  17. Public Const KEY_QUERY_VALUE = &H1
  18. Public Const KEY_ENUMERATE_SUB_KEYS = &H8
  19. Public Const KEY_NOTIFY = &H10
  20. Public Const READ_CONTROL = &H20000
  21. Public Const STANDARD_RIGHTS_ALL = &H1F0000
  22. Public Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
  23. Public Const STANDARD_RIGHTS_READ = (READ_CONTROL)
  24. Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
  25. Public Const SYNCHRONIZE = &H100000
  26. Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
  27. Public Const KEY_SET_VALUE = &H2
  28. Public Const KEY_CREATE_SUB_KEY = &H4
  29. Public Const KEY_CREATE_LINK = &H20
  30. Public Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
  31. Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
  32. Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
  33. Public Const ERROR_SUCCESS = 0&
  34. Public Const ERROR_ACCESS_DENIED = 5&
  35. Public Const ERROR_NO_MORE_ITEMS = 259&
  36. Public Const ERROR_BADKEY = 1010&
  37. Public Const ERROR_CANTOPEN = 1011&
  38. Public Const ERROR_CANTREAD = 1012&
  39. Public Const ERROR_REGISTRY_CORRUPT = 1015&
  40. '@~~~~~~~~~~~~~~~~~ API Types ~~~~~~~~~~~~~~~~@
  41. Type SECURITY_ATTRIBUTES
  42. nLength As Long
  43. lpSecurityDescriptor As Long
  44. bInheritHandle As Boolean
  45. End Type
  46. Public Type FILETIME
  47. dwLowDateTime As Long
  48. dwHighDateTime As Long
  49. End Type
  50. '@~~~~~~~~~~~~~~~~~~ The Declares ~~~~~~~~~~~~~~~~~~~~~@
  51. Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias _
  52. "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, _
  53. ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
  54. Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias _
  55. "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As _
  56. String, ByVal lpReserved As Long, lpType As Long, lpData As Any, _
  57. dwSize As Long) As Long
  58. Public Declare Function RegCreateKeyEx Lib "advapi32" _
  59. Alias "RegCreateKeyExA" (ByVal hKey As Long, _
  60. ByVal lpSubKey As String, ByVal Reserved As Long, _
  61. ByVal lpClass As String, ByVal dwOptions As Long, _
  62. ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, _
  63. phkResult As Long, lpdwDisposition As Long) As Long
  64. Public Declare Function RegSetValueEx Lib "advapi32.dll" _
  65. Alias "RegSetValueExA" (ByVal hKey As Long, _
  66. ByVal lpValueName As String, ByVal dwReserved As Long, _
  67. ByVal dwType As Long, lpValue As Any, ByVal dwSize As Long) As Long
  68. Public Declare Function RegDeleteKey Lib "advapi32.dll" _
  69. Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
  70. Public Declare Function RegDeleteValue Lib "advapi32.dll" _
  71. Alias "RegDeleteValueA" (ByVal hKey As Long, _
  72. ByVal lpValueName As String) As Long
  73. Public Declare Function RegCloseKey Lib "advapi32.dll" _
  74. (ByVal hKey As Long) As Long
  75. Public Declare Function RegConnectRegistry Lib "advapi32.dll" _
  76. Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal _
  77. hKey As Long, phkResult As Long) As Long
  78. Public Declare Function RegCreateKey Lib "advapi32.dll" Alias _
  79. "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
  80. phkResult As Long) As Long
  81. Public Declare Function RegEnumKey Lib "advapi32.dll" Alias _
  82. "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal _
  83. lpName As String, ByVal cbName As Long) As Long
  84. Public Declare Function RegEnumValue Lib "advapi32.dll" Alias _
  85. "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal _
  86. lpValueName As String, lpcbValueName As Long, lpReserved As Long, _
  87. lpType As Long, lpData As Byte, lpcbData As Long) As Long
  88. Public Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias _
  89. "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal _
  90. lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal _
  91. lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
  92. Public Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" _
  93. (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
  94. Public Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" _
  95. (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter _
  96. As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long
  97. Public Declare Function RegOpenKey Lib "advapi32.dll" _
  98. (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  99. Public Declare Function OSRegQueryValue Lib "advapi32.dll" _
  100. Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As _
  101. String, ByVal lpValue As String, lpcbValue As Long) As Long
  102. Public Declare Function RegReplaceKey Lib "advapi32.dll" Alias _
  103. "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
  104. ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
  105. Public Declare Function RegRestoreKey Lib "advapi32.dll" Alias _
  106. "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, _
  107. ByVal dwFlags As Long) As Long
  108. Public Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias _
  109. "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, _
  110. lpcbClass As Long, ByVal lpReserved As Long, lpcSubKeys As Long, _
  111. lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, _
  112. lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor _
  113. As Long, lpftLastWriteTime As FILETIME) As Long
  114. '@~~~~~~~~~~~~~~ DeleteRegKey ~~~~~~~~~~~~~~~~~~~~@
  115. ' BEWARE! WE CAN'T HELP YOU IF YOU DELETE THE WRONG KEY!
  116. ' Always back up your registry before you use any of these
  117. ' Methods. In fact, if you don't know EXACTLY what you are
  118. ' Doing, stay safe and use the built in VB Registry methods.
  119. '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
  120. Public Function DeleteRegKey(lngKey As Long, SubKey As String) As Long
  121.     Dim lngRet As Long
  122.     lngRet = RegDeleteKey(lngKey, SubKey)
  123.     DeleteRegKey = lngRet
  124. End Function
  125. '@~~~~~~~~~~~~~~ DeleteRegValue ~~~~~~~~~~~~~~~~~~@
  126. ' Delete the value of a key, please use caution.
  127. '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
  128. Public Function DeleteRegValue(lngKey As Long, SubKey As String, valueName As String) As Long
  129.     Dim lngRet As Long
  130.     Dim lngKeyRet As Long
  131.     lngRet = RegOpenKeyEx(lngKey, SubKey, 0, KEY_WRITE, lngKeyRet)
  132.     If lngRet  ERROR_SUCCESS Then Exit Function
  133.         lngRet = RegDeleteValue(lngKeyRet, valueName)
  134.         DeleteRegValue = lngRet
  135.         RegCloseKey lngKeyRet
  136.     End Function
  137.     '@~~~~~~~~~~~~~~~~ WriteRegLong ~~~~~~~~~~~~~~~~~~@
  138.     ' Write a long Data type to a key
  139.     '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
  140.     Public Function WriteRegLong(lngKey As Long, SubKey As String, _
  141.         DataName As String, dataValue As Long) As Long
  142.         Dim SEC As SECURITY_ATTRIBUTES
  143.         Dim lngKeyRet As Long
  144.         Dim lngDis As Long
  145.         Dim lngRet As Long
  146.         lngRet = RegCreateKeyEx(lngKey, SubKey, 0, "", REG_OPTION_NON_VOLATILE, _
  147.         KEY_ALL_ACCESS, SEC, lngKeyRet, lngDis)
  148.         If (lngRet = ERROR_SUCCESS) Or (lngRet = REG_CREATED_NEW_KEY) Or _
  149.             (lngRet = REG_OPENED_EXISTING_KEY) Then
  150.             lngRet = RegSetValueEx(lngKeyRet, DataName, 0&, REG_DWORD, dataValue, 4)
  151.             RegCloseKey lngKeyRet
  152.         End If
  153.         WriteRegLong = lngRet
  154.     End Function
  155.     Public Function WriteStringValue(lngKey As Long, SubKey As String, _
  156.         DataName As String, dataValue As String) As Long
  157.         Dim SEC As SECURITY_ATTRIBUTES
  158.         Dim lngKeyRet As Long
  159.         Dim lngDis As Long
  160.         Dim lngRet As Long
  161.         lngRet = RegCreateKeyEx(lngKey, _
  162.         SubKey, 0, vbNullString, _
  163.         REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, _
  164.         SEC, lngKeyRet, lngDis)
  165.         'Trust me on this next line...
  166.         If dataValue  ERROR_SUCCESS Then Exit Function
  167.                 'If you declare a lpData as a string (that's DataName in this function) you
  168.                 'must pass it ByVal as shown here
  169.                 lngRet = RegQueryValueEx(lngKeyRet, DataName, 0&, DataType, ByVal 0, DataSize)
  170.                 If lngRet  ERROR_SUCCESS Then
  171.                     RegCloseKey lngKeyRet
  172.                     Exit Function
  173.                 End If
  174.                 Select Case DataType
  175.                     Case REG_SZ
  176.                     strData = Space(DataSize + 1)
  177.                     lngRet = RegQueryValueEx(lngKeyRet, DataName, 0&, DataType, ByVal strData, DataSize)
  178.                     If lngRet = ERROR_SUCCESS Then
  179.                         ReadRegVal = CVar(StripNulls(RTrim$(strData)))
  180.                     End If
  181.                     Case REG_DWORD
  182.                     lngRet = RegQueryValueEx(lngKeyRet, DataName, 0&, DataType, lngData, 4)
  183.                     If lngRet = ERROR_SUCCESS Then
  184.                         ReadRegVal = CVar(lngData)
  185.                     End If
  186.                 End Select
  187.                 RegCloseKey lngKeyRet
  188.             End Function
  189.             '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
  190.             ' Reads all of the subkeys under strKey. NOTE VB
  191.             ' users, you can change this function to return
  192.             ' a string array!
  193.             '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
  194.             Public Function GetSubKeys(strKey As String, SubKey As String, ByRef SubKeyCnt As Long) As String
  195.                 Dim strValues() As String
  196.                 Dim strTemp As String
  197.                 Dim lngSub As Long
  198.                 Dim intCnt As Integer
  199.                 Dim lngRet As Long
  200.                 Dim intKeyCnt As Integer
  201.                 Dim Ft As FILETIME
  202.                 lngRet = RegOpenKeyEx(strKey, SubKey, 0, KEY_ENUMERATE_SUB_KEYS, lngSub)
  203.                 If lngRet  ERROR_SUCCESS Then
  204.                     SubKeyCnt = 0
  205.                     Exit Function
  206.                 End If
  207.                 lngRet = RegQueryInfoKey(lngSub, vbNullString, 0, 0, SubKeyCnt, _
  208.                 65, 0, 0, 0, 0, 0, Ft)
  209.                 If (lngRet  ERROR_SUCCESS) Or (SubKeyCnt  0 Then
  210.             StripNulls = Left$(s, i - 1)
  211.             Else
  212.             StripNulls = s
  213.         End If
  214.     End Function
  215.     '@~~~~~~~~~~~~~~ParseString~~~~~~~~~~~~~~~~~~@
  216.     ' Use is simple: provide the delimited string, the
  217.     ' integer that represents the location in the string
  218.     ' you want to return, and the character that delimits
  219.     ' the string. Used in this module for VBA Users who
  220.     ' Need to read the string elements returned by
  221.     ' "GetSubKeys"
  222.     '@~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@
  223.     Public Function ParseString(strIn As String, intLoc As Integer, strDelimiter As String) As String
  224.         Dim intPos As Integer
  225.         Dim intStrt As Integer
  226.         Dim intStop As Integer
  227.         Dim intCnt As Integer
  228.         intCnt = intLoc
  229.         Do While intCnt > 0
  230.         intStop = intPos
  231.         intStrt = InStr(intPos + 1, strIn, Left$(strDelimiter, 1))
  232.         If intStrt > 0 Then
  233.             intPos = intStrt
  234.             intCnt = intCnt - 1
  235.             Else
  236.             intPos = Len(strIn) + 1
  237.             Exit Do
  238.         End If
  239.         Loop
  240.         ParseString = Mid$(strIn, intStop + 1, intPos - intStop - 1)
  241.     End Function
  242.     '@~~~~~~~~~~~~ Sample of ReadRegVal ~~~~~~~~~~~~@
  243.     Public Sub AppInfo()
  244.         Dim strVal As String
  245.         MsgBox ReadRegVal(HKEY_LOCAL_MACHINE, "SOFTWARE\Autodesk\AutoCAD\R15.0\ACAD-1:409", "ProductName", strVal)
  246.         
  247.     End Sub
这改变了我的钥匙,但我不知道;t使用图纸集进行测试
  1. Sub SetSheetSet()
  2.     Dim CadStart As String
  3.     Dim KeyName As String
  4.     Dim valueName As String
  5.     Dim DefaultData As String
  6.     Dim dataValue As String
  7.    'This is my key    "HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.0\ACAD-5005:409\Profiles\Lex2007\General"
  8.    KeyName = "Software\Autodesk\AutoCAD\R17.0\ACAD-5005:409\Profiles\Lex2007\General"
  9.    
  10.     valueName = "SheetSetTemplatePath"
  11.     dataValue = "YourTemplatePath"
  12.    
  13.     WriteStringValue HKEY_CURRENT_USER, KeyName, valueName, dataValue
  14.    
  15.    
  16.     Debug.Print ReadRegVal(HKEY_CURRENT_USER, KeyName, valueName, DefaultData)
  17.    
  18. End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 19:50 , Processed in 1.016608 second(s), 72 queries .

© 2020-2025 乐筑天下

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