Тема: Как программно отследить каталог установки AutoCAD?
как узнать каталог установки autocad программно
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как программно отследить каталог установки AutoCAD?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
как узнать каталог установки autocad программно
> Alexander Larionov
Попробуй так, только если у тебя их несколько,
вернет текущий:
Public Sub GetAPath() Dim acApp As AcadApplication Dim fullPath As String Set acApp = AcadApplication fullPath = acApp.Path MsgBox fullPath End Sub
~'J'~
Возвращает
C:\PROGRA~1\AUTOCA~1
Что не является нормальным. Как это лечить ?
> Alexander Larionov
У меня вернуло все правильно. ТОгда встречный вопрос а чем вам не огодил ShortPath?
Я сам то пишу на delphe, но бейсиковские написания спокойно адаптирую под себя. На этом форуме много умных людей.
Если честно, то мне нужен доступ к содержимому каталога font в независимости от того где акад установлен
Разве с shortpath я смогу получить доступ к каталогу ? Там надо суммировать строки для выхода на содержимое font
> Alexander Larionov
Можешь. Никаких проблем.
Разве с shortpath я смогу получить доступ к каталогу ?
А что думаете что нет?
"C:\PROGRA~1\AUTOCA~1" & "\Fonts\"
И будет папка Fonts Если ее не переместили. Правда ACAD позволяет перенаправить папку расположения фонтов. Путь по которому будет ACAD будет искать фонты описан тут
HCU\Software\Autodesk\AutoCAD\R15.0\ACAD-2:409\Profiles\<<Unnamed Profile>>\General
значение ACAD
Выделенное жирным у вас может отличаться. Как определить именно ваше смотрите здесь
https://www.caduser.ru/forum/topic25366.html
> Alexander Larionov
Сравни:
'''''''''''''''''''''''''''''''''''''''''''''''''''' ' Returns the AutoCAD path '''''''''''''''''''''''''''''''''''''''''''''''''''' Private Function GetAutoCADPath() As String On Error Resume Next ' Code suggested by Tony Zanzillo Dim oReg As Object Dim sVer As String Dim sPath As String Set oReg = CreateObject("WScript.Shell") sVer = oReg.RegRead("HKEY_CLASSES_ROOT\AutoCAD.Drawing\CurVer\") MsgBox "Current AutoCAD version from AutoCAD.Drawing is " & sVer If Err <> 0 Or sVer = "" Then Err.Clear sVer = oReg.RegRead("HKEY_CLASSES_ROOT\AutoCAD.Application\CurVer\") End If MsgBox "Current AutoCAD versions is " & sVer sPath = oReg.RegRead("HKEY_CLASSES_ROOT\" & sVer & _ "\protocol\StdFileEditing\server\") If Err <> 0 Or sPath = "" Then Err.Clear On Error GoTo CantFindAutoCAD sVer = Mid$(sVer, InStr(sVer, ".") + 1) sVer = "AutoCAD.Drawing." & Mid$(sVer, InStr(sVer, ".") + 1) sPath = oReg.RegRead("HKEY_CLASSES_ROOT\" & sVer & _ "\protocol\StdFileEditing\server\") End If MsgBox "and the program filespec is " & sPath sPath = Left$(sPath, InStr(sPath, "\acad.ex") - 1) MsgBox "and its path is " & sPath GetAutoCADPath = sPath If sPath <> "" Then Exit Function End If CantFindAutoCAD: sPath = "Unable to find AutoCAD in the computer registry." & vbCrLf sPath = sPath & "Install will not work. Please read the attached word " _ & "Document " sPath = sPath & "for instructions on how to do a manual install" MsgBox sPath, vbCritical End Function ' GetAutoCADPath Sub test1() Call GetAutoCADPath End Sub Sub test2() MsgBox Application.Path End Sub Sub test3() MsgBox Application.FullName End Sub
~'J'~
"C:\PROGRA~1\AUTOCA~1" & "\Fonts\" Не будет работать. Как программа узнает полное имя каталога ? А может в действительности такие каталоги есть.
String он и есть стринг и стринги Program Files <>PROGRA~1 - это разные вещи
> Alexander Larionov
Запустите это через RUN и поглядите куда вы попадете.
"C:\PROGRA~1\AUTOCA~1\Fonts"
Вы уверенны, что программируете на делфи?
Точный путь к папке Fonts Вы найдете в реестре!
Уверен :)) работаю с дельфями.
Я перевел вашу функцию с бейсика на паскаль
выводит
---------------------------
main_first
---------------------------
Dir: C:\PROGRA~1\AUTOCA~1\acad.exe
---------------------------
OK
---------------------------
А что делается здесь
sVer = Mid$(sVer, InStr(sVer, ".") + 1)
(нет книги под рукой :)))
"Точный путь к папке Fonts Вы найдете в реестре!"
Где искать-то ?
"Точный путь к папке Fonts Вы найдете в реестре!"
Где искать-то ?
Прочтите Ваш топик с начало до конца, там что то упоминалось где это искать :D
Да знаю я что лежит в каталоге Акада. В реестре как определить ?
"Выделенное жирным у вас может отличаться. Как определить именно ваше смотрите здесь"
Вот именно, что может отличаться ! И как понять это отличие :)) !
Посмотрите свойство Preferences. Оно содержит настройки (аналог окна Options).
Вот пример из хелпа:
Sub Example_FontFileMap() ' This example returns the current setting of ' FontFileMap. It then changes the value, and finally ' it resets the value back to the original setting. Dim preferences As AcadPreferences Dim currFontFileMap As String Dim newFontFileMap As String Set preferences = ThisDrawing.Application.preferences ' Retrieve the current FontFileMap value currFontFileMap = preferences.Files.FontFileMap MsgBox "The current value for FontFileMap is " & currFontFileMap, vbInformation, "FontFileMap Example" ' Change the value for FontFileMap newFontFileMap = "TestFontFileMap.fmp" preferences.Files.FontFileMap = newFontFileMap MsgBox "The new value for FontFileMap is " & newFontFileMap, vbInformation, "FontFileMap Example" ' Reset FontFileMap to its original value preferences.Files.FontFileMap = currFontFileMap MsgBox "The FontFileMap value is reset to " & currFontFileMap, vbInformation, "FontFileMap Example" End Sub
> Alexander Larionov
На лиспе это выглядит так:
(vl-registry-read (strcat "HKEY_LOCAL_MACHINE\\" (vlax-product-key) "acadlocation")
Извиняюсь, это выглядит так:
(vl-registry-read (strcat "HKEY_LOCAL_MACHINE\\" (vlax-product-key)) "acadlocation")
А на vba примерно так:
Dim appName As String appName = ThisDrawing.Application.FullName
(findfile "acad.exe")
и брать оттуда путь :)
> Alexander Larionov
; На моей машине файл шрифтов лежит здесь:
(vl-load-com) (setq support_folder (strcat (getvar "ROAMABLEROOTPREFIX") "\Support") support_files (vl-directory-files support_folder)); ->"acad.fmp"
VBA:
Option Explicit Public Sub GetFontMap() Dim fldStr As String fldStr = ThisDrawing.GetVariable("ROAMABLEROOTPREFIX") & "Support" MsgBox fldStr End Sub
~'J'~
Всем большое спасибо :))
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как программно отследить каталог установки AutoCAD?
Форум работает на PunBB, при поддержке Informer Technologies, Inc