DocumentPaint(ElementId, Face, FamilyParameter) Method |
Paint the element's face with specified material.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 27.0.4.0 (27.0.4.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.
Exceptions| 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 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.");
}
}
}
See Also