Components 元素參考

Components 元素是用於指定外掛程式某個版本的組成元件。

您可以使用一個以上的 Components 元素來識別外掛程式的元件;每個 Components 元素則可以識別一個或多個元件。Components 元素的平台和產品資訊則是利用 RuntimeRequirements 元素定義。

如果 Components 元素中定義的所有元件皆套用到相同的平台,您便不需要將 RuntimeRequirements 元素加入至個別的 ComponentEntry 元素中。

RuntimeRequirements 元素一起時,Components 元素可能含有一個或多個以下元素

註: Components 元素僅可以有一個 RegistryEntriesSystemVariablesEnvironmentVariables 元素,但可以包含多個 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 元素。元件類型可以是下列其中一種檔案格式:

如果 LoadReasons 屬性設定為 LoadOnCommandInvocation,則 ComponentEntry 元素可包含 Commands 元素。

註: ComponentEntry 元素是依其列示順序載入 (從下到上)。因此,其他元件所從屬的任何檔案都必須位於清單下方。例如,若 ObjectARX 模組從屬於 ObjectDBX 模組,則 ObjectARX 模組必須顯示在清單中 ObjectDBX 模組的上方。

ComponentEntry 元素可以貼附下列任何屬性:

屬性

描述

AppName

AutoLISP 可選;ObjectARX 和 .NET 必選 - Component 名稱;與 ObjectARX API AcadAppInfo 類別中的 AppName 相同。

AppDescription

Component 描述;與 ObjectARX API AcadAppInfo 類別中的 AppDescription 相同。

AppType

Component 類型;覆寫從 ModuleName 屬性提供的檔案副檔名所衍生的類型。

元件類型可以是下列其中一種:

  • .Net – 管理或混合的 .NET 組合
  • Arx – ObjectARX
    註: 將組合中的 ARX 檔案載入至 AutoCAD for Mac 時的必要項目。
  • Atc – 工具選項板
  • Bundle – 組合套件
  • CuiCuix – 局部自訂
  • Dbx – ObjectDBX
  • Dependency – 資源 DLL (不載入至 AutoCAD 系列產品中)
  • JavaScript – JavaScript
  • LispCompiledLisp – AutoLISP/Visual LISP
  • Mnu – 功能表自訂
  • VBA – VBA 專案
  • Xaml – 用於實施關聯式功能區頁籤的 XAML 檔

ModuleName

在組合中與元件的相對路徑;與 ObjectARX API AcadAppInfo 類別中的 ModuleName 相同。

元件類型是從檔案副檔名來判斷:

  • .atc – 工具選項板
  • .arx – ObjectARX
  • .cuix – 局部自訂
  • .dbx – ObjectDBX
  • .dll – 管理的 .NET 組合
  • .dvb – VBA 專案 (AutoCAD 2015 系列產品和更新版本)
    註: 必須先安裝 VBA Enabler,才能使用 DVB 檔。載入時,使用者必須按一下「啟用巨集」,才能存取專案及其巨集。
    重要: 目前,只有當啟動時圖檔是開啟的 (將系統變數 STARTUP 設定為 0 或 1 的值完成),才能載入 VBA 專案檔。
  • .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 參數的異常狀況定義元件的載入行為參數。

根據預設,如果未指定 LoadReasons,則會啟用 LoadOnAutoCADStartupLoadOnAppearanceLoadOnProxy (設定為 True)。如果需要停用參數 (設定為 False),則必須指定 LoadReasons 元素,且參數應設定為 False。

根據預設,LoadOnCommandInvocation 為停用狀態,啟用此元素將會停用 LoadOnAutoCADStartupLoadOnAppearance (除非明確啟用)。如果一個或多個指令元素定義為元件元素的一部分,則系統會隱含啟用 LoadOnCommandInvocation

請參閱《ObjectARX 參考指南》,取得有關 AcadAppInfo LoadReasons 的完整詳細資料。

有效參數值:

  • True – 參數值已啟用
  • False – 參數值已停用

可使用以下參數:

  • LoadOnCommandInvocation。只在呼叫自訂指令時載入。當使用此參數時,必須包含‘Commands’元素。如果 LoadOnCommandInvocation 已啟用,則系統會假設 LoadOnAutoCADStartupLoadOnAppearance 已停用 (除非明確啟用)。只適用於 AutoLISP、ObjectARX 和·.NET 檔。
    註: 由於啟動效能的緣故,在元件定義指令時使用此選項非常重要。
  • LoadOnAutoCADStartup。 當啟動 AutoCAD 系列產品時載入。指定此參數時,此參數優先於其他所有參數。建議只在沒有其他適合的參數時才使用 LoadOnAutoCADStartup,其他時候請儘可能停用此參數 (設定為 False)。如果省略 LoadOnAutoCADStartup 參數,則除非啟用 LoadOnCommandInvocation,否則該參數會預設為啟用 (設定為 True),此時 LoadOnAutoCADStartup 是預設為 False。只適用於 VBA 專案、ObjectARX 和 .NET 檔。
  • LoadOnProxy。當偵測到自訂圖元的代理時載入。根據預設,除非明確停用 (設定為 False),否則此參數為啟用。當啟用 (設定為 True) 時,LoadOnAutoCADStartup 應為停用。僅適用於 ObjectDBX 檔案。
  • LoadOnAppearance。當產品在其中一個 ApplicationPlugins 資料夾中偵測到應用程式組合時會載入此參數,因此支援在安裝時立即載入,無須重新啟動 AutoCAD 系列產品。參數的作用方式與 LoadOnAutoCADStartup 相同,但載入內容是與當產品執行時,何時安裝應用程式有關,例如當透過 Autodesk App Store 網站進行安裝時。

XamlType

XAML 類型;目前僅支援值「ContextualTabRule」,將 XAML 檔案指定給 ModuleName 屬性時必須使用這個值。使用 XAML 檔案的應用程式檔案應該列示在包含 XAML 檔的 ComponentEntry 元素之後。

Commands 元素 (AutoCAD 2013 系列產品和更新版本)

Commands 元素可選,除非 LoadReasons 屬性啟用 LoadOnCommandInvocation 參數。用於指定要使用哪一個指令註冊 LoadOnCommandInvocation

您可以依需要指定一個以上的 Command 元素。

Commands 元素可以貼附下列屬性:

屬性

描述

GroupName

用於組織相關指令的名稱。

Command 元素 (AutoCAD 2013 系列產品和更新版本)

指定每個指令的全球和本端名稱。

Command 元素可以貼附下列任何屬性:

屬性

描述

Global

全球指令名稱。

Local

本端指令名稱。

您可將 Local 與區域設定代碼結合,定義多個語言的指令。請參閱〈支援的區域設定程式碼參考〉取得支援的區域設定程式碼完整清單。

HelpTopic

當指令的狀態處於作用中並按 F1 時,將會開啟的說明主題。

註: 若要顯示說明主題,必須將說明檔案指定給外掛程式。外掛程式的說明檔案位置是由 ApplicationPackage 元素中的 Helpfile 屬性指定。

StartupCommand

若值為 True,便會在啟動時執行指令 。

以下範例加入在名為 ADSKCMDS 的群組中定義的兩個指令:

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

AssemblyMappings 元素 (AutoCAD 2013 系列產品和更新版本)

AssemblyMappings 元素是可選的元素,並且可以包含一個或多個 AssemblyMappingAssemblyMappingFolder 元素。AssemblyMappingAssemblyMappingFolder 元素是用來將組合檔案和資料夾路徑加入 AutoCAD 使用的內部清單,以解析在產品安 資料夾中找不到的組合。

AssemblyMapping 元素 (AutoCAD 2013 系列產品和更新版本)

屬性

描述

Name

組合關聯以及應載入的 ComponentEntry 名稱。

Path

組合內組合的相對路徑。

AssemblyMappingFolder 元素 (AutoCAD 2022 系列產品和更新版本)

屬性

描述

Path

組合 (bundle) 內組合的相對路徑。

以下範例加入兩個包含元件所使用之組合的資料夾:

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

RegistryEntries 元素 (AutoCAD 2015 系列產品和更新版本)

RegistryEntries 元素是可選的元素,並且可以包含一個或多個 RegistryEntry 元素。RegistryEntry 元素包含外掛程式應建立或修改之登錄項目的定義。登錄項目是儲存在 Windows 登錄中或 Mac 作業系統上的性質清單 (PLIST) 檔案中。

註: 在 Windows 中,登錄項目都是在 HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\<版本>\ACAD-<產品>:<語言> 之下建立。登錄項目無法在其他位置中建立。在 Mac 作業系統上的 PLIST 檔案中則是使用對等的位置。
RegistryEntry 元素

屬性

描述

Name

要建立或修改之登錄項目的名稱。

Value

要指定給登錄項目的值。

這個值可以包含其中一個可選的運算子字首:+-&|

如需詳細資訊,請參閱「變數值運算子字首」一節。

註: 將值套用至登錄項目時,不會保留運算子字首。

Type

要指定給登錄項目的資料類型。修改既有登錄項目時為可選。

有效值為:

  • REG_SZ – 字串;Null 終止
  • REG_EXPAND_SZ – 包含未展開之環境變數的字串,例如 %APPDATA%;Null 終止
  • 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 for AutoCAD 的一部分

Owner

(可選) AcRX 服務名稱。

用於使系統變數成為唯讀狀態,且僅能由使用 acrxRegisterService() 以註冊服務名稱的應用程式修改。

Flags

(可選) 建立和修改旗標。可指定多個旗標;使用豎線號來分隔每個旗標。

支援下列旗標:

  • Create – 建立變數 (如果變數不存在的話)。(預設行為)

  • Open – 每次載入外掛程式時,以及只有當變數存在時,修改變數的值。

  • OpenOnce – 在第一次載入外掛程式時,並且僅在變數存在時修改變數的值。解除安裝並重新安裝外掛程式會導致變數的值再次變更。

  • SpacesAllowed – 允許於指令提示時按空格鍵。如果未指定,則按空格鍵的作用與按 Enter 鍵一樣。

    註: 僅與 Create 旗標搭配,且當 PrimaryType 屬性設定為 String 時使用。
  • DotIsEmpty – 允許藉由輸入 "." (句點) 做為變數的值以清除變數的值。

    註: 僅與 Create 旗標搭配,且當 PrimaryType 屬性設定為 String 時使用。
  • NoUndo – 不記錄變數的變更,而且無法使用 U 或 UNDO 指令退回。

    註: 僅與 Create 旗標搭配使用。
  • Chatty – 觸發反應器通知,即使變數的值是設定為其目前的值亦然。

    註: 僅與 Create 旗標搭配使用。
註: 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 元素。EnvironmentVariables 元素包含外掛程式應建立或修改之環境變數的定義。環境變數是儲存在 Windows 登錄中或 Mac 作業系統上的性質清單 (PLIST) 檔案中。

註: 環境變數的值一定會儲存為一個字串,而環境變數名稱需區分大小寫。
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>

變數值的運算子字首

運算子字首是用於修改載入外掛程式時變數的目前值。您可以將下表中列示的其中一個運算子字首加入至 RegistryEntrySystemVariableEnvironmentVariable 元素的 Value 屬性。

字首

描述

+ (加號)

將值加入或附加至既有變數的值。

Int16、Int32、Real:將 Value 加入至既有變數的值。

String:將 Value 附加至既有變數的值。

- (連字符號)

從既有變數的值減去或移除一個值。

Int16、Int32、Real:從既有變數的值減去 Value

String:從既有變數的值移除 Value

& (& 符號)

具有既有變數值的逐位 And 作業;僅支援數值。

| (豎線號)

具有既有變數值的逐位 Or 作業;僅支援數值。

註: 如果變數的值應以其中一個運算子字首為開頭,則在運算子之前加入反斜線。例如,如果變數的值應為 +radius,請輸入 \+radius 做為值。

以下項目一定會啟用 END、MID、CEN、NOD、QUA 與 INT 常駐式物件鎖點,並保留所有其他物件鎖點設定的現狀:

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