예제 #1
0
        public static object Wrap(Autodesk.Revit.DB.Panel ele, bool isRevitOwned)
        {
            if (AdaptiveComponentInstanceUtils.IsAdaptiveFamilySymbol(ele.Symbol))
            {
                return(AdaptiveComponent.FromExisting(ele, isRevitOwned));
            }

            return(CurtainPanel.FromExisting(ele, isRevitOwned));
        }
예제 #2
0
        /// <summary>
        ///get curtain panel from element
        /// </summary>
        /// <param name="panelElement"></param>

        internal static CurtainPanel ByElement(CurtainPanel panelElement)
        {
            var elementAsPanel = panelElement.InternalElement as Autodesk.Revit.DB.Panel;

            if (elementAsPanel == null)
            {
                throw new Exception("Curtain Panel should represent Revit panel");
            }
            return(new CurtainPanel(elementAsPanel));
        }
예제 #3
0
        /// <summary>
        ///get curtain panel from element
        /// </summary>
        /// <param name="panelElement"></param>

        internal static CurtainPanel ByElement(CurtainPanel panelElement)
        {
            var elementAsPanel = panelElement.InternalElement as Autodesk.Revit.DB.Panel;

            if (elementAsPanel == null)
            {
                throw new Exception(Properties.Resources.CurtainPanelShouldRepresentRevitPanel);
            }
            return(new CurtainPanel(elementAsPanel));
        }
예제 #4
0
        public List <Element> GetPanels()
        {
            var panelIds  = InternalCurtainGrid.GetPanelIds();
            var panelEnum = panelIds.GetEnumerator();
            var panels    = new List <Element>();

            for (; panelEnum.MoveNext();)
            {
                ElementId idPanel = panelEnum.Current;
                var       panel   = DocumentManager.Instance.CurrentDBDocument.GetElement(idPanel);
                if (!(panel is Panel))
                {
                    continue;
                }
                panels.Add(CurtainPanel.FromExisting(panel as Panel, true));
            }
            return(panels);
        }
예제 #5
0
        /// <summary>
        ///get all panels of curtain wall, system or slope glazing roof
        /// </summary>
        /// <param name="hostingElement"></param>
        public static CurtainPanel[] ByElement(Element hostingElement)
        {
            CurtainGridSet thisSet = CurtainGrid.AllCurtainGrids(hostingElement.InternalElement);
            var            result  = new List <CurtainPanel>();

            var enumGrid = thisSet.GetEnumerator();

            for (; enumGrid.MoveNext();)
            {
                var grid   = (Autodesk.Revit.DB.CurtainGrid)enumGrid.Current;
                var ids    = grid.GetPanelIds();
                var idEnum = ids.GetEnumerator();
                for (; idEnum.MoveNext();)
                {
                    var idPanel = idEnum.Current;
                    var panel   = DocumentManager.Instance.CurrentDBDocument.GetElement(idPanel);
                    result.Add(CurtainPanel.FromExisting(panel as Autodesk.Revit.DB.Panel, true));
                }
            }
            return(result.ToArray());
        }
예제 #6
0
파일: Mullion.cs 프로젝트: hipigod/Dynamo
        public CurtainPanel[] SupportedPanels()
        {
            var elementAsMullion = InternalElement as Autodesk.Revit.DB.Mullion;

            if (elementAsMullion == null)
            {
                throw new Exception("Mullion should represent Revit's Mullion");
            }

            var host = elementAsMullion.Host;

            //var hostingGrid = Panel.ByElement(UnknownElement.FromExisting(host));

            var panels = CurtainPanel.ByElement(UnknownElement.FromExisting(host));

            var result = new List <CurtainPanel>();

            var thisCurve = this.LocationCurve;

            int numberPanels = panels.Length;

            for (int index = 0; index < numberPanels; index++)
            {
                var panelAtIndex = panels[index] as CurtainPanel;
                if (panelAtIndex == null)
                {
                    continue;
                }
                var  bounds     = panelAtIndex.Boundaries;
                var  enumBounds = bounds.GetEnumerator();
                bool neighbor   = false;
                for (; enumBounds.MoveNext() && !neighbor;)
                {
                    var polycrv = enumBounds.Current as PolyCurve;
                    if (polycrv == null)
                    {
                        continue;
                    }
                    var bndCrvs = polycrv.Curves();
                    var enumCrv = bndCrvs.GetEnumerator();
                    for (; enumCrv.MoveNext();)
                    {
                        var crv = enumCrv.Current as Autodesk.DesignScript.Geometry.Curve;
                        if (crv == null)
                        {
                            continue;
                        }
                        var midPoint = crv.PointAtParameter(0.5);
                        if (midPoint.DistanceTo(thisCurve) < 1.0e-7)
                        {
                            neighbor = true;
                            break;
                        }
                    }
                }
                if (neighbor)
                {
                    result.Add(panelAtIndex);
                }
            }
            return(result.ToArray());
        }
예제 #7
0
      /// <summary>
      ///get curtain panel from element  
      /// </summary>
      /// <param name="panelElement"></param>

      internal static CurtainPanel ByElement(CurtainPanel panelElement)
      {
         var elementAsPanel = panelElement.InternalElement as Autodesk.Revit.DB.Panel;
         if (elementAsPanel == null)
            throw new Exception("Curtain Panel should represent Revit panel");
         return new CurtainPanel(elementAsPanel);
      }
예제 #8
0
 public static CurtainPanel Wrap(Autodesk.Revit.DB.Panel ele, bool isRevitOwned)
 {
     return(CurtainPanel.FromExisting(ele, isRevitOwned));
 }