タグ

タグ

タグは、図面要素を識別するための注釈です。この API は、IndependentTag と RoomTag クラスを公開して、Revit アプリケーションで使用されるほとんどのタグを網羅しています。RoomTag の詳細は、「部屋」(「Revit Architecture」セクション)を参照してください。

注: Revit でタグ要素、およびその他の特定のキーノートタグなど、梁システム タグ、電子回路シンボル(Revit MEP)などを表します。Revit 内部のコードでは、特定のタグにはIndependentTag から作成した対応するクラスがあります。結果として、特定の機能は、API によって公開されていないため、NewTag()メソッドを使用して作成できません。これらは、次のカテゴリで区別できます。

表 37: タグ名とカテゴリ

タグ名

BuiltInCategory

キーノート タグ

OST_KeynoteTags

梁システム タグ

OST_BeamSystemTags

電子回路タグ

OST_ElectricalCircuitTags

スパン方向タグ

OST_SpanDirectionSymbol

パス配筋スパン タグ

OST_PathReinSpanSymbol

鉄筋システム スパン タグ

OST_IOSRebarSystemSpanSymbolCtrl

ファミリ ライブラリにある各カテゴリには既に定義済みのタグが付いています。一部のタグは、既定の Revit アプリケーションで自動的にロードされ、その他のタグは手動でロードされます。IndependentTag オブジェクトは、[カテゴリ別]オプションを使用して作成されている場合は、ホスト要素に基づいて異なるカテゴリを返します。たとえば、Wall および Floor の IndependentTag は、それぞれ OST_WallTags と OST_FloorTags です。

タグが[マルチカテゴリ]や[マテリアル]スタイルを使用して作成された場合は、カテゴリ はそれぞれ OST_MultiCategoryTags と OST_MaterialTags になります。

注: NewTag()は、2D ビューまたはロックされた 3D ビューでのみ使用でき、そうでない場合は例外がスローされることに注意してください。次のコードは、IndependentTag の作成例です。レベル ビューがアクティブ ビューである場合に実行します。
注: IndependentTag で直接表示される文字は変更できません。タグ付けされている要素のファミリ タイプのタグ文字の配置に使用されるパラメータを変更する必要があります。次の例では、この設定は Revit UI のファミリ エディタで変更できますが、このパラメータは「タイプ マーク」です。

コード領域 16-5: IndependentTag を作成

private IndependentTag CreateIndependentTag(Autodesk.Revit.DB.Document document, Wall wall)
{
    // make sure active view is not a 3D view
    Autodesk.Revit.DB.View view = document.ActiveView;
            
    // define tag mode and tag orientation for new tag
    TagMode tagMode = TagMode.TM_ADDBY_CATEGORY;
    TagOrientation tagorn = TagOrientation.Horizontal;

    // Add the tag to the middle of the wall
    LocationCurve wallLoc = wall.Location as LocationCurve;
    XYZ wallStart = wallLoc.Curve.GetEndPoint(0);
    XYZ wallEnd = wallLoc.Curve.GetEndPoint(1);
    XYZ wallMid = wallLoc.Curve.Evaluate(0.5, true);

    IndependentTag newTag = document.Create.NewTag(view, wall, true, tagMode, tagorn, wallMid);
    if (null == newTag)
    {
        throw new Exception("Create IndependentTag Failed.");
    }

    // newTag.TagText is read-only, so we change the Type Mark type parameter to 
    // set the tag text.  The label parameter for the tag family determines
    // what type parameter is used for the tag text.

    WallType type = wall.WallType;

    Parameter foundParameter = type.LookupParameter("Type Mark");
    bool result = foundParameter.Set("Hello");

    // set leader mode free
    // otherwise leader end point move with elbow point

    newTag.LeaderEndCondition = LeaderEndCondition.Free;
    XYZ elbowPnt = wallMid + new XYZ(5.0, 5.0, 0.0);
    newTag.LeaderElbow = elbowPnt;
    XYZ headerPnt = wallMid + new XYZ(10.0, 10.0, 0.0);
    newTag.TagHeadPosition = headerPnt;

    return newTag;
}

図 74: サンプル コードを使用した IndependentTag の作成