Тема: Как программно отследить каталог установки AutoCAD?

как узнать каталог установки autocad программно

Re: Как программно отследить каталог установки 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'~

Re: Как программно отследить каталог установки AutoCAD?

Возвращает
C:\PROGRA~1\AUTOCA~1
Что не является нормальным. Как это лечить ?

Re: Как программно отследить каталог установки AutoCAD?

> Alexander Larionov
У меня вернуло все правильно. ТОгда встречный вопрос а чем вам не огодил ShortPath?

Re: Как программно отследить каталог установки AutoCAD?

Я сам то пишу на delphe, но бейсиковские написания спокойно адаптирую под себя. На этом форуме много умных людей.
Если честно, то мне нужен доступ к содержимому каталога font в независимости от того где акад установлен

Re: Как программно отследить каталог установки AutoCAD?

Разве с shortpath я смогу получить доступ к каталогу ? Там надо суммировать строки для выхода на содержимое font

Re: Как программно отследить каталог установки AutoCAD?

> Alexander Larionov
Можешь. Никаких проблем.

Re: Как программно отследить каталог установки AutoCAD?

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

Re: Как программно отследить каталог установки AutoCAD?

> 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'~

Re: Как программно отследить каталог установки AutoCAD?

"C:\PROGRA~1\AUTOCA~1" & "\Fonts\" Не будет работать. Как программа узнает полное имя каталога ? А может в действительности такие каталоги есть.
String он и есть стринг и стринги Program Files <>PROGRA~1 - это разные вещи

Re: Как программно отследить каталог установки AutoCAD?

> Alexander Larionov
Запустите это через RUN и поглядите куда вы попадете.
"C:\PROGRA~1\AUTOCA~1\Fonts"
Вы уверенны, что программируете на делфи?
Точный путь к папке Fonts Вы найдете в реестре!

Re: Как программно отследить каталог установки AutoCAD?

Уверен :)) работаю с дельфями.
Я перевел вашу функцию с бейсика на паскаль
выводит
---------------------------
main_first
---------------------------
Dir: C:\PROGRA~1\AUTOCA~1\acad.exe
---------------------------
OK
---------------------------
А что делается здесь
sVer = Mid$(sVer, InStr(sVer, ".") + 1)
(нет книги под рукой :)))
"Точный путь к папке Fonts Вы найдете в реестре!"
Где искать-то ?

Re: Как программно отследить каталог установки AutoCAD?

Alexander Larionov пишет:

"Точный путь к папке Fonts Вы найдете в реестре!"
Где искать-то ?

Прочтите Ваш топик с начало до конца, там что то упоминалось где это искать :D

Re: Как программно отследить каталог установки AutoCAD?

Да знаю я что лежит в каталоге Акада. В реестре как определить ?
"Выделенное жирным у вас может отличаться. Как определить именно ваше смотрите здесь"
Вот именно, что может отличаться ! И как понять это отличие :)) !

Re: Как программно отследить каталог установки AutoCAD?

Посмотрите свойство 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

Re: Как программно отследить каталог установки AutoCAD?

> Alexander Larionov
На лиспе это выглядит так:

(vl-registry-read   (strcat "HKEY_LOCAL_MACHINE\\"
(vlax-product-key)
 "acadlocation")

Re: Как программно отследить каталог установки AutoCAD?

Извиняюсь, это выглядит так:

(vl-registry-read   (strcat "HKEY_LOCAL_MACHINE\\"
(vlax-product-key))
 "acadlocation")

Re: Как программно отследить каталог установки AutoCAD?

А на vba примерно так:

Dim appName As String
appName = ThisDrawing.Application.FullName

Re: Как программно отследить каталог установки AutoCAD?

(findfile "acad.exe")

и брать оттуда путь :)

Re: Как программно отследить каталог установки AutoCAD?

> 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'~

Re: Как программно отследить каталог установки AutoCAD?

Всем большое спасибо :))