Revit 2025 API
DocumentPaint(Element |
Paint the element's face with specified material.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
public void Paint( ElementId elementId, Face face, ElementId materialId )
Public Sub Paint ( elementId As ElementId, face As Face, materialId As ElementId )
public: void Paint( ElementId^ elementId, Face^ face, ElementId^ materialId )
member Paint : elementId : ElementId * face : Face * materialId : ElementId -> unit
Parameters

Exception | 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 belong to the element -or- The materialId doesn't specify a material element. -or- The element's face cannot be painted. |
ArgumentNullException | A non-optional argument was null |
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. |

// Paint any unpainted faces of a given wall public void PaintWallFaces(Wall wall, ElementId matId) { Document doc = wall.Document; GeometryElement geometryElement = wall.get_Geometry(new Options()); foreach (GeometryObject geometryObject in geometryElement) { if (geometryObject is Solid) { Solid solid = geometryObject as Solid; foreach (Face face in solid.Faces) { if (doc.IsPainted(wall.Id, face) == false) { doc.Paint(wall.Id, face, matId); } } } } }
' Paint any unpainted faces of a given wall Public Sub PaintWallFaces(wall As Wall, matId As ElementId) Dim doc As Document = wall.Document Dim geometryElement As GeometryElement = wall.Geometry(New Options()) For Each geometryObject As GeometryObject In geometryElement If TypeOf geometryObject Is Solid Then Dim solid As Solid = TryCast(geometryObject, Solid) For Each face As Face In solid.Faces If doc.IsPainted(wall.Id, face) = False Then doc.Paint(wall.Id, face, matId) End If Next End If Next 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.
public void ApplyPaintByMaterial(Document document, Wall wall, Material material) { // Before acquiring the geometry, make sure the detail level is set to 'Fine' Options geoOptions = new Options(); geoOptions.DetailLevel = ViewDetailLevel.Fine; // Obtain geometry for the given Wall element GeometryElement geoElem = wall.get_Geometry(geoOptions); // Find a face on the wall Face wallFace = null; IEnumerator<GeometryObject> geoObjectItor = geoElem.GetEnumerator(); while (geoObjectItor.MoveNext()) { // need to find a solid first Solid theSolid = geoObjectItor.Current as Solid; if (null != theSolid) { // Examine faces of the solid to find one with at least // one region. Then take the geometric face of that region. foreach (Face face in theSolid.Faces) { if (face.HasRegions) { wallFace = face.GetRegions()[0]; break; } } } } if (null == wallFace) { TaskDialog.Show("Failure", "Could not find a face to paint on the given wall."); return; } // Paint material to the wall face (modification must be inside a transaction) using (Transaction transaction = new Transaction(document, "Painting a wall")) { transaction.Start(); document.Paint(wall.Id, wallFace, material.Id); transaction.Commit(); } // For illustration purposes only, check if the painted material indeed got applied bool isPainted = document.IsPainted(wall.Id, wallFace); if (isPainted) { ElementId paintedMatId = document.GetPaintedMaterial(wall.Id, wallFace); if (paintedMatId == material.Id) { TaskDialog.Show("Painting material", "Wall painted successfully."); } } }
Public Sub ApplyPaintByMaterial(document As Document, wall As Wall, material As Material) ' Before acquiring the geometry, make sure the detail level is set to 'Fine' Dim geoOptions As New Options() geoOptions.DetailLevel = ViewDetailLevel.Fine ' Obtain geometry for the given Wall element Dim geoElem As GeometryElement = wall.Geometry(geoOptions) ' Find a face on the wall Dim wallFace As Face = Nothing Dim geoObjectItor As IEnumerator(Of GeometryObject) = geoElem.GetEnumerator() While geoObjectItor.MoveNext() ' need to find a solid first Dim theSolid As Solid = TryCast(geoObjectItor.Current, Solid) If theSolid IsNot Nothing Then ' Examine faces of the solid to find one with at least ' one region. Then take the geometric face of that region. For Each face As Face In theSolid.Faces If face.HasRegions Then wallFace = face.GetRegions()(0) Exit For End If Next End If End While If wallFace Is Nothing Then TaskDialog.Show("Failure", "Could not find a face to paint on the given wall.") Return End If ' Paint material to the wall face (modification must be inside a transaction) Using transaction As New Transaction(document, "Painting a wall") transaction.Start() document.Paint(wall.Id, wallFace, material.Id) transaction.Commit() End Using ' For illustration purposes only, check if the painted material indeed got applied Dim isPainted As Boolean = document.IsPainted(wall.Id, wallFace) If isPainted Then Dim paintedMatId As ElementId = document.GetPaintedMaterial(wall.Id, wallFace) If paintedMatId = material.Id Then TaskDialog.Show("Painting material", "Wall 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