DocumentPaint(ElementId, Face, FamilyParameter) Method |
Paint the element's face with specified material.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntaxpublic void Paint(
ElementId elementId,
Face face,
FamilyParameter familyParameter
)
Public Sub Paint (
elementId As ElementId,
face As Face,
familyParameter As FamilyParameter
)
public:
void Paint(
ElementId^ elementId,
Face^ face,
FamilyParameter^ familyParameter
)
member Paint :
elementId : ElementId *
face : Face *
familyParameter : FamilyParameter -> unit
Parameters
- elementId ElementId
-
The element that the face belongs to.
- face Face
-
The painted element's face.
- familyParameter FamilyParameter
-
The family parameter associated with a material.
ExceptionsException | Condition |
---|
ArgumentException |
The element elementId does not exist in the document.
-or-
The element materialId does not exist in the document.
-or-
The face doesn't belongs to the element.
-or-
The family parameter doesn't specify a material element.
-or-
The element's face cannot be painted.
|
ArgumentNullException |
A non-optional argument was NULL
|
InvalidOperationException |
This document is not modifiable.
-or-
This operation is valid only in family.
|
ModificationForbiddenException |
The document is in failure mode: an operation has failed,
and Revit requires the user to either cancel the operation
or fix the problem (usually by deleting certain elements).
-or-
The document is being loaded, or is in the midst of another
sensitive process.
|
ModificationOutsideTransactionException |
The document has no open transaction.
|
Examplepublic void ApplyPaintByMaterialParameter(Document document, Extrusion extrusion, Material material)
{
Face geoFace = null;
using (Transaction transaction = new Transaction(document, "Painting"))
{
transaction.Start();
FamilyManager famMgr = document.FamilyManager;
if (famMgr.Types.Size == 0)
{
FamilyType createdType = famMgr.NewType("New_type");
famMgr.CurrentType = createdType;
}
FamilyParameter materialParam =
famMgr.AddParameter("Material_Para", GroupTypeId.Materials, SpecTypeId.Reference.Material, true);
famMgr.Set(materialParam, material.Id);
Options geoOptions = new Options();
geoOptions.DetailLevel = ViewDetailLevel.Fine;
GeometryElement geoElem = extrusion.get_Geometry(geoOptions);
IEnumerator<GeometryObject> geoObjectItor = geoElem.GetEnumerator();
while (geoObjectItor.MoveNext())
{
Solid theSolid = geoObjectItor.Current as Solid;
if (null != theSolid)
{
foreach (Face face in theSolid.Faces)
{
geoFace = face;
break;
}
}
}
if (null == geoFace)
{
TaskDialog.Show("Failure", "Could not find a face to paint.");
transaction.RollBack();
return;
}
document.Paint(extrusion.Id, geoFace, materialParam);
transaction.Commit();
}
bool isPainted = document.IsPainted(extrusion.Id, geoFace);
if (isPainted)
{
ElementId paintedMatId = document.GetPaintedMaterial(extrusion.Id, geoFace);
if (paintedMatId == material.Id)
{
TaskDialog.Show("Painting material", "Face painted successfully.");
}
}
}
Public Sub ApplyPaintByMaterialParameter(document As Document, extrusion As Extrusion, material As Material)
Dim geoFace As Face = Nothing
Using transaction As New Transaction(document, "Painting")
transaction.Start()
Dim famMgr As FamilyManager = document.FamilyManager
If famMgr.Types.Size = 0 Then
Dim createdType As FamilyType = famMgr.NewType("New_type")
famMgr.CurrentType = createdType
End If
Dim materialParam As FamilyParameter = famMgr.AddParameter("Material_Para", GroupTypeId.Materials, SpecTypeId.Reference.Material, True)
famMgr.[Set](materialParam, material.Id)
Dim geoOptions As New Options()
geoOptions.DetailLevel = ViewDetailLevel.Fine
Dim geoElem As GeometryElement = extrusion.Geometry(geoOptions)
Dim geoObjectItor As IEnumerator(Of GeometryObject) = geoElem.GetEnumerator()
While geoObjectItor.MoveNext()
Dim theSolid As Solid = TryCast(geoObjectItor.Current, Solid)
If theSolid IsNot Nothing Then
For Each face As Face In theSolid.Faces
geoFace = face
Exit For
Next
End If
End While
If geoFace Is Nothing Then
TaskDialog.Show("Failure", "Could not find a face to paint.")
transaction.RollBack()
Return
End If
document.Paint(extrusion.Id, geoFace, materialParam)
transaction.Commit()
End Using
Dim isPainted As Boolean = document.IsPainted(extrusion.Id, geoFace)
If isPainted Then
Dim paintedMatId As ElementId = document.GetPaintedMaterial(extrusion.Id, geoFace)
If paintedMatId = material.Id Then
TaskDialog.Show("Painting material", "Face painted successfully.")
End If
End If
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