Click or drag to resize
Brep Class
Boundary Representation. A surface or polysurface along with trim curve information.
Inheritance Hierarchy

Namespace: Rhino.Geometry
Assembly: RhinoCommon (in RhinoCommon.dll) Version: 5.1.50000.0 (5.0.20693.0)
Syntax
[SerializableAttribute]
public class Brep : GeometryBase

The Brep type exposes the following members.

Constructors
  NameDescription
Public methodBrep
Initializes a new empty brep
Protected methodBrep(SerializationInfo, StreamingContext)
Protected constructor used in serialization.
Top
Properties
  NameDescription
Public propertyCurves2D
Parameter space trimming curves (used by trims)
Public propertyCurves3D
Pointers to 3d curves (used by edges)
Public propertyEdges
Gets the brep edges list accessor.
Public propertyFaces
Gets the brep faces list accessor.
Public propertyHasBrepForm
Returns true if the Brep.TryConvertBrep function will be successful for this object
(Inherited from GeometryBase.)
Public propertyHasUserData
Gets true if this class has any custom information attached to it through UserData.
(Inherited from CommonObject.)
Public propertyIsDeformable
true if object can be accurately modified with "squishy" transformations like projections, shears, and non-uniform scaling.
(Inherited from GeometryBase.)
Public propertyIsDocumentControlled
If true this object may not be modified. Any properties or functions that attempt to modify this object when it is set to "IsReadOnly" will throw a NotSupportedException.
(Inherited from GeometryBase.)
Public propertyIsManifold
Gets a value indicating whether or not the Brep is manifold. Non-Manifold breps have at least one edge that is shared among three or more faces.
Public propertyCode exampleIsSolid
Determines whether this brep is a solid, or a closed oriented manifold.
Public propertyIsSurface
Returns true if the Brep has a single face and that face is geometrically the same as the underlying surface. I.e., the face has trivial trimming.

In this case, the surface is the first face surface. The flag Brep.Faces[0].OrientationIsReversed records the correspondence between the surface's natural parametric orientation and the orientation of the Brep.

trivial trimming here means that there is only one loop curve in the brep and that loop curve is the same as the underlying surface boundary.

Public propertyIsValid
Tests an object to see if it is valid.
(Inherited from CommonObject.)
Public propertyLoops
Gets the brep loop list accessor.
Public propertyObjectType
Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.
(Inherited from GeometryBase.)
Public propertySolidOrientation
Gets the solid orientation state of this Brep.
Public propertySurfaces
Parametric surfaces used by faces
Public propertyTrims
Gets the brep trims list accessor.
Public propertyUserData
List of custom information that is attached to this class.
(Inherited from CommonObject.)
Public propertyUserDictionary
Dictionary of custom information attached to this class. The dictionary is actually user data provided as an easy to use sharable set of information.
(Inherited from CommonObject.)
Public propertyUserStringCount
Gets the amount of user strings.
(Inherited from GeometryBase.)
Public propertyVertices
Top
Methods
  NameDescription
Public methodAddEdgeCurve
Add a 3d curve used by the brep edges
Public methodAddSurface
Adds a 3D surface used by BrepFace.
Public methodAddTrimCurve
Add a 2d curve used by the brep trims
Public methodAppend
Appends a copy of another brep to this and updates indices of appended brep parts. Duplicates are not removed
Public methodCapPlanarHoles
Returns a new Brep that is equivalent to this Brep with all planar holes capped.
Public methodClosestPoint(Point3d)
Finds a point on the brep that is closest to testPoint.
Public methodClosestPoint(Point3d, Point3d, ComponentIndex, Double, Double, Double, Vector3d)
Finds a point on a brep that is closest to testPoint.
Public methodCompact
Deletes any unreferenced objects from arrays, reindexes as needed, and shrinks arrays to minimum required size. Uses CUllUnused* members to delete any unreferenced objects from arrays.
Public methodComponentIndex
If this piece of geometry is a component in something larger, like a BrepEdge in a Brep, then this function returns the component index.
(Inherited from GeometryBase.)
Protected methodConstructConstObject
Assigns a parent object and a subobject index to this.
(Inherited from CommonObject.)
Public methodStatic memberCopyTrimCurves
Copy all trims from a Brep face onto a surface.
Public methodStatic memberCreateBooleanDifference(Brep, Brep, Double)
Compute the Solid Difference of two Breps.
Public methodStatic memberCode exampleCreateBooleanDifference(IEnumerableBrep, IEnumerableBrep, Double)
Compute the Solid Difference of two sets of Breps.
Public methodStatic memberCreateBooleanIntersection(Brep, Brep, Double)
Compute the Solid Intersection of two Breps.
Public methodStatic memberCreateBooleanIntersection(IEnumerableBrep, IEnumerableBrep, Double)
Compute the Solid Intersection of two sets of Breps.
Public methodStatic memberCreateBooleanUnion
Compute the Boolean Union of a set of Breps.
Public methodStatic memberCreateContourCurves(Brep, Plane)
Constructs the contour curves for a brep, using a slicing plane.
Public methodStatic memberCode exampleCreateContourCurves(Brep, Point3d, Point3d, Double)
Constructs the contour curves for a brep at a specified interval.
Public methodStatic memberCode exampleCreateEdgeSurface
Constructs a coons patch from 2, 3, or 4 curves.
Public methodStatic memberCode exampleCreateFromBox(BoundingBox)
Constructs new brep that matches a bounding box.
Public methodStatic memberCreateFromBox(Box)
Constructs new brep that matches an aligned box.
Public methodStatic memberCreateFromBox(IEnumerablePoint3d)
Constructs new brep from 8 corner points.
Public methodStatic memberCreateFromCone
Constructs a Brep representation of the cone with a single face for the cone, an edge along the cone seam, and vertices at the base and apex ends of this seam edge. The optional cap is a single face with one circular edge starting and ending at the base vertex.
Public methodStatic memberCreateFromCornerPoints(Point3d, Point3d, Point3d, Double)
Makes a brep with one face.
Public methodStatic memberCreateFromCornerPoints(Point3d, Point3d, Point3d, Point3d, Double)
make a Brep with one face.
Public methodStatic memberCreateFromCylinder
Constructs a Brep definition of a cylinder.
Public methodStatic memberCode exampleCreateFromLoft
Constructs one or more Breps by lofting through a set of curves.
Public methodStatic memberCreateFromLoftRebuild
Constructs one or more Breps by lofting through a set of curves. Input for the loft is simplified by rebuilding to a specified number of control points.
Public methodStatic memberCreateFromLoftRefit
Constructs one or more Breps by lofting through a set of curves. Input for the loft is simplified by refitting to a specified tolerance.
Public methodStatic memberCreateFromMesh
Create a brep representation of a mesh
Public methodStatic memberCreateFromOffsetFace
Offsets a face including trim information to create a new brep.
Public methodStatic memberCode exampleCreateFromRevSurface
Constructs a brep form of a surface of revolution.
Public methodStatic memberCreateFromSphere
Constructs a Brep definition of a sphere.
Public methodStatic memberCreateFromSurface
Constructs a Brep from a surface. The resulting Brep has an outer boundary made from four trims. The trims are ordered so that they run along the south, east, north, and then west side of the surface's parameter space.
Public methodStatic memberCreateFromSweep(Curve, Curve, Boolean, Double)
General 1 rail sweep. If you are not producing the sweep results that you are after, then use the SweepOneRail class with options to generate the swept geometry
Public methodStatic memberCreateFromSweep(Curve, IEnumerableCurve, Boolean, Double)
General 1 rail sweep. If you are not producing the sweep results that you are after, then use the SweepOneRail class with options to generate the swept geometry
Public methodStatic memberCreateFromSweep(Curve, Curve, Curve, Boolean, Double)
General 2 rail sweep. If you are not producing the sweep results that you are after, then use the SweepTwoRail class with options to generate the swept geometry
Public methodStatic memberCreateFromSweep(Curve, Curve, IEnumerableCurve, Boolean, Double)
General 2 rail sweep. If you are not producing the sweep results that you are after, then use the SweepTwoRail class with options to generate the swept geometry
Public methodStatic memberCreateFromTaperedExtrude
Extrude a curve to a taper making a brep (potentially more than 1)
Public methodStatic memberCreatePatch(IEnumerableGeometryBase, Surface, Double)
Constructs a brep patch.

This is the simple version of fit that uses a specified starting surface.

Public methodStatic memberCreatePatch(IEnumerableGeometryBase, Int32, Int32, Double)
Constructs a brep patch.

This is the simple version of fit that uses a plane with u x v spans. It makes a plane by fitting to the points from the input geometry to use as the starting surface. The surface has the specified u and v span count.

Public methodStatic memberCreatePatch(IEnumerableGeometryBase, Surface, Int32, Int32, Boolean, Boolean, Double, Double, Double, Boolean, Double)
Constructs a brep patch using all controls
Public methodStatic memberCreatePipe(Curve, Double, Boolean, PipeCapMode, Boolean, Double, Double)
Creates a single walled pipe
Public methodStatic memberCreatePipe(Curve, IEnumerableDouble, IEnumerableDouble, Boolean, PipeCapMode, Boolean, Double, Double)
Creates a single walled pipe
Public methodStatic memberCreatePlanarBreps(Curve)
Constructs a set of planar breps as outlines by the loops.
Public methodStatic memberCreatePlanarBreps(IEnumerableCurve)
Constructs a set of planar breps as outlines by the loops.
Public methodStatic memberCreatePlanarBreps(CurveList)
Constructs a set of planar Breps as outlines by the loops.
Public methodStatic memberCreateShell
Creates a hollowed out shell from a solid Brep. Function only operates on simple, solid, manifold Breps.
Public methodStatic memberCreateSolid
Constructs closed polysurfaces from surfaces and polysurfaces that bound a region in space.
Public methodStatic memberCreateTrimmedSurface
Constructs a Brep using the trimming information of a brep face and a surface. Surface must be roughly the same shape and in the same location as the trimming brep face.
Public methodCullUnused2dCurves
Culls 3d curves not referenced by an edge.
Public methodCullUnused3dCurves
Culls 2d curves not referenced by a trim.
Public methodCullUnusedEdges
Culls edges with m_edge_index == -1.
Public methodCullUnusedFaces
Culls faces with m_face_index == -1.
Public methodCullUnusedLoops
Culls loops with m_loop_index == -1.
Public methodCullUnusedSurfaces
Culls surfaces not referenced by a face.
Public methodCullUnusedTrims
Culls trims with m_trim_index == -1.
Public methodCullUnusedVertices
Culls vertices with m_vertex_index == -1.
Public methodDispose
Actively reclaims unmanaged resources that this instance uses.
(Inherited from CommonObject.)
Protected methodDispose(Boolean)
For derived class implementers.

This method is called with argument true when class user calls Dispose(), while with argument false when the Garbage Collector invokes the finalizer, or Finalize() method.

You must reclaim all used unmanaged resources in both cases, and can use this chance to call Dispose on disposable fields if the argument is true.

Also, you must call the base virtual method within your overriding method.

(Inherited from CommonObject.)
Public methodDuplicate
Copies this brep.
(Overrides GeometryBaseDuplicate.)
Public methodDuplicateBrep
Same as Duplicate, but already performs a cast to a brep.

This cast always succeeds.

Public methodDuplicateEdgeCurves
Duplicate all the edges of this Brep.
Public methodCode exampleDuplicateEdgeCurves(Boolean)
Duplicate edges of this Brep.
Public methodDuplicateNakedEdgeCurves
Duplicate naked edges of this Brep
Public methodDuplicateShallow
Constructs a light copy of this object. By "light", it is meant that the same underlying data is used until something is done to attempt to change it. For example, you could have a shallow copy of a very heavy mesh object and the same underlying data will be used when doing things like inspecting the number of faces on the mesh. If you modify the location of one of the mesh vertices, the shallow copy will create a full duplicate of the underlying mesh data and the shallow copy will become a deep copy.
(Inherited from GeometryBase.)
Public methodDuplicateSubBrep
Copy a subset of this Brep into another Brep.
Public methodDuplicateVertices
Duplicate all the corner vertices of this Brep.
Public methodEnsurePrivateCopy
If you want to keep a copy of this class around by holding onto it in a variable after a command completes, call EnsurePrivateCopy to make sure that this class is not tied to the document. You can call this function as many times as you want.
(Inherited from CommonObject.)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Passively reclaims unmanaged resources when the class user did not explicitly call Dispose().
(Inherited from CommonObject.)
Public methodFlip
Reverses entire brep orientation of all faces.
Public methodGetArea
Compute the Area of the Brep. If you want proper Area data with moments and error information, use the AreaMassProperties class.
Public methodGetArea(Double, Double)
Compute the Area of the Brep. If you want proper Area data with moments and error information, use the AreaMassProperties class.
Public methodCode exampleGetBoundingBox(Boolean)
Boundingbox solver. Gets the world axis aligned boundingbox for the geometry.
(Inherited from GeometryBase.)
Public methodCode exampleGetBoundingBox(Plane)
Aligned Boundingbox solver. Gets the plane aligned boundingbox.
(Inherited from GeometryBase.)
Public methodGetBoundingBox(Transform)
Aligned Boundingbox solver. Gets the world axis aligned boundingbox for the transformed geometry.
(Inherited from GeometryBase.)
Public methodGetBoundingBox(Plane, Box)
Aligned Boundingbox solver. Gets the plane aligned boundingbox.
(Inherited from GeometryBase.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetObjectData
Populates a System.Runtime.Serialization.SerializationInfo with the data needed to serialize the target object.
(Inherited from CommonObject.)
Public methodGetRegions
Gets an array containing all regions in this brep.
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodGetUserString
Gets user string from this geometry.
(Inherited from GeometryBase.)
Public methodGetUserStrings
Gets a copy of all (user key string, user value string) pairs attached to this geometry.
(Inherited from GeometryBase.)
Public methodGetVolume
Compute the Volume of the Brep. If you want proper Volume data with moments and error information, use the VolumeMassProperties class.
Public methodGetVolume(Double, Double)
Compute the Volume of the Brep. If you want proper Volume data with moments and error information, use the VolumeMassProperties class.
Public methodGetWireframe
Constructs all the Wireframe curves for this Brep.
Public methodIsDuplicate
See if this and other are same brep geometry.
Public methodIsPointInside
Determines if point is inside Brep. This question only makes sense when the brep is a closed manifold. This function does not not check for closed or manifold, so result is not valid in those cases. Intersects a line through point with brep, finds the intersection point Q closest to point, and looks at face normal at Q. If the point Q is on an edge or the intersection is not transverse at Q, then another line is used.
Public methodIsValidGeometry
Expert user function that tests the brep to see if its geometry information is valid. The value of brep.IsValidTopology() must be true before brep.IsValidGeometry() can be safely called.
Public methodIsValidTolerancesAndFlags
Expert user function that tests the brep to see if its tolerances and flags are valid. The values of brep.IsValidTopology() and brep.IsValidGeometry() must be true before brep.IsValidTolerancesAndFlags() can be safely called.
Public methodIsValidTopology
Tests the brep to see if its topology information is valid.
Public methodIsValidWithLog
Determines if an object is valid. Also provides a report on errors if this object happens not to be valid.
(Inherited from CommonObject.)
Public methodJoin
If any edges of this brep overlap edges of otherBrep, merge a copy of otherBrep into this brep joining all edges that overlap within tolerance.
Public methodStatic memberJoinBreps
Joins the breps in the input array at any overlapping edges to form as few as possible resulting breps. There may be more than one brep in the result array.
Public methodJoinNakedEdges
Joins naked edge pairs within the same brep that overlap within tolerance.
Public methodMakeDeformable
If possible, converts the object into a form that can be accurately modified with "squishy" transformations like projections, shears, an non-uniform scaling.
(Inherited from GeometryBase.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodMemoryEstimate
Computes an estimate of the number of bytes that this object is using in memory.
(Inherited from GeometryBase.)
Public methodStatic memberMergeBreps
Combines two or more breps into one. A merge is like a boolean union that keeps the inside pieces. This function creates non-manifold Breps which in general are unusual in Rhino. You may want to consider using JoinBreps or CreateBooleanUnion functions instead.
Public methodMergeCoplanarFaces
Merges adjacent coplanar faces into single faces.
Protected methodNonConstOperation
For derived classes implementers.

Defines the necessary implementation to free the instance from being const.

(Inherited from CommonObject.)
Protected methodOnSwitchToNonConst
Is called when a non-const operation occurs.
(Inherited from GeometryBase.)
Public methodRebuildTrimsForV2
No support is available for this function.

Expert user function used by MakeValidForV2 to convert trim curves from one surface to its NURBS form. After calling this function, you need to change the surface of the face to a NurbsSurface.

Public methodRotate
Rotates the object about the specified axis. A positive rotation angle results in a counter-clockwise rotation about the axis (right hand rule).
(Inherited from GeometryBase.)
Public methodScale
Scales the object by the specified factor. The scale is centered at the origin.
(Inherited from GeometryBase.)
Public methodSetTrimIsoFlags
This function can be used to set the BrepTrim::m_iso flag. It is intended to be used when creating a Brep from a definition that does not include compatible parameter space type information.
Public methodSetUserString
Attach a user string (key,value combination) to this geometry.
(Inherited from GeometryBase.)
Public methodSetVertices
This function can be used to compute vertex information for a b-rep when everything but the Vertices array is properly filled in. It is intended to be used when creating a Brep from a definition that does not include explicit vertex information.
Public methodSplit(Brep, Double)
Splits a Brep into pieces.
Public methodSplit(Brep, Double, Boolean)
Splits a Brep into pieces.
Public methodStandardize
Standardizes all trims, edges, and faces in the brep. After standardizing, there may be unused curves and surfaces in the brep. Call Brep.Compact to remove these unused curves and surfaces.
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Public methodTransform
Transforms the geometry. If the input Transform has a SimilarityType of OrientationReversing, you may want to consider flipping the transformed geometry after calling this function when it makes sense. For example, you may want to call Flip() on a Brep after transforming it.
(Inherited from GeometryBase.)
Public methodTranslate(Vector3d)
Translates the object along the specified vector.
(Inherited from GeometryBase.)
Public methodTranslate(Double, Double, Double)
Translates the object along the specified vector.
(Inherited from GeometryBase.)
Public methodTrim(Brep, Double)
Trims a brep with an oriented cutter. The parts of the brep that lie inside (opposite the normal) of the cutter are retained while the parts to the outside (in the direction of the normal) are discarded. If the Cutter is closed, then a connected component of the Brep that does not intersect the cutter is kept if and only if it is contained in the inside of cutter. That is the region bounded by cutter opposite from the normal of cutter, If cutter is not closed all these components are kept.
Public methodTrim(Plane, Double)
Trims a Brep with an oriented cutter. The parts of Brep that lie inside (opposite the normal) of the cutter are retained while the parts to the outside ( in the direction of the normal ) are discarded. A connected component of Brep that does not intersect the cutter is kept if and only if it is contained in the inside of Cutter. That is the region bounded by cutter opposite from the normal of cutter, or in the case of a Plane cutter the halfspace opposite from the plane normal.
Public methodStatic memberTryConvertBrep
Attempts to convert a generic Geometry object into a Brep.
Top
See Also