Тема: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Добрый день
Хотелось бы узнать, будут ли корректно работать указанные ниже
функции, на разных локализациях программы (английский, немецкий,
русский ...)?

acedOsnap(VT1, "END,NEA", VT2);
acedCommand(RTSTR, "_explode", RTENAME, Name, RTSTR, "", 0);

и им подобные. Т.е. те, в которых указываются имена команд AutoCAD
и точки привязки?
Достаточно ли использовать в этих функциях английские названия или
необходимо полностью переписывать свой код на С++?
Что можно сделать, чтобы программы работали для разных языковых
локализаций?
Чего следует избегать и что лучше делать для совместимости?
Будут ли программы, использующие функции указанные выше, выполняться
на AutoCAD LT?

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

> Юра
Я не владею ObjectARX, но хочу заметить, что для того, чтобы программы работали в любой локализации, необходимо ставить подчерк "_" не только перед названиями английских команд, но и перед названиями опций этих команд. В том числе и перед названиями типа объектной привязки.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Аналогично не владею ObjectARX ни в каком виде, но насчет LT сказать могу следующее: на этом форуме была информация о том, что Autodesk официально запретила своим партнерам (возможно, и сторонним разработчикам) выпускать приложения, ориентированные на работу в AutoCAD LT. ObjectARX (равно как и LISP) в LT официально не поддерживается.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

К всему вышесказанному добавлю, что команды лучше записывать через подчеркивание и точку, т.е. вместо "_explode" писать "_.explode". Причина в том, что если команда была "подменена", то использование точки указывает на использование оригинальной команды.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Спасибо всем.
Я раньше читал, что нужно ставить "_" перед командой, но не слышал про "_."
Попробовал "_.explode" и "_.line" - выполняется, а вот с привязками "_.NEA"/"_NEA"/".NEA" - ошибка, корректно выполняется только "NEA".
Где нибудь можно посмотреть названия команд, которые не доступны для подмены?

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

> Юра
"_NEA", "_END" и т.д. можно считать опциями команды "_.-OSNAP", поэтому точку ставить не надо. А вот подчерк - надо, по крайней мере в русской версии AutoCAD.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

> Юра
Точка ставится перед командой. Перед опциями команд их ставить нельзя. Кроме того подчеркивание ставится в опциях функции acedSSGet() (аналог лисповской (ssget). Например, вместо "X" нужно ставить "_X", и т.д.

ошибка, корректно выполняется только "NEA".

Так должно работать: "_NEA" (у меня работает и в английских и в русских версиях AutoCAD).

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Да действительно работает "_NEA", это я ошибся.
Спасибо
И еще один вопросик.
В реестре АutoCAD прописывает свою конфигурацию в "HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD",
а дальше в зависимости от версии:
AutoCAD2005 в "R16.1\ACAD-301:409\";
AutoCAD2006 в "R16.2\ACAD-4001:409\" и т.д.
Вопрос. Можно ли считать эти данные постоянными для конкретной версии AutoCAD, или они отличаются (например от локализации или чего то еще)?
Может ли, например, AutoCAD2005 использовать ветки реестра и "R16.1\ACAD-301:409\" и другие, или только "R16.1\ACAD-301:409\"?
Можно ли жестко указать эти данные в программе или их нужно “вылавливать” в реесте для каждой конкретной машины?
Можно ли быть уверенным, что откомпилированная и нормально выполняемая на моей машине программа будет корректно работать для всех AutoCAD этой версии?

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Кажется мне, что достаточно функции

(arxload "My_Prog")

и все. Зачем реестр?

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

> Юра

HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R[b]NN.N[/b]\ACAD-[b]ProdID[/b]:[b]LangID[/b]

NN.N - определяет версию
ProdID  - (цифры) определяет это AutoCAD или вертикальный продукт (ADT, MDT, LDDT и т.д.)
LangID - (цифры) определяет локализацию (например, 419 - русский, 409 - английский)
Если объяснишь зачем тебе это нужно, то может еще подскажу как проще найти информацию.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Задача заключается в следующем.
Необходимо инсталлировать программу для AutoCAD (например для AutoCAD2005)
Для этого я написал свой инсталлятор. :(
Инсталлятор проверяет ветку реестра “SOFTWARE\Autodesk\AutoCAD\R16.1”
Если ветка присутствует - выполняется инсталляция программы. При этом в ветку реестра
"SOFTWARE\Autodesk\AutoCAD\R16.1\ACAD-301:409\Applications"
(сейчас этот путь прописан жестко) добавляются ссылки на все модули .arx.
(arxload "My_Prog") я не использую.
Как мне правильно инсталлировать программу, чтобы она работала для всех AutoCAD 2005???

HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\RNN.N\ACAD-ProdID:LangID
NN.N — определяет версию
ProdID  — (цифры) определяет это AutoCAD или вертикальный продукт (ADT, MDT, LDDT и т.д.)
LangID — (цифры) определяет локализацию (например, 419 — русский, 409 — английский)

из выше сказанного следует, что ProdID для AutoCAD должен быть один и тот же.
Но у меня для
AutoCAD2005 - "R16.1\ACAD-301:409\";
AutoCAD2006 - "R16.2\ACAD-4001:409\".
Можно ли доверять, что для этих версий AutoCAD будет имено “ACAD-301:*” и “ACAD-4001:*”.
Можно конечно перебрать все, что входит в "R16.1\ACAD-*:*" и проконтролировать переменную "ProductName". Но может есть более правильный вариант?
Куда писать? Как правильно определить нужную ветку?
У меня стоит только английская версия AutoCAD и ни на чем другом я проверить не могу. :(

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

> Юра
1) Если ты используешь ObjectARX SDK 2004 то твои arx-файлы будут работать во всех AutoCAD 2004,2005,2006. Если ObjectARX SDK 2005 или 2006, то могут быть нюансы на младших версиях.
2) Тебе нужно найти все ключи в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD Из них отобрать те, которые содержат префикс R16. Потом пройтись по ним - это будут AutoCAD'ы 2004...2006 или вертикальные приложения на их основе, под которыми твои программы тоже могут работать. Тебя не должны интересовать ProgId и LangID - если твои программы написаны корректно то они будут работать.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

P.S.:

из выше сказанного следует, что ProdID для AutoCAD должен быть один и тот же.

Не следует ProgID учитывает версию AutoCAD

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Получается, что я могу прописать свои данные во все пути с префиксом "\R16.1"?
Или все же нужно выбрать только AutoCAD?
Если программа работает в AutoCAD, будет ли она работать в вертикальных продуктах (ADT, MDT, LDDT и т.д.)?
Если я пропишу в ветке для AutoCAD и MDT, не будет ли оно в MDT загружаться дважды?

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

> Юра
Ох! Еще раз повторяю:

Получается, что я могу прописать свои данные во все пути с префиксом "\R16.1"?

Да. Более того с префиксом R16 (т.е. R16.0, R16.1, R16.2)

Если программа работает в AutoCAD, будет ли она работать в вертикальных продуктах (ADT, MDT, LDDT и т.д.)?

Да.

Если я пропишу в ветке для AutoCAD и MDT, не будет ли оно в MDT загружаться дважды?

Нет.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Огромное спасибо :)
Немного посже обязательно попробую, как работает программа в MDT.
Если забатотает, будет замечательно.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Inventor тоже использует ObjectARX или у него своя библиотека?
Программы написанные на ObjectARX будут работать и в Inventor?

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

> Юра
Инвентор не использует ObjectARX. Он не на платформе AutoCAD и у него свое API - так что твое приложение под ним работать не будет.

Re: Вопрос совместимости программ, в зависимости от локализации AutoCAD

Очень жаль.
Спасибо.