Имя текущего профиля и прочие Preferences
В очередной раз приношу самую искреннюю благодарность Андрею Бушману - без него я бы точно не разобрался в этой задачке.
Исходные тексты хранятся на языке оригинала - здесь; а здесь - перевод.
Для того, чтобы получить доступ к таким настройкам AutoCAD, как:
| PreferencesDisplay | Настройки отображения | 
| PreferencesDrafting | Настройки черчения | 
| PreferencesFiles | Настройки файлов | 
| PreferencesOpenSave | Настройки открытия и сохранения | 
| PreferencesOutput | Настройки вывода | 
| PreferencesProfiles | Настройки профилей | 
| PreferencesSelection | Настройки выбора | 
| PreferencesSystem | Настройки системы | 
| PreferencesUser | Пользовательские настройки | 
необходимо использовать COM Interop, то бишь обращение к AutoCAD как к СОМ-серверу.
Официальная документация предлагает использовать т.н. "раннее связывание":
- создать обычный проект для AutoCAD - библиотека классов, подключить необходимые *mgd.dll, установить для них CopyLocal = False
- в проект необходимо импортировать соответствующую tlb-библиотеку, находяшуюся в %ProgramFiles%/Common Files/Autodesk Shared (расположение может меняться):
 Версия Локализация Имя tlb AutoCAD 2007..2009 Eng acax17enu.tlb AutoCAD 2007..2009 Rus acax17rus.tlb AutoCAD 2010..2012 Eng acax18enu.tlb AutoCAD 2010..2012 Rus acax18rus.tlb 
Сейчас на машине установлен только 2012, так что с предыдущими версиями могу и ошибиться.
Именно наличие этой tlb в проекте позволяет использовать строку
| 1 | using Autodesk.AutoCAD.Interop; | 
Тогда в класс добавляем всего пару строк
| 1 2 | using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Interop; | 
И после этого можно уже вполне спокойно работать с настройками, перечисленными выше. Так, например, получение имени текущего профиля сводится к 2 строкам:
| 1 2 | AcadPreferences acProfiles = (AcadPreferences)Autodesk.AutoCAD.ApplicationServices.Application.Preferences; return acProfiles.Profiles.ActiveProfile; | 
