Duplicates the appearance asset element.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 26.4.0.0 (26.4.0.0)
Syntax
C#
public AppearanceAssetElement Duplicate(
string name
)
Parameters
- name 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
AppearanceAssetElement
The new AppearanceAssetElement.
Exceptions
| Exception | Condition |
|---|
| ArgumentException |
name cannot include prohibited characters, such as "{, }, [, ], |, ;, less-than sign, greater-than sign, ?, `, ~".
-or-
The given value for name is already in use as an appearance asset name.
|
| ArgumentNullException |
A non-optional argument was null
|
Remarks
The asset contained by this element will be duplicated as well. Changes to the duplicated element or its asset do not affect the original element and asset.
Example
C#
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();
}
}
VB
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
See Also
Reference