Справочник по элементу Components

Элемент Components используется для определения компонентов, составляющих одну версию подключаемого модуля.

Для определения компонентов каждого подключаемого модуля можно использовать несколько элементов Components. Каждый элемент Components позволяет определить один или несколько компонентов. Сведения о программе и платформе для элемента Components определяются элементом RuntimeRequirements.

Если все компоненты, определенные в элементе Components, применимы к одной и той же платформе, добавлять элемент RuntimeRequirements к каждому элементу ComponentEntry по отдельности не требуется.

Как и элемент RuntimeRequirements, элемент Components может содержать один или несколько следующих элементов.

Прим.: Элемент Components может иметь только по одному элементу RegistryEntries, SystemVariables и EnvironmentVariables, но несколько элементов ComponentEntry.

Ниже рассматриваются основные связи между элементом Components и другими элементами, которые он может содержать.

<Components>
  <RuntimeRequirements ... />

  <RegistryEntries>
    <RegistryEntry ... />
  </RegistryEntries>

  <SystemVariables>
    <SystemVariable ... />
  </SystemVariables>

  <EnvironmentVariables>
    <EnvironmentVariable ... />
  </EnvironmentVariables>

  <ComponentEntry ... >
    <RuntimeRequirements ... />

    <AssemblyMappings>
      <AssemblyMapping ... />
      <AssemblyMappingFolder ... />
    </AssemblyMappings>

    <Commands ...>
      <Command ... />
    </Commands>
  </ComponentEntry>

  <ComponentEntry ... />
</Components>

Элемент ComponentEntry (программы на основе AutoCAD 2013 и более поздних версий)

Элемент ComponentEntry является обязательным и позволяет задать сведения о каждом отдельном компоненте в элементе Components.

При необходимости можно задать любое количество элементов ComponentEntry. Типы компонентов могут иметь один из следующих форматов файлов:

Элемент ComponentEntry может содержать элемент Commands, если атрибут LoadReasons имеет значение LoadOnCommandInvocation.

Прим.: Элементы ComponentEntry загружаются в том порядке, в котором они отображаются, но снизу вверх. Таким образом, все файлы, зависимые от других компонентов, должны располагаться в нижней части списка. Например, если модуль ObjectARX зависит от модуля ObjectDBX, то модуль ObjectARX необходимо отобразить в списке выше модуля ObjectDBX.

Элемент ComponentEntry может иметь следующие присвоенные ему атрибуты.

Атрибут

Описание

AppName

Необязательно для AutoLISP, обязательно для ObjectARX и .NET. Имя компонента. Аналогично атрибуту AppName в классе ObjectARX API AcadAppInfo.

AppDescription

Описание компонента. Аналогично атрибуту AppDescription в классе ObjectARX API AcadAppInfo.

AppType

Тип компонента. Переопределяет тип, полученный из расширения файла в атрибуте ModuleName.

Возможны следующие типы компонентов:

  • .Net — управляемая или смешанная сборка .NET
  • Arx — ObjectARX.
    Прим.: Требуется загрузить файл ARX из пакета в AutoCAD для Mac.
  • Atc — инструментальная палитра
  • Bundle — комплект Bundle
  • Cui или CuiX — частичная адаптация
  • Dbx — ObjectDBX
  • Dependency — DLL-библиотека ресурсов (не загружается в программном продукте на основе AutoCAD)
  • JavaScript — JavaScript
  • LISP или CompiledLisp — AutoLISP/Visual LISP
  • Mnu — адаптация меню
  • VBA — проект VBA
  • XAML — файл XAML для реализации контекстной вкладки ленты

ModuleName

Относительный путь к компоненту в пакете. Аналогично атрибуту ModuleName в классе ObjectARX API AcadAppInfo.

Тип компонента определяется из расширения файла:

  • ATC — инструментальная палитра
  • .arx — ObjectARX
  • .cuix — частичная адаптация
  • .dbx — ObjectDBX
  • .dll — управляемая сборка .NET
  • DVB — проект VBA (продукты на базе AutoCAD 2015 или более поздних версий)
    Прим.: Для установки файлов DVB в первую очередь требуется VBA Enabler. После загрузки пользователь должен нажать кнопку "Включить макросы", чтобы активировать проект и входящие в него макросы.
    Важное замечание: В настоящее время файлы проектов VBA можно загрузить, только если файл чертежа открывается при запуске. Для этого системной переменной STARTUP должно быть назначено значение 0 или 1.
  • JS — Javascript (продукты на базе AutoCAD 2015 и более поздних версий)
  • .lsp, .fasили .vlx: AutoLISP/Visual LISP
  • XAML — расширяемый язык разметки приложений (продукты на базе AutoCAD 2015 или более поздних версий).
    Прим.: Для атрибута XamlType должен быть установлено значение ContextualTabRule.

Если в приложении будут обрабатываться несколько языков, то версии конкретного компонента можно задать путем добавления к атрибуту ModuleName кода языка. См. раздел "Поддерживаемые коды языков" для получения полного списка поддерживаемых кодов языков.

Прим.: В путях указываются символы '/', а не '\'. Пути задаются относительно корневой папки .bundle.

PerDocument

Только AutoLISP — true, если AutoLISP-файл загружается один раз для каждого документа. По умолчанию используется значение true.

Loadreasons

Можно задать несколько значений. Определяет параметры режима загрузки для компонента с атрибутом LoadReasons и исключения параметра LoadOnCommandInvocation.

По умолчанию атрибуты LoadOnAutoCADStartup, LoadOnAppearance и LoadOnProxy включены (задано значение True), если атрибут LoadReasons не указан. Если параметры должны быть отключены (задано значение False), то необходимо задать значение для атрибута LoadReasons.

По умолчанию атрибут LoadOnCommandInvocation отключен. При его включении атрибуты LoadOnAutoCADStartup и LoadOnAppearance будут отключены, если только они не будут включены явным образом. Если один или несколько элементов Command определяются как составляющие элемента Components, параметр LoadOnCommandInvocation будет включен неявным образом.

Дополнительные сведения об атрибуте AcadAppInfo LoadReasons см. в справочном руководстве по ObjectARX.

Допустимые значения параметров:

  • True — параметр включен
  • False — параметр отключен

Можно выбрать один из следующих параметров:

  • LoadOnCommandInvocation. Загружать только при вызове пользовательских команд. При использовании этого параметра элемент Commands должен быть включен. Если параметр LoadOnCommandInvocation включен, то параметры LoadOnAutoCADStartup и LoadOnAppearance считаются отключенными, если только они не будут включены явным образом. Применимо только к файлам AutoLISP, ObjectARX и .NET.
    Прим.: При запуске в целях повышения производительности рекомендуется использовать этот параметр в ходе определения команд компонентами.
  • Загружать_при_запуске_AutoCAD. Загружать при запуске программы на основе AutoCAD. Если этот параметр задан, то он имеет приоритет над другими параметрами. Рекомендуется использовать LoadOnAutoCADStartup только в том случае, если другие параметры не подходят. В обычных случаях его рекомендуется отключать (задайте значение False). Если параметр LoadOnAutoCADStartup не задан, то он будет включен (по умолчанию установлено значение True). Если включен параметр LoadOnCommandInvocation, то значение LoadOnAutoCADStartup по умолчанию равно False. Применимо только к файлам проектов VBA, ObjectARX и .NET.
  • ЗагружатьЧерезПрокси. Загружается при обнаружении прокси для пользовательского объекта. По умолчанию этот параметр включен, если он не отключен в явном виде (если не присвоено значение False). Если параметр включен (задано значение True), то параметр LoadOnAutoCADStartup необходимо отключить. Применяется только к файлам ObjectDBX.
  • LoadOnAppearance. Загружается в том случае, если пакет приложений определяется в одной из папок ApplicationPlugins, что обеспечивает поддержку мгновенной установки без необходимости перезапуска продукта на основе AutoCAD. Этот параметр работает аналогично атрибуту LoadOnAutoCADStartup, за исключением того, что контекст загрузки в ходе выполнения программы относится к моменту установки приложения (например, если оно установлено при помощи веб-сайта Autodesk App Store).

XamlType

Тип XAML. В настоящее время поддерживается только значение ContextualTabRule, оно должно быть установлено, если файл XAML назначается атрибуту ModuleName. Файл приложения, в котором используется файл XAML, должен быть указан после элемента ComponentEntry, который содержится в файле XAML.

Элемент Commands (программы на основе AutoCAD 2013 и более поздних версий)

Элемент Commands не является обязательным, если параметр LoadOnCommandInvocation включен для атрибута LoadReasons. Используется для указания регистрируемых команд для LoadOnCommandInvocation.

Можно указать несколько элементов Commands.

Элемент Commands может иметь следующий присвоенный ему атрибут.

Атрибут

Описание

GroupName

Имя, используемое для систематизации связанных команд.

Элемент Command (программы на основе AutoCAD 2013 и более поздних версий)

Задание глобальных и локальных имен для каждой команды.

Элемент Command может иметь следующие присвоенные ему атрибуты.

Атрибут

Описание

Global

Глобальное имя команды.

Local

Локальное имя команды.

Элементы Command могут быть определены для нескольких языков путем добавления к атрибуту Local кода языка. См. раздел "Поддерживаемые коды языков" для получения полного списка поддерживаемых кодов языков.

HelpTopic

Раздел справки, который будет открыт, когда команда активна и нажата клавиша F1.

Прим.: Для просмотра раздела справки файл справки должен быть назначен дополнительному модулю. Расположение файла справки для подключаемого модуля указывается при помощи атрибута HelpFile в элементе ApplicationPackage.

StartupCommand

Если задано значение "истина", команда будет выполнена при запуске.

В следующем примере добавлены две команды, определенные в группе с именем ADSKCMDS:

<Commands GroupName="ADSKCMDS">
    <Command Global="HELLOWORLD" Local="ADSKHELLOWORLD"/>
    <Command Global="DRAWLINE" Local="ADSKDRAWLINE"/>
</Commands>

Элемент AssemblyMappings (программы на основе AutoCAD 2013 или более поздней версии)

Элемент AssemblyMappings не является обязательным и может содержать один или несколько элементов AssemblyMapping или AssemblyMappingFolder. Элементы AssemblyMapping и AssemblyMappingFolder используются для добавления файлов сборки и путей к папкам во внутренние списки, которые AutoCAD использует для поиска сборок, не найденных в папке установки программы.

Элемент AssemblyMapping (программы на основе AutoCAD 2013 или более поздней версии)

Атрибут

Описание

Name

Имя элемента ComponentEntry, с которым связана сборка и с которым она должна загружаться.

Path

Относительный путь к сборке в пакете.

Элемент AssemblyMappingFolder (программы на основе AutoCAD 2022 или более поздней версии)

Атрибут

Описание

Path

Относительный путь к сборкам в пакете.

В следующем примере добавлены две папки, которые содержат сборки, используемые компонентом:

<AssemblyMappings>
    <AssemblyMappingFolder Path="./Content/Assemblies" />
    <AssemblyMappingFolder Path="./Content/MoreAssemblies" />
</AssemblyMappings>

Элемент RegistryEntries (программы на основе AutoCAD 2015 и более поздних версий)

Элемент RegistryEntries не является обязательным и может содержать один или несколько элементов RegistryEntry. Элемент RegistryEntry содержит определение записи реестра, которую подключаемый модуль должен создать или изменить. Записи сохраняются в реестре Windows или в файле списка свойств (PLIST) на Mac OS.

Прим.: В ОС Windows записи реестра создаются в HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\<выпуск>\ACAD-<продукт>:<язык>. Не допускается создавать записи реестра в других папках. Аналогичное расположение используется для файлов PLIST в Mac OS.
Элемент RegistryEntry

Атрибут

Описание

Name

Имя записи реестра для создания или изменения.

Value

Значение, задаваемое для записи реестра.

Значение может содержать один из необязательных префиксов: +, -, & и |.

Подробную информацию см. в разделе "Префиксы значений переменных".

Прим.: Префикс не сохраняется, когда значение применяется к записи реестра.

Type

Тип данных записи реестра. Не является обязательным при изменении существующей записи реестра.

Допустимые значения:

  • REG_SZ — строка с завершающим нулем
  • REG_EXPAND_SZ — строка с завершающим нулем, содержащая переменные среды, такие как %APPDATA%
  • REG_DWORD — 32-разрядное целое число без знака
  • REG_QWORD — 64-разрядное целое число со знаком

Если в записи реестра используется префикс, необходимо определить соответствующий тип данных. Если тип данных не будет указан, операция будет рассматриваться как строковая.

Flags

(Необязательно) Создание и редактирование флагов. Можно задать несколько флагов. Для их разделения используйте символ конвейеризации.

Поддерживаются следующие флаги:

  • Create — создание записи реестра, если она не существовала ранее (действие по умолчанию).
  • Open — изменение значения записи реестра каждый раз при загрузке подключаемого модуля и только для существующей записи реестра.
  • OpenOnce — изменение значения записи реестра только при первой загрузке подключаемого модуля и только для существующей записи реестра. После удаления и повторной установки подключаемого модуля значение записи реестра будет изменено.
Прим.: Для изменения значения записи реестра требуется использовать флаг Open или OpenOnce.

В следующем примере создается ключ реестра MYREGKEY и добавляется значение STRING и NUMBER.

<RegistryEntries>
    <RegistryEntry
        Key="MYREGKEY"
        Name="STRING"
        Value="Example"
        Type="REG_SZ"
    />

    <RegistryEntry
        Key="MYREGKEY"
        Name="NUMBER"
        Value="123"
        Type="REG_DWORD"
    />
</RegistryEntries>

Элемент SystemVariables (программы на основе AutoCAD 2015 и более поздних версий)

Элемент SystemVariables не является обязательным и может содержать один или несколько элементов SystemVariables. Элемент SystemVariable содержит определение системной переменной, создаваемой или изменяемой подключаемым модулем.

Элемент SystemVariable

Атрибут

Описание

Name

Имя системной переменной, которую необходимо создать или изменить.

Value

Значение, задаваемое для переменной.

Значение может содержать один из необязательных префиксов: +, -, & и |.

Подробную информацию см. в разделе "Префиксы значений переменных".

Прим.: Префикс не сохраняется, когда значение применяется к переменной.

PrimaryType

Тип данных переменной. Не является обязательным при изменении существующей системной переменной.

Допустимые значения:

  • Int16 — 16-разрядное целое число со знаком
  • Int32 — 32-разрядное целое число
  • Real — число с плавающей запятой или двойное число
  • String — один или несколько символов

Если в значении переменной используется префикс, необходимо определить соответствующий тип данных. Если тип данных не будет указан, операция будет рассматриваться как строковая.

StorageType

Место хранения значения переменной; если поддерживается. Не является обязательным при изменении существующей системной переменной.

Допустимые значения:

  • Database — сохраняется в файле чертежа, где была создана переменная
  • Profile — сохраняется в текущем профиле AutoCAD
  • Session — не сохраняется между сеансами и в чертеже, где была создана переменная
  • User — сохраняется как часть FixedProfile для AutoCAD

Owner

(Необязательно) Имя службы AcRX.

Используется, чтобы сделать системные переменные доступными только для чтения и предоставить возможность их изменения только из приложения, регистрирующего имя службы как acrxRegisterService ().

Flags

(Необязательно) Создание и редактирование флагов. Можно задать несколько флагов. Для их разделения используйте символ конвейеризации.

Поддерживаются следующие флаги:

  • Create — создание переменной, если она не существовала ранее (действие по умолчанию).

  • Open — изменение значения переменной каждый раз при загрузке подключаемого модуля и только для существующей переменной.

  • OpenOnce — изменение значения переменной только при первой загрузке подключаемого модуля и только для существующей переменной. После удаления и повторной установки подключаемого модуля значение переменной будет изменено.

  • SpacesAllowed — возможность использовать пробел в командной строке. Если не задано, нажатие пробела приравнивается к нажатию клавиши ENTER.

    Прим.: Использовать только при создании флага и в случаях, когда для атрибута PrimaryType задано значение String.
  • DotIsEmpty — возможность очистить значение переменной при вводе символа "." (точка) для значения переменной.

    Прим.: Использовать только при создании флага и в случаях, когда для атрибута PrimaryType задано значение String.
  • NoUndo — изменения значений переменной не записываются и их нельзя отменить командой ОТМЕНИТЬ.

    Прим.: Использовать только при создании флага.
  • Chatty — отправка оповещений, даже если для переменной задано ее текущее значение.

    Прим.: Использовать только при создании флага.
Прим.: Для изменения значения переменной необходимо использовать флаги Open или OpenOnce.

В следующем примере создается системная переменная с именем MYVARIABLE.

<SystemVariable
    Name="MYVARIABLE"
    PrimaryType="String"
    StorageType="User"
    Value="Example"
    Owner=""
    Flags="Create|DotIsEmpty|SpacesAllowed"
/>

В следующем примере при первой загрузке подключаемого модуля значение системной переменной CURSORSIZE изменяется на 100.

<SystemVariable
    Name="CURSORSIZE"
    Value="100"
    Flags="OpenOnce"
/>

Элемент EnvironmentVariables (программы на основе AutoCAD 2015 и более поздних версий)

Элемент EnvironmentVariables не является обязательным и может содержать один или несколько элементов EnvironmentVariable. Элемент EnvironmentVariable содержит определение переменной среды, которую должен создать или изменить подключаемый модуль. Переменные среды сохраняются в реестре Windows или в файле списка свойств (PLIST) на Mac OS.

Прим.: Значение переменной среды всегда хранится в виде строки, а в имени переменной среды учитывается регистр.
Элемент EnvironmentVariable

Атрибут

Описание

Name

Имя переменной среды, которую необходимо создать или изменить.

Value

Значение, задаваемое для переменной.

Значение может содержать один из необязательных префиксов: +, -, & и |.

Подробную информацию см. в разделе "Префиксы значений переменных".

Прим.: Префикс не сохраняется, когда значение применяется к переменной.

Type

(Необязательно) Тип данных компонента Value.

Допустимые значения:

  • Int16 — 16-разрядное целое число со знаком
  • Int32 — 32-разрядное целое число со знаком
  • Real — число с плавающей запятой или двойное число
  • String — один или несколько символов

Если в значении переменной используется префикс, необходимо определить соответствующий тип данных. Если тип данных не будет указан, операция будет рассматриваться как строковая.

Flags

(Необязательно) Создание и редактирование флагов. Можно задать несколько флагов. Для их разделения используйте символ конвейеризации.

Поддерживаются следующие флаги:

  • Create — создание переменной, если она не существовала ранее (действие по умолчанию).
  • Open — изменение значения переменной каждый раз при загрузке подключаемого модуля и только для существующей переменной.
  • OpenOnce — изменение значения переменной только при первой загрузке подключаемого модуля и только для существующей переменной. После удаления и повторной установки подключаемого модуля значение переменной будет изменено.
Прим.: Для изменения значения переменной необходимо использовать флаги Open или OpenOnce.

Ниже приведен пример создания двух переменных среды с именами MYNUMVAR и MYSTRVAR.

<EnvironmentVariables>
    <EnvironmentVariable
        Name="MYNUMVAR"
        Value="123"
    />

    <EnvironmentVariable
        Name="MYSTRVAR"
        Value="Example"
    />
</EnvironmentVariables>

Префиксы значений переменных

Префиксы не используются для изменения текущего значения переменной при загрузке подключаемого модуля. Один из префиксов, перечисленных в следующей таблице, можно добавить в атрибут Value элемента RegistryEntry, SystemVariable или EnvironmentVariable.

Префикс

Описание

+ (плюс)

Добавление или прикрепление значения к значению существующей переменной.

Int16, Int32, Real: добавление значения к значению существующей переменной.

String: добавление значения к значению существующей переменной.

- (дефис)

Вычитание или удаление значения из значения существующей переменной.

Int16, Int32, Real: вычитание значения из значения существующей переменной.

String: удаление значения из значения существующей переменной.

& (амперсанд)

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

| (символ конвейеризации)

Операция побитового ИЛИ, применяемая к текущему значению переменной; поддерживаются только числовые значения.

Прим.: Если предполагается, что значение переменной будет начинаться с одного из префиксов, следует добавить перед ним обратный слеш. Например, если предполагается, что значение переменной должно быть равным +radius, введите \+radius.

Следующие элементы допускают привязку к объектам END, MID, CEN, NOD, QUA и INT, при этом привязка всех остальных объектов остается как есть.

<SystemVariable
    Name="OSMODE"
    Value="|63"
    Flags="Open"
/>