定義ファイルを使用すると、共有パラメータにアクセスできます。定義ファイルにアクセスし、そのパラメータを取得するには、次の手順を実行します。
Autodesk.Revit.DB 名前空間の次のクラスとメソッドを使用すると、Revit API を使用して共有パラメータにアクセスできます。
定義ファイルはテキスト ファイルであるため、手動で作成したり、コードを使用して作成することができます。
コード領域 22-3: 共有パラメータ ファイルを作成 |
private void CreateExternalSharedParamFile(string sharedParameterFile) { System.IO.FileStream fileStream = System.IO.File.Create(sharedParameterFile); fileStream.Close(); } |
Revit では多くの共有パラメータ ファイルを作成できるため、アクセスしたいファイルや外部パラメータを明確に識別する必要があります。次の 2 つの手順は、既存の共有パラメータ ファイルへのアクセス方法を示しています。
共有パラメータ ファイルのパスを次のコードにあるように設定し、Application.OpenSharedParameterFile()メソッドを呼び出します。
コード領域 22-4: 外部パラメータ ファイルから定義ファイルを取得 |
private DefinitionFile SetAndOpenExternalSharedParamFile(Autodesk.Revit.ApplicationServices.Application application, string sharedParameterFile) { // set the path of shared parameter file to current Revit application.SharedParametersFilename = sharedParameterFile; // open the file return application.OpenSharedParameterFile(); } |
次の例は、パラメータ エントリを移動し、その結果をメッセージ ボックスで表示する方法を示しています。
コード領域 22-5: パラメータ エントリを移動 |
private void ShowDefinitionFileInfo(DefinitionFile myDefinitionFile) { StringBuilder fileInformation = new StringBuilder(500); // get the file name fileInformation.AppendLine("File Name: " + myDefinitionFile.Filename); // iterate the Definition groups of this file foreach (DefinitionGroup myGroup in myDefinitionFile.Groups) { // get the group name fileInformation.AppendLine("Group Name: " + myGroup.Name); // iterate the difinitions foreach (Definition definition in myGroup.Definitions) { // get definition name fileInformation.AppendLine("Definition Name: " + definition.Name); } } TaskDialog.Show("Revit",fileInformation.ToString()); } |
次の例は、パラメータ定義グループの所有者を変更する方法を示します。
コード領域 22-6: パラメータ定義グループの所有者を変更 |
private void ReadEditExternalParam(DefinitionFile file) { // get ExternalDefinition from shared parameter file DefinitionGroups myGroups = file.Groups; DefinitionGroup myGroup = myGroups.get_Item("MyGroup"); if (myGroup != null) { ExternalDefinition myExtDef = myGroup.Definitions.get_Item("MyParam") as ExternalDefinition; if (myExtDef != null) { DefinitionGroup newGroup = myGroups.get_Item("AnotherGroup"); if (newGroup != null) { // change the OwnerGroup of the ExternalDefinition myExtDef.OwnerGroup = newGroup; } } } } |