Exemplo n.º 1
0
        static public bool IsHorizontal(Edge e)
        {
            XYZ p = e.Evaluate(0);
            XYZ q = e.Evaluate(1);

            return(IsHorizontal(q - p));
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 private static Autodesk.DesignScript.Geometry.Curve InternalConvert(Autodesk.Revit.DB.Edge geom)
 {
     return((Autodesk.DesignScript.Geometry.Curve)geom.AsCurve().Convert());
 }