DirectShape Class

This class is used to store externally created geometric shapes. Primary intended use is for importing shapes from other data formats such as IFC or STEP. A DirectShape object may be assigned a category. That will affect how that object is displayed in Revit.
Inheritance Hierarchy
SystemObject
  Autodesk.Revit.DBElement
    Autodesk.Revit.DBDirectShape

Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)
Syntax
public class DirectShape : Element

The DirectShape type exposes the following members.

Properties
 NameDescription
Public propertyApplicationDataId A text string that identifies the data to the creating application.
Public propertyApplicationId A text string that identifies the creating application.
Public propertyAssemblyInstanceId The id of the assembly instance to which the element belongs.
(Inherited from Element)
Public propertyCode exampleBoundingBoxRetrieves a box that circumscribes all geometry of the element.
(Inherited from Element)
Public propertyCategoryRetrieves a Category object that represents the category or sub category in which the element resides.
(Inherited from Element)
Public propertyCode exampleCreatedPhaseId Id of a Phase at which the Element was created.
(Inherited from Element)
Public propertyCode exampleDemolishedPhaseId Id of a Phase at which the Element was demolished.
(Inherited from Element)
Public propertyCode exampleDesignOptionReturns the design option to which the element belongs.
(Inherited from Element)
Public propertyDocumentReturns the Document in which the Element resides.
(Inherited from Element)
Public propertyCode exampleGeometryRetrieves the geometric representation of the element.
(Inherited from Element)
Public propertyGroupId The id of the group to which an element belongs.
(Inherited from Element)
Public propertyCode exampleId A unique identifier for an Element in an Autodesk Revit project.
(Inherited from Element)
Public propertyIsModifiable Identifies if the element is modifiable.
(Inherited from Element)
Public propertyIsTransient Indicates whether an element is transient or permanent.
(Inherited from Element)
Public propertyIsValidObject Specifies whether the .NET object represents a valid Revit entity.
(Inherited from Element)
Public propertyLevelId The id of the level associated with the element.
(Inherited from Element)
Public propertyCode exampleLocationThis property is used to find the physical location of an element within a project.
(Inherited from Element)
Public propertyNameA human readable name for the Element.
(Inherited from Element)
Public propertyOwnerViewId The id of the view that owns the element.
(Inherited from Element)
Public propertyCode exampleParameterBuiltInParameterRetrieves a parameter from the element given a parameter id.
(Inherited from Element)
Public propertyParameterDefinitionRetrieves a parameter from the element based on its definition.
(Inherited from Element)
Public propertyParameterGuidRetrieves a parameter from the element given a GUID for a shared parameter.
(Inherited from Element)
Public propertyCode exampleParametersRetrieves a set containing all of the parameters that are contained within the element.
(Inherited from Element)
Public propertyParametersMapRetrieves a map containing all of the parameters that are contained within the element.
(Inherited from Element)
Public propertyPinned Identifies if the element has been pinned to prevent changes.
(Inherited from Element)
Public propertyTypeId Element id of a DirectShapeType object that holds properties to be shared by this element. Optional.
Public propertyCode exampleUniqueId A stable unique identifier for an element within the document.
(Inherited from Element)
Public propertyVersionGuid Get the element version Guid.
(Inherited from Element)
Public propertyViewSpecific Identifies if the element is owned by a view.
(Inherited from Element)
Public propertyWorksetId Get Id of the Workset which owns the element.
(Inherited from Element)
Top
Methods
 NameDescription
Public methodAddExternallyTaggedGeometry Adds the externally tagged geometry object to the DirectShape.
Public methodAddReferenceCurve(Curve) Adds a reference curve to the DirectShape.
Public methodAddReferenceCurve(Curve, DirectShapeReferenceOptions) Adds a reference curve to the DirectShape.
Public methodAddReferencePlane(Plane) Adds a reference plane to the DirectShape. The reference plane can either be bounded or unbounded.
Public methodAddReferencePlane(Plane, BoundingBoxUV) Adds a reference plane to the DirectShape. The reference plane can either be bounded or unbounded.
Public methodAddReferencePlane(Plane, DirectShapeReferenceOptions) Adds a reference plane to the DirectShape. The reference plane can either be bounded or unbounded.
Public methodAddReferencePlane(Plane, BoundingBoxUV, DirectShapeReferenceOptions) Adds a reference plane to the DirectShape. The reference plane can either be bounded or unbounded.
Public methodAddReferencePoint(XYZ) Adds a reference point to the DirectShape.
Public methodAddReferencePoint(XYZ, DirectShapeReferenceOptions) Adds a reference point to the DirectShape.
Public methodAppendShape(IListGeometryObject) Appends the collection of GeometryObjects into the model shape representation stored in this DirectShape.
Public methodAppendShape(ShapeBuilder) Appends shape built by the supplied ShapeBuilderObject to shape representation stored in this DirectShape. The data stored in the supplied ShapeBuilder object will be cleared.
Public methodAppendShape(IListGeometryObject, DirectShapeTargetViewType) Appends the collection of GeometryObjects into the model or view specific shape representation stored in this DirectShape. Passing DirectShapeTargetViewType.Default as view type will cause the model shape to be updated.
Public methodAreOptionsValid Validates that the given DirectShapeOptions are allowed for this particular DirectShape.
Public methodAreOptionsValidForTransientDirectShape Validates that the given DirectShapeOptions are allowed if this DirectShape is transient.
Public methodArePhasesModifiable Returns true if the properties CreatedPhaseId and DemolishedPhaseId can be modified for this Element.
(Inherited from Element)
Public methodAreValidDirectShapeReferenceOptions Validates that the input DirectShapeReferenceOptions are suitable for creating a direct shape reference object. If the options specify an ExternalGeometryId, it must not correspond to any existing reference object belonging to the DirectShape.
Public methodCanBeHiddenIndicates if the element can be hidden in the view.
(Inherited from Element)
Public methodCanBeLocked Identifies if the element can be locked.
(Inherited from Element)
Public methodCanCreateParts Indicates if it is possible to create parts from this DirectShape element.
Public methodCanDeleteSubelement Checks if given subelement can be removed from the element.
(Inherited from Element)
Public methodCanHaveTypeAssigned Identifies if the element can have a type assigned.
(Inherited from Element)
Public methodChangeTypeId(ElementId) Changes the type of the element.
(Inherited from Element)
Public methodStatic memberCreateElement Creates a DirectShape object and adds it to document.
Public methodStatic memberCreateElementInstance Creates a DirectShape object and adds it to document.
Public methodStatic memberCreateGeometryInstance Creates a copy of a definition shape that was created earlier.
Public methodDeleteEntity Deletes the existing entity created by %schema% in the element
(Inherited from Element)
Public methodDeleteSubelement Removes a subelement from the element.
(Inherited from Element)
Public methodDeleteSubelements Removes the subelements from the element.
(Inherited from Element)
Public methodDispose
(Inherited from Element)
Public methodEqualsDetermines whether the specified object is equal to the current object.
(Inherited from Object)
Public methodEvaluateAllParameterValues Evaluates all the parameters' values of the element.
(Inherited from Element)
Public methodEvaluateParameterValues Evaluate the parameters' values of the element on the given parameter ID set.
(Inherited from Element)
Public methodGetDependentElements Get all elements that, from a logical point of view, are the children of this Element.
(Inherited from Element)
Public methodGetEntity Returns the existing entity corresponding to the Schema if it has been saved in the Element, or an invalid entity otherwise.
(Inherited from Element)
Public methodGetEntitySchemaGuids Returns the Schema guids of any Entities stored in this element.
(Inherited from Element)
Public methodGetExternalFileReference Gets information pertaining to the external file referenced by the element.
(Inherited from Element)
Public methodGetExternallyTaggedGeometry Gets the externally tagged geometry by its external ID that is stored in this DirectShape.
Public methodGetExternallyTaggedReference Retrieve a Reference to reference geometry of the DirectShape that is associated with a particular ExternalGeometryId.
Public methodGetExternalResourceReference Gets the ExternalResourceReference associated with a specified external resource type.
(Inherited from Element)
Public methodGetExternalResourceReferenceExpanded Gets the collection of ExternalResourceReference associated with a specified external resource type.
(Inherited from Element)
Public methodGetExternalResourceReferences Gets the map of the external resource references referenced by the element.
(Inherited from Element)
Public methodGetExternalResourceReferencesExpanded Gets the expanded map of the external resource references referenced by the element.
(Inherited from Element)
Public methodCode exampleGetGeneratingElementIds Returns the ids of the element(s) that generated the input geometry object.
(Inherited from Element)
Public methodGetGeometryObjectFromReference Retrieve one geometric primitive contained in the element given a reference.
(Inherited from Element)
Public methodGetHashCodeServes as the default hash function.
(Inherited from Object)
Public methodGetMaterialArea Gets the area of the material with the given id.
(Inherited from Element)
Public methodGetMaterialIds Gets the element ids of all materials present in the element.
(Inherited from Element)
Public methodGetMaterialVolume Gets the volume of the material with the given id.
(Inherited from Element)
Public methodGetMonitoredLinkElementIds Provides the link instance IDs when the element is monitoring.
(Inherited from Element)
Public methodGetMonitoredLocalElementIds Provides the local element IDs when the element is monitoring.
(Inherited from Element)
Public methodGetOptions Gets a copy of the current options for this DirectShape.
Public methodGetOrderedParameters Gets the parameters associated to the element in order.
(Inherited from Element)
Public methodGetParameterRetrieves a parameter from the element given identifier.
(Inherited from Element)
Public methodGetParameterFormatOptions Returns a FormatOptions override for the element Parameter, or a default FormatOptions if no override exists.
(Inherited from Element)
Public methodGetParametersRetrieves the parameters from the element via the given name.
(Inherited from Element)
Public methodGetPhaseStatus Gets the status of a given element in the input phase
(Inherited from Element)
Public methodGetSubelements Returns the collection of element subelements.
(Inherited from Element)
Public methodGetTypeGets the Type of the current instance.
(Inherited from Object)
Public methodCode exampleGetTypeId Returns the identifier of this element's type.
(Inherited from Element)
Public methodGetValidTypes Obtains a set of types that are valid for this element.
(Inherited from Element)
Public methodHasExternalGeometry Checks whether the externally tagged geometry is already present in this DirectShape.
Public methodHasExternallyTaggedReference Checks if the externally tagged reference is already present in this DirectShape.
Public methodHasPhases Returns true if this Element has the properties CreatedPhaseId and DemolishedPhaseId.
(Inherited from Element)
Public methodIsCreatedPhaseOrderValid Returns true if createdPhaseId and demolishedPhaseId are in order.
(Inherited from Element)
Public methodIsDemolishedPhaseOrderValid Returns true if createdPhaseId and demolishedPhaseId are in order.
(Inherited from Element)
Public methodIsExternalFileReference Determines whether this Element represents an external file.
(Inherited from Element)
Public methodIsHiddenIdentifies if the element has been permanently hidden in the view.
(Inherited from Element)
Public methodIsMonitoringLinkElement Indicate whether an element is monitoring any elements in any linked models.
(Inherited from Element)
Public methodIsMonitoringLocalElement Indicate whether an element is monitoring other local elements.
(Inherited from Element)
Public methodIsPhaseCreatedValid Returns true if createdPhaseId is an allowed value for the property CreatedPhaseId in this Element.
(Inherited from Element)
Public methodIsPhaseDemolishedValid Returns true if demolishedPhaseId is an allowed value for the property DemolishedPhaseId in this Element.
(Inherited from Element)
Public methodStatic memberIsSupportedDocument Tests whether a DirectShape or a DirectShapeType may be created in this document.
Public methodStatic memberIsValidCategoryId Test the category id to make sure the category is allowed for a DirectShape or DirectShapeType.
Public methodIsValidGeometry Validates geometry to be stored in a DirectShape. Suitable geometry validation is performed. Additionally, the geometry must make sense as a shape representation for the category assigned to this DirectShape object.
Public methodStatic memberIsValidReferenceCurve Validates that the input curve is suitable for creating a direct shape reference curve. Bounded and unbounded lines are accepted. Other bounded and unbounded curve types with natural bounds are accepted if they are not closed. Unbounded periodic curves are not allowed.
Public methodStatic memberIsValidReferencePlaneBoundingBoxUV Validates that the input BoundingBoxUV is suitable for bounding a reference plane surface. The input BoundingBoxUV must be set and not degenerate.
Public methodIsValidShape(ExternallyTaggedGeometryObject) Validates shape to be stored in a DirectShape.
Public methodIsValidShape(IListGeometryObject) Validates shape to be stored in a DirectShape. Supercedes and extends IsValidGeometry().
Public methodIsValidShape(IListGeometryObject, DirectShapeTargetViewType) Validates view-specific shape to be stored in a DirectShape. Expects a non-default view type.
Public methodIsValidType(ElementId) Checks if given type is valid for this element.
(Inherited from Element)
Public methodIsValidTypeId Tests the type id to make sure it satisfies the following conditions
  • It is a valid element id.
  • It corresponds to a valid DirectShapeType.
  • The DirectShapeType has the same category assigned.
Additionally, this functions tests that the current type id in this DirectShape is invalid. The type id is initialized to invalidElementId by the create functions. Once it is set, it may no longer be changed.
Public methodIsValidUsage Validates that the ExternallyTaggedGeometryObject's usage is set to an allowed value for a DirectShape.
Public methodLookupParameterAttempts to find a parameter on the element which has the given name.
(Inherited from Element)
Public methodRefersToExternalResourceReference Determines whether this Element uses external resources associated with a specified external resource type.
(Inherited from Element)
Public methodRefersToExternalResourceReferences Determines whether this Element uses external resources.
(Inherited from Element)
Public methodRemoveAllReferenceObjects Removes all reference objects (if any) from the DirectShape.
Public methodRemoveExternallyTaggedGeometry Removes the externally tagged geometry object by its external ID from this DirectShape.
Public methodRemoveReferenceObject(ExternalGeometryId) Removes any reference object associated with the provided ExternalGeometryId from the DirectShape. Nothing is done if no reference object has the given external ID or if the external ID is an empty string.
Public methodRemoveReferenceObject(String) Removes any reference objects with the given name from the DirectShape. Nothing is done if no reference objects have the given name or if the name is the empty string.
Public methodResetExternallyTaggedGeometry Removes all of the externally tagged geometry in this DirectShape.
Public methodSetEntity Stores the entity in the element. If an Entity described by the same Schema already exists, it is overwritten.
(Inherited from Element)
Public methodSetName Sets the name for the DirectShape element.
Public methodSetOptions Sets the options to use for this DirectShape.
Public methodSetShape(IListGeometryObject) Builds the shape of this object from the supplied collection of GeometryObjects. The objects are copied. If the new shape is identical to the old one, the old shape will be kept.
Public methodSetShape(ShapeBuilder) Sets the shape of this object to the one accumulated in the supplied Builder object. If the new shape is identical to the old one, the old shape will be kept.
Public methodSetShape(IListGeometryObject, DirectShapeTargetViewType) Builds the shape of this object from the supplied collection of GeometryObjects. The objects are copied. If the new shape is identical to the old one, the old shape will be kept.
Public methodSetTypeId Sets the DirectShapeType for the DirectShape element.
Public methodToStringReturns a string that represents the current object.
(Inherited from Object)
Public methodUpdateExternallyTaggedGeometry Updates the externally tagged geometry object in the DirectShape.
Top
Remarks
DirectShape is not a replacement for "real" Wall, Roof, Window, etc. It would typically be used where there is not enough information to create, e.g., a Wall, or full functionality of a Wall object is not needed. Some category-specific functionality may be available. If you need to modify a shape held by a DirectShape object, use Revit Geometry API, and then store the modified shape back to the DirectShape object.
Example
// Create a DirectShape Sphere
public void CreateSphereDirectShape(Document doc)
{
    List<Curve> profile = new List<Curve>();

    // first create sphere with 2' radius
    XYZ center = XYZ.Zero;
    double radius = 2.0;    
    XYZ profile00 = center;
    XYZ profilePlus = center + new XYZ(0, radius, 0);
    XYZ profileMinus = center - new XYZ(0, radius, 0);

    profile.Add(Line.CreateBound(profilePlus, profileMinus));
    profile.Add(Arc.Create(profileMinus, profilePlus, center + new XYZ(radius, 0, 0)));

    CurveLoop curveLoop = CurveLoop.Create(profile);
    SolidOptions options = new SolidOptions(ElementId.InvalidElementId, ElementId.InvalidElementId);

    Frame frame = new Frame(center, XYZ.BasisX, -XYZ.BasisZ, XYZ.BasisY);
    if (Frame.CanDefineRevitGeometry(frame) == true)
    {
        Solid sphere = GeometryCreationUtilities.CreateRevolvedGeometry(frame, new CurveLoop[] { curveLoop }, 0, 2 * Math.PI, options);
        using (Transaction t = new Transaction(doc, "Create sphere direct shape"))
        {
            t.Start();
            // create direct shape and assign the sphere shape
            DirectShape ds = DirectShape.CreateElement(doc, new ElementId(BuiltInCategory.OST_GenericModel));

            ds.ApplicationId = "Application id";
            ds.ApplicationDataId = "Geometry object id";
            ds.SetShape(new GeometryObject[] { sphere });
            t.Commit();
        }
    }
}
See Also