Имя текущего профиля и прочие Preferences

В очередной раз приношу самую искреннюю благодарность Андрею Бушману - без него я бы точно не разобрался в этой задачке.

Исходные тексты хранятся на языке оригинала - здесь; а здесь - перевод.

Для того, чтобы получить доступ к таким настройкам AutoCAD, как:

PreferencesDisplay Настройки отображения
PreferencesDrafting Настройки черчения
PreferencesFiles Настройки файлов
PreferencesOpenSave Настройки открытия и сохранения
PreferencesOutput Настройки вывода
PreferencesProfiles Настройки профилей
PreferencesSelection Настройки выбора
PreferencesSystem Настройки системы
PreferencesUser Пользовательские настройки

необходимо использовать COM Interop, то бишь обращение к AutoCAD как к СОМ-серверу.

Официальная документация предлагает использовать т.н. "раннее связывание":

  1. создать обычный проект для AutoCAD - библиотека классов, подключить необходимые *mgd.dll, установить для них CopyLocal = False
  2. в проект необходимо импортировать соответствующую 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
2
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Interop;

И после этого можно уже вполне спокойно работать с настройками, перечисленными выше. Так, например, получение имени текущего профиля сводится к 2 строкам:

1
2
AcadPreferences acProfiles = (AcadPreferences)Autodesk.AutoCAD.ApplicationServices.Application.Preferences;
return acProfiles.Profiles.ActiveProfile;

Размещено в .NET · Метки: , , ,



Поделитесь своим мнением


Я не робот.