Calculates and returns the intersection between a curve and this solid.
Namespace: Autodesk.Revit.DBAssembly: RevitAPI (in RevitAPI.dll) Version: 21.0.0.0 (21.1.1.109)
Since:
2013
Syntax
Return Value
The intersection results.
Examples
CopyC#
private void FindColumnRebarIntersections(Document document, FamilyInstance column)
{
double totalRebarLengthInColumn = 0;
RebarHostData rebarHostData = RebarHostData.GetRebarHostData(column);
if (rebarHostData == null)
{
return;
}
IList<Rebar> rebars = rebarHostData.GetRebarsInHost();
if (rebars.Count == 0)
{
return;
}
Options geomOptions = new Options();
geomOptions.ComputeReferences = true;
geomOptions.DetailLevel = ViewDetailLevel.Fine;
GeometryElement elemGeometry = column.get_Geometry(geomOptions);
foreach (GeometryObject elemPrimitive in elemGeometry)
{
GeometryInstance gInstance = elemPrimitive as GeometryInstance;
if (gInstance == null)
{
continue;
}
GeometryElement instGeometry = gInstance.GetInstanceGeometry();
foreach (GeometryObject instPrimitive in instGeometry)
{
Solid solid = instPrimitive as Solid;
if (solid == null)
{
continue;
}
SolidCurveIntersectionOptions intersectOptions = new SolidCurveIntersectionOptions();
foreach (Rebar rebar in rebars)
{
bool selfIntersection = false;
bool suppresHooks = false;
bool suppresBends = false;
IList<Curve> curves = rebar.GetCenterlineCurves(selfIntersection, suppresHooks, suppresBends, MultiplanarOption.IncludeOnlyPlanarCurves, 0);
foreach (Curve curve in curves)
{
SolidCurveIntersection intersection = solid.IntersectWithCurve(curve, intersectOptions);
for (int segment = 0; segment <= intersection.SegmentCount - 1; segment++)
{
Curve curveInside = intersection.GetCurveSegment(segment);
double rebarLengthInColumn = curveInside.Length;
totalRebarLengthInColumn = totalRebarLengthInColumn + rebarLengthInColumn;
}
}
}
}
}
}
CopyVB.NET
Private Sub FindColumnRebarIntersections(document As Document, column As FamilyInstance)
Dim totalRebarLengthInColumn As Double = 0
Dim rebarHostData__1 As RebarHostData = RebarHostData.GetRebarHostData(column)
If rebarHostData__1 Is Nothing Then
Return
End If
Dim rebars As IList(Of Rebar) = rebarHostData__1.GetRebarsInHost()
If rebars.Count = 0 Then
Return
End If
Dim geomOptions As New Options()
geomOptions.ComputeReferences = True
geomOptions.DetailLevel = ViewDetailLevel.Fine
Dim elemGeometry As GeometryElement = column.Geometry(geomOptions)
For Each elemPrimitive As GeometryObject In elemGeometry
Dim gInstance As GeometryInstance = TryCast(elemPrimitive, GeometryInstance)
If gInstance Is Nothing Then
Continue For
End If
Dim instGeometry As GeometryElement = gInstance.GetInstanceGeometry()
For Each instPrimitive As GeometryObject In instGeometry
Dim solid As Solid = TryCast(instPrimitive, Solid)
If solid Is Nothing Then
Continue For
End If
Dim intersectOptions As New SolidCurveIntersectionOptions()
For Each rebar As Rebar In rebars
Dim selfIntersection As Boolean = False
Dim suppresHooks As Boolean = False
Dim suppresBends As Boolean = False
Dim curves As IList(Of Curve) = rebar.GetCenterlineCurves(selfIntersection, suppresHooks, suppresBends, MultiplanarOption.IncludeOnlyPlanarCurves, 0)
For Each curve As Curve In curves
Dim intersection As SolidCurveIntersection = solid.IntersectWithCurve(curve, intersectOptions)
For segment As Integer = 0 To intersection.SegmentCount - 1
Dim curveInside As Curve = intersection.GetCurveSegment(segment)
Dim rebarLengthInColumn As Double = curveInside.Length
totalRebarLengthInColumn = totalRebarLengthInColumn + rebarLengthInColumn
Next
Next
Next
Next
Next
End Sub
Exceptions
See Also