Тема: CreateObject и Версии(Локализации) AutoCAD

Необходимо из программы (VB) выполнять запуск AutoCAD. CreateObject с этим в принципе нормально справляется, но есть одна проблема... Как осуществить запуск конкретной версии? А именно даже не версии, а локализации? Тоесть, есть AutoCAD2004RUS и AutoCAD2004EN...
CreateObject("AutoCAD.Application.16") ведет себя неоднозначно...
Подскажите плз как запустить именно русский? или именно Английский?

Re: CreateObject и Версии(Локализации) AutoCAD

Как вариант запускать ехе к примеру через Shell и забирать ее под управление.

Re: CreateObject и Версии(Локализации) AutoCAD

> SmeL
имхо кривоватый метод... хотя за неимением лучшего может и сгодиться:)
И еще из этого метода вываливается еще одна проблема... Как получить пути? они ведь не всегда стандартные...

Re: CreateObject и Версии(Локализации) AutoCAD

Гхм... А посмотреть реализацию задачи в "САПР на базе..." не судьба? Там при разработке стартера все это рассматривалось и разжевывалось. Ветки реестра и те были указаны.

Re: CreateObject и Версии(Локализации) AutoCAD

HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\[b]R15.0\ACAD-2:409[/b]

ключ AcadLocation вернет путь где находится ACAD.exe.
О том как найти выделенные ключи можно посмотреть
https://www.caduser.ru/forum/topic25366.html

Re: CreateObject и Версии(Локализации) AutoCAD

> kpblc
данной книжки у меня нету(
по конкретнее можно? может код есть?

Re: CreateObject и Версии(Локализации) AutoCAD

> Serj!
Я книгу вчера домой утащил, но кода там мама не горюй, да сделан он на Delphi (хотя в принципе перевести на VB(A) особого труда составить не должно, а если SmeL еще подключится к переработке кода, то тогда совсем лафа будет - такого профи еще поискать надо.

Re: CreateObject и Версии(Локализации) AutoCAD

> kpblc
Спасибо:) я уже код нашел, принцип понял, на вб перевел:)

Re: CreateObject и Версии(Локализации) AutoCAD

> Serj!
Опаньки! А можно тогда глянуть? Из чистого любопытства :)

Re: CreateObject и Версии(Локализации) AutoCAD

> kpblc
Доделаю может выложу... сейчас всеравно неприглядный... Общий смысл всеравно заключается в том, чтобы получить из реестра путь к AutoCAD и Shell-ом запустить его... Всеравно както криво... есть внутреннее чувство (типа жопой чую), что можно сделать как то по другому...

Re: CreateObject и Версии(Локализации) AutoCAD

> Serj!
..что можно сделать как то по другому...
Нельзя. Иначе бы давно уже сделали. Кстати никакой "кривизны" я в этом не вижу - ты таким образом запускаешь именно тот AutoCAD (или вертикальное приложение), который тебе нужен! Так что в этом "кривое"?
Если есть желание делать не так, то тебе придется прописать в регистратуру в несколько мест информацию о именно том AutoCAD который тебе нужен прежде чем сделать CreateObject("AutoCAD.Application.16"). Так что значительно проще его запустить непосредственно.

Re: CreateObject и Версии(Локализации) AutoCAD

> Александр Ривилис
Кривизна заключается в том, что связывание позднее (может я чтото недопонимаю)... Тоесть объект AutoCAD сначала создается, а уже потом получается в приложение (GetObject). Это не есть гуд:)

прописать в регистратуру в несколько мест информацию о именно том AutoCAD который тебе нужен прежде чем сделать CreateObject

Вот этоя я и имел ввиду) Остается только знать куда в реестре прописать информацию об необходимом AutoCAD...

Re: CreateObject и Версии(Локализации) AutoCAD

> Serj!
Во придумал проще вариант :)без щела написать тоже будет в пару строк.
Едея такова там я выше линк давал, в нем вот выдержка

1) ключ показывает какой из установленных ACAD -ов является по умолчанию

так вот меняйте этот ключь перед тем как создаете объект, создайте объект, потом меняете его на прежнее значение.
повторюсь более подробно здесь
https://www.caduser.ru/forum/topic25366.html

Re: CreateObject и Версии(Локализации) AutoCAD

> SmeL
У ключей HKEY_LOCAL_MACHINE значений CurVer нету, а если менять значение CurVer у ключей HKEY_CURRENT_USER, то это не дает результата:( При изменении CurVer и выполнении CreateObject запускается не то, что было установлено мной, а хз что:( Гдето еще прописано, а где точно, найти не смог пока...

Re: CreateObject и Версии(Локализации) AutoCAD

Serj! пишет:

У ключей HKEY_LOCAL_MACHINE значений CurVer нету...

как так нету?
реестр от SmeL

HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD]
"CurVer"="R15.0"

реестр от kpblc

HKEY_CURRENT_USER\Software\Autodesk\AutoCAD
"CurVer" = "R16.1"

Re: CreateObject и Версии(Локализации) AutoCAD

> SmeL
реестр от kpblc
HKEY_CURRENT_USER\Software\Autodesk\AutoCAD
"CurVer" = "R16.1"
Вот вот)
В Цуррент юзере ключи есть, а в Локал машин нету:(

Re: CreateObject и Версии(Локализации) AutoCAD

ну так установите по умолчанию разные ACADы и смотрите на изминения в реестре. Если у Вас там нет этих ключей то плохо придется переписывать пару функций мне :)

Re: CreateObject и Версии(Локализации) AutoCAD

> SmeL
у тебя похоже 2002 акад? в нем может и есть эти ключи... а в 2004 уже нету видно...будем искать, где еще прописывается...

Re: CreateObject и Версии(Локализации) AutoCAD

На мой взгляд поиграться с реестром будет надежнее чем запускать exe, а потом его использовать. Ну в продолжении темы про запуск через шелл потом можно будеть спрятать окно при помощи, проделать все опирации и вновь показать.

Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Re: CreateObject и Версии(Локализации) AutoCAD

SmeL пишет:

На мой взгляд поиграться с реестром будет надежнее чем запускать exe

Золотые слова:))) Это я изначально и имел ввиду:)

Re: CreateObject и Версии(Локализации) AutoCAD

Serj! пишет:

Золотые слова:))) Это я изначально и имел ввиду:)

ага и поэтому предложили ;)
CreateObject("AutoCAD.Application.16")
мне бы сейчас ветки реестра автокада не помешали. Развили бы тему и пришли к однозначному ответу.

Re: CreateObject и Версии(Локализации) AutoCAD

> Serj!
Вот этоя я и имел ввиду) Остается только знать куда в реестре прописать информацию об необходимом AutoCAD...
Писать придется сюда:
HKEY_CURRENT_USER\Software\Classes\AutoCAD.Application
HKEY_CURRENT_USER\Software\Classes\AutoCAD.Application.16
HKEY_CLASSES_ROOT\CLSID\{1365A45F-0C8F-4806-A26A-6B22AD37EC66}\LocalServer32
и еще в несколько мест.
Все места доступны только если работа идет под Administrator (возможно Power User). Так что это еще более "криво", чем запускать AutoCAD напрямую.

Re: CreateObject и Версии(Локализации) AutoCAD

> Александр Ривилис
Да Александр Ривилис, вспомнил о тех у кого проблемы с реестром. Это тоже весомый аргумент.
Можно по фонтазировать проверить есть доступ к реестру если да то идем через реестр, если нет то шелл в руки, хотя может лучше сразу через шелл запускать.