static public bool IsHorizontal(Edge e) { XYZ p = e.Evaluate(0); XYZ q = e.Evaluate(1); return(IsHorizontal(q - p)); }
/// <summary> /// Find the first intersection with a face /// </summary> /// <param name="references"></param> /// <returns></returns> private static ReferenceWithContext FindClosestReference(IEnumerable <ReferenceWithContext> references) { ReferenceWithContext rClosest = null; var face_prox = Double.PositiveInfinity; var edge_prox = Double.PositiveInfinity; foreach (ReferenceWithContext r in references) { var reference = r.GetReference(); var referenceElement = DocumentManager.Instance.CurrentDBDocument.GetElement(reference); var referenceGeometryObject = referenceElement.GetGeometryObjectFromReference(reference); Face currFace = null; currFace = referenceGeometryObject as Autodesk.Revit.DB.Face; Autodesk.Revit.DB.Edge edge = null; edge = referenceGeometryObject as Autodesk.Revit.DB.Edge; if (currFace != null) { if ((r.Proximity < face_prox) && (r.Proximity > Double.Epsilon)) { rClosest = r; face_prox = Math.Abs(r.Proximity); } } else if (edge != null) { if ((r.Proximity < edge_prox) && (r.Proximity > Double.Epsilon)) { edge_prox = Math.Abs(r.Proximity); } } } if (edge_prox <= face_prox) { // stop bouncing if there is an edge at least as close as the nearest face - there is no single angle of reflection for a ray striking a line //m_outputInfo.Add("there is an edge at least as close as the nearest face - there is no single angle of reflection for a ray striking a line"); rClosest = null; } return(rClosest); }
private static Autodesk.DesignScript.Geometry.Curve InternalConvert(Autodesk.Revit.DB.Edge geom) { return((Autodesk.DesignScript.Geometry.Curve)geom.AsCurve().Convert()); }