GetSingleConnectedAsset Method


Gets the single connected asset attached to this asset property, if it exists.

Namespace: Autodesk.Revit.DB.Visual
Assembly: RevitAPI (in RevitAPI.dll) Version: 18.0.0.0 (18.2.0.13)
Since: 2018.1

Syntax

C#
public Asset GetSingleConnectedAsset()
Visual Basic
Public Function GetSingleConnectedAsset As Asset
Visual C++
public:
Asset^ GetSingleConnectedAsset()

Return Value

The connected asset, or a null reference ( Nothing in Visual Basic) if there is no connected asset.

Remarks

Throws if there is more than one connected asset.

Examples

Copy C#
private void SetBumpmapBitmap(Material material, String bumpmapImageFilepath)
{
   ElementId appearanceAssetId = material.AppearanceAssetId;

   AppearanceAssetElement assetElem = material.Document.GetElement(appearanceAssetId) as AppearanceAssetElement;

   using (Transaction t = new Transaction(material.Document, "Change material bumpmap bitmap"))
   {
      t.Start();

      using (AppearanceAssetEditScope editScope = new AppearanceAssetEditScope(assetElem.Document))
      {
         Asset editableAsset = editScope.Start(assetElem.Id);   // returns an editable copy of the appearance asset

         AssetProperty bumpMapProperty = editableAsset["generic_bump_map"];

         // Find the connected asset (with a shortcut to get the only one)

         Asset connectedAsset = bumpMapProperty.GetSingleConnectedAsset();

         if (connectedAsset == null)
         {
            // Add a new default connected asset
            bumpMapProperty.AddConnectedAsset("UnifiedBitmap");

            connectedAsset = bumpMapProperty.GetSingleConnectedAsset();
         }

         if (connectedAsset != null)
         {
            // Find the target asset property
            AssetPropertyString bumpmapBitmapProperty = connectedAsset["unifiedbitmap_Bitmap"] as AssetPropertyString;

            if (bumpmapBitmapProperty.IsValidValue(bumpmapImageFilepath))

               bumpmapBitmapProperty.Value = bumpmapImageFilepath;
         }


         editScope.Commit(true);
      }

      t.Commit();
   }
}
Copy VB.NET
Private Sub SetBumpmapBitmap(material As Material, bumpmapImageFilepath As [String])
    Dim appearanceAssetId As ElementId = material.AppearanceAssetId

    Dim assetElem As AppearanceAssetElement = TryCast(material.Document.GetElement(appearanceAssetId), AppearanceAssetElement)

    Using t As New Transaction(material.Document, "Change material bumpmap bitmap")
        t.Start()

        Using editScope As New AppearanceAssetEditScope(assetElem.Document)
            Dim editableAsset As Asset = editScope.Start(assetElem.Id)
            ' returns an editable copy of the appearance asset
            Dim bumpMapProperty As AssetProperty = editableAsset("generic_bump_map")

            ' Find the connected asset (with a shortcut to get the only one)


            Dim connectedAsset As Asset = bumpMapProperty.GetSingleConnectedAsset()

            If connectedAsset Is Nothing Then
                ' Add a new default connected asset
                bumpMapProperty.AddConnectedAsset("UnifiedBitmap")

                connectedAsset = bumpMapProperty.GetSingleConnectedAsset()
            End If

            If connectedAsset IsNot Nothing Then
                ' Find the target asset property
                Dim bumpmapBitmapProperty As AssetPropertyString = TryCast(connectedAsset("unifiedbitmap_Bitmap"), AssetPropertyString)

                If bumpmapBitmapProperty.IsValidValue(bumpmapImageFilepath) Then

                    bumpmapBitmapProperty.Value = bumpmapImageFilepath
                End If
            End If


            editScope.Commit(True)
        End Using

        t.Commit()
    End Using
End Sub

Exceptions

Exception Condition
Autodesk.Revit.Exceptions InvalidOperationException Asset is connected to more than one asset.

See Also