2

集計のために一連のモデル要素を関連付けるために使用するパラメータを追加するために、いくつかの Revit 梁および柱ファミリを修正しました。上司から、そのパラメーターの名前を変更するように依頼されました (彼が最初に提案した名前から)。

このパラメータはインスタンス パラメータであり、共有パラメータではないことに注意してください。

ここで、プログラムで 2 つのことを行いたいと考えています。最初に、そのパラメーターが新しい名前に使用されるたびに名前を変更したいと考えています。次に、そのパラメータ(新しい名前)が他の梁/柱ファミリで定義されていない場合は、これらのファミリに追加したいと思います。

次のようないくつかの方法をオンラインで調べました。

    BindingMap All_Binding = doc.ParameterBindings;
    DefinitionBindingMapIterator Iterator = All_Binding.ForwardIterator();
    Iterator.Reset(); List<string> BindingList = new List<string>();
    while (Iterator.MoveNext())
    {
        Definition def = Iterator.Key;
        ElementBinding Binders = (ElementBinding)Iterator.Current;
        BindingList.Add(def.Name);
    }
    BindingList.Sort();

これにより、プロジェクトで使用可能な共有パラメータのリストが返されます。

FamilyManager についても調査しましたが、十分に文書化されていません。私は試した:

doc.FamilyManager.RenameParameter(FamilyParameter ***** , "Label Group") ですが、FamilyManager オプションは十分に文書化されていません (リストされている「FamilyParameter」が「.rfa」内で定義されたパラメーターと一致するかどうかさえわかりません)ファイル、または完全に別のもの)。ElementName.Parameters に関連付けられたパラメーターを FamilyParameter *******として配置しようとしましたが、Visual Studio は間違った型を表示し、「ファミリー パラメーターとして」追加しようとすると、「パラメーターを暗黙的に FamilyParameter に変換できません」と表示されます。

すでにプロジェクトにあるファミリのパラメータを追加または名前変更する方法について、誰かが私に指針を提供できますか?

4

2 に答える 2

2

変更したいパラメータの名前がわかっている場合は、以下の解決策を使用できます (ファミリ モードを編集)。

Document doc = this.ActiveUIDocument.Document;

if( !doc.IsFamilyDocument )
{
    TaskDialog.Show("Error","This is not a family document");
    return;
}

//give here old and new name
string oldname = "Reverse_direction";
string newname = "Reverse direction";

FamilyManager fman = doc.FamilyManager;

if (fman.get_Parameter(oldname) != null)
{
    using (Transaction t = new Transaction(doc,"Change name"))
    {
        t.Start();
        FamilyParameter param = fman.get_Parameter(oldname);
        fman.RenameParameter(param, newname);
        t.Commit();
    }
}
于 2016-08-01T13:34:36.210 に答える
0

ドキュメント内にとどまり、そこでプロジェクトパラメータを変更しようとした方が正しい軌道に乗っていたと思います。簡単に家族に戻せるかどうかはわかりませんが。代わりに Element.ParametersMap を見て、いつでもドキュメント自体を編集しようとします。ドキュメントが開かれるたびにトリガーされ、"X_Name" を含むパラメーターを検索し、そこからパラメーターを変更するイベントについて考えることもできます。最終的には、ファミリではなくドキュメントを変更しているため、Parameter から FamilyParameter に変換しようとするとエラーが発生し続けたと思います。

ちなみに、それがうまくいくかどうか教えてください。私も今、似たようなことをしようとしています!

于 2014-07-18T11:05:43.927 に答える