定義ファイルを使用すると、共有パラメータにアクセスできます。
定義ファイルにアクセスし、そのパラメータを取得するには、次の手順を実行します。
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;
}
}
}
}
|