static public void MyTest(Document doc)
        {
            string familyName = "Single-Flush";

            // get the family we want
            FilteredElementCollector fec = new FilteredElementCollector(doc);

            fec.OfClass(typeof(Family));

            Func <Element, bool> nameEquals = e => e.Name.Equals(familyName);

            Family f = fec.First <Element>(nameEquals) as Family;

            // get the symbols of that family
            FamilySymbolFilter fsf = new FamilySymbolFilter(f.Id);

            fec = new FilteredElementCollector(doc);
            fec.WherePasses(fsf);

            // list them

            Func <Element, string> getName = e => e.Name;

            string str = string.Join("\n",
                                     fec.Select <Element, string>(getName).ToArray <string>());

            System.Windows.Forms.MessageBox.Show(str.ToString(), "FamilySymbols of " + familyName);
        }
Example #2
0
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            var uiApp = commandData.Application;
            var uiDoc = uiApp.ActiveUIDocument;
            var app   = uiApp.Application;
            var doc   = uiDoc.Document;

            // Start code here

            // Lay nhung doi tuong dang chon

            try
            {
                var refObject = uiDoc.Selection.PickObject(ObjectType.Element);

                if (refObject != null)
                {
                    var elementId        = refObject.ElementId;
                    var element          = doc.GetElement(elementId);
                    var elementTypeId    = element.GetTypeId();
                    var elementType      = element.GetType();
                    var revitElementType = doc.GetElement(elementTypeId) as ElementType;
                    //var revitType = revitElementType.GetType();
                    var familyTypeId = revitElementType.GetTypeId();
                    var categoryName = element.Category.Name;
                    if (revitElementType is FamilySymbol)
                    {
                        var familyInstanceFilter = new FamilyInstanceFilter(doc, elementTypeId);
                        var collector            = new FilteredElementCollector(doc);

                        var elementFilter = new FamilySymbolFilter(familyTypeId);
                        var collections   = collector.WherePasses(familyInstanceFilter).ToElements();
                        TaskDialog.Show("Count Similar Object", collections.Count().ToString());
                        return(Result.Succeeded);
                    }

                    TaskDialog.Show("Warning", "Your selected object can not be count!");

                    return(Result.Failed);
                }
            }
            catch (Exception e)
            {
                message = e.Message;
                return(Result.Failed);
            }


            return(Result.Succeeded);
        }
Example #3
0
        public static FamilySymbol GetSpecialSymbol(Autodesk.Revit.DB.Document doc, int fiType)
        {
            //找family
            FilteredElementCollector families = new FilteredElementCollector(doc);
            IList <Element>          fams     = null;

            //3D Module
            if (fiType == 1)
            {
                fams = families.OfClass(typeof(Family)).
                       Where(x => (x.Name == "DoNotDeleteWarning")).ToList();
            }
            //2D Module
            if (fiType == 2)
            {
                fams = families.OfClass(typeof(Family)).
                       Where(x => (x.Name == "DoNotDeleteWarning2")).ToList();
            }
            //tempFi
            if (fiType == 4)
            {
                fams = families.OfClass(typeof(Family)).
                       Where(x => (x.Name == "TempFi")).ToList();
            }

            if (fams.Count() != 0)
            {
                //找familySymbol
                FamilySymbolFilter       filter     = new FamilySymbolFilter(fams.First().Id);
                FilteredElementCollector famSymbols = new FilteredElementCollector(doc);
                var famSyms = famSymbols.WherePasses(filter).ToElements();
                if (famSyms.Count != 0)
                {
                    FamilySymbol fs = famSyms.First() as FamilySymbol;
                    return(fs);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Example #4
0
        /// <summary>
        /// The my test.
        /// </summary>
        /// <param name="doc">
        /// The doc.
        /// </param>
        public static void MyTest(Document doc)
        {
            string familyName = "Single-Flush";

            // get the family we want
            FilteredElementCollector fec = new FilteredElementCollector(doc);

            fec.OfClass(typeof(Family));

            Family f = fec.First <Element>(e => e.Name.Equals(familyName)) as Family;

            // get the symbols of that family
            FamilySymbolFilter fsf = new FamilySymbolFilter(f.Id);

            fec = new FilteredElementCollector(doc);
            fec.WherePasses(fsf);

            string str = string.Join("\n", fec.Select <Element, string>(e => e.Name).ToArray <string>());

            MessageBox.Show(str.ToString(), @"FamilySymbols of " + familyName);
        }
        public static void MyTest( Document doc )
        {
            string familyName = "Single-Flush";

              // get the family we want
              FilteredElementCollector fec = new FilteredElementCollector( doc );
              fec.OfClass( typeof( Family ) );

              Func<Element, bool> nameEquals = e => e.Name.Equals( familyName );

              Family f = fec.First<Element>( nameEquals ) as Family;

              // get the symbols of that family
              FamilySymbolFilter fsf = new FamilySymbolFilter( f.Id );
              fec = new FilteredElementCollector( doc );
              fec.WherePasses( fsf );

              // list them

              Func<Element, string> getName = e => e.Name;

              string str = string.Join( "\n",
            fec.Select<Element, string>( getName ).ToArray<string>() );

              System.Windows.Forms.MessageBox.Show( str.ToString(), "FamilySymbols of " + familyName );
        }