RVTDocs.com

AssetProperty.GetSingleConnectedAsset

Method
Description:
Gets the single connected asset attached to this asset property, if it exists.
Remarks:
Throws if there is more than one connected asset.
Syntax
Examples
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.FindByName("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.FindByName("unifiedbitmap_Bitmap") as AssetPropertyString;

            if (bumpmapBitmapProperty.IsValidValue(bumpmapImageFilepath))

               bumpmapBitmapProperty.Value = bumpmapImageFilepath;
         }


         editScope.Commit(true);
      }

      t.Commit();
   }
}
Exceptions
Exception Condition
InvalidOperationException Asset is connected to more than one asset.