AppearanceAssetElementDuplicate Method |
Duplicates the appearance asset element.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntaxpublic AppearanceAssetElement Duplicate(
string name
)
Public Function Duplicate (
name As String
) As AppearanceAssetElement
public:
AppearanceAssetElement^ Duplicate(
String^ name
)
member Duplicate :
name : string -> AppearanceAssetElement
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.
ExceptionsException | 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.
Examplepublic 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();
}
}
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
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also