Duplicates the appearance asset element.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 22.0.0.0 (22.1.0.0)
Since:
2018.1
Syntax
Parameters
- name
- Type: System..::..String
Name of the new appearance asset element - this name must be correctly structured for Revit use and not duplicate the name
of another appearance asset in the document.
Return Value
The new AppearanceAssetElement.
Remarks
Examples
CopyC#
public void DuplicateAndModifyMaterial(Material material)
{
ElementId appearanceAssetId = material.AppearanceAssetId;
AppearanceAssetElement assetElem = material.Document.GetElement(appearanceAssetId) as AppearanceAssetElement;
ElementId duplicateAssetElementId = ElementId.InvalidElementId;
using (Transaction t = new Transaction(material.Document, "Duplicate Red Carpet Material"))
{
t.Start();
Material duplicateMaterial = material.Duplicate("Blue Carpet");
AppearanceAssetElement duplicateAssetElement = assetElem.Duplicate("Blue Carpet");
duplicateMaterial.AppearanceAssetId = duplicateAssetElement.Id;
duplicateAssetElementId = duplicateAssetElement.Id;
t.Commit();
}
using (Transaction t2 = new Transaction(material.Document, "Change blue carpet material"))
{
t2.Start();
using (AppearanceAssetEditScope editScope = new AppearanceAssetEditScope(assetElem.Document))
{
Asset editableAsset = editScope.Start(duplicateAssetElementId);
AssetPropertyString descriptionProperty =
editableAsset.FindByName("description") as AssetPropertyString;
descriptionProperty.Value = "blue carpet";
AssetPropertyDoubleArray4d genericDiffuseProperty = editableAsset.FindByName("generic_diffuse") as AssetPropertyDoubleArray4d;
genericDiffuseProperty.SetValueAsColor(new Color(0x00, 0x00, 0xFF));
Asset connectedAsset = genericDiffuseProperty.GetSingleConnectedAsset();
AssetPropertyString bitmapProperty = connectedAsset.FindByName("unifiedbitmap_Bitmap") as AssetPropertyString;
bitmapProperty.Value = "Finishes.Flooring.Carpet.4.png";
editScope.Commit(true);
}
t2.Commit();
}
}
CopyVB.NET
Public Sub DuplicateAndModifyMaterial(material As Material)
Dim appearanceAssetId As ElementId = material.AppearanceAssetId
Dim assetElem As AppearanceAssetElement = TryCast(material.Document.GetElement(appearanceAssetId), AppearanceAssetElement)
Dim duplicateAssetElementId As ElementId = ElementId.InvalidElementId
Using t As New Transaction(material.Document, "Duplicate Red Carpet Material")
t.Start()
Dim duplicateMaterial As Material = material.Duplicate("Blue Carpet")
Dim duplicateAssetElement As AppearanceAssetElement = assetElem.Duplicate("Blue Carpet")
duplicateMaterial.AppearanceAssetId = duplicateAssetElement.Id
duplicateAssetElementId = duplicateAssetElement.Id
t.Commit()
End Using
Using t2 As New Transaction(material.Document, "Change blue carpet material")
t2.Start()
Using editScope As New AppearanceAssetEditScope(assetElem.Document)
Dim editableAsset As Asset = editScope.Start(duplicateAssetElementId)
Dim descriptionProperty As AssetPropertyString = TryCast(editableAsset.FindByName("description"), AssetPropertyString)
descriptionProperty.Value = "blue carpet"
Dim genericDiffuseProperty As AssetPropertyDoubleArray4d = TryCast(editableAsset.FindByName("generic_diffuse"), AssetPropertyDoubleArray4d)
genericDiffuseProperty.SetValueAsColor(New Color(&H0, &H0, &HFF))
Dim connectedAsset As Asset = genericDiffuseProperty.GetSingleConnectedAsset()
Dim bitmapProperty As AssetPropertyString = TryCast(connectedAsset.FindByName("unifiedbitmap_Bitmap"), AssetPropertyString)
bitmapProperty.Value = "Finishes.Flooring.Carpet.4.png"
editScope.Commit(True)
End Using
t2.Commit()
End Using
End Sub
Exceptions
See Also