示例#1
0
        public void MarkFrames()
        {
            UIDocument uidoc = ActiveUIDocument;
            Document   doc   = uidoc.Document;

            ElementClassFilter           f1 = new ElementClassFilter(typeof(FamilyInstance));
            StructuralMaterialTypeFilter f2 = new StructuralMaterialTypeFilter(StructuralMaterialType.Concrete);
            ElementClassFilter           f3 = new ElementClassFilter(typeof(Floor));
            ElementClassFilter           f4 = new ElementClassFilter(typeof(Wall));
            LogicalAndFilter             f5 = new LogicalAndFilter(f1, f2);
            LogicalOrFilter f6           = new LogicalOrFilter(f3, f4);
            LogicalOrFilter memberFilter = new LogicalOrFilter(f5, f6);

            FilteredElementCollector collector = new FilteredElementCollector(doc);

            collector.WherePasses(memberFilter);
            List <Element> members = collector.ToList();
            int            SN      = 1;

            using (Transaction tx = new Transaction(doc, "MarkFrames")){
                tx.Start();
                foreach (Element e in members)
                {
                    e.get_Parameter(BuiltInParameter.DOOR_NUMBER).Set("C" + SN.ToString("00"));
                    SN++;
                }
                tx.Commit();
            }
        }
示例#2
0
        public void MarkUntagedFrame()
        {
            UIDocument uidoc = ActiveUIDocument;
            Document   doc   = uidoc.Document;

            ElementClassFilter           f1 = new ElementClassFilter(typeof(FamilyInstance));
            StructuralMaterialTypeFilter f2 = new StructuralMaterialTypeFilter(StructuralMaterialType.Concrete);
            ElementClassFilter           f3 = new ElementClassFilter(typeof(Floor));
            ElementClassFilter           f4 = new ElementClassFilter(typeof(Wall));
            LogicalAndFilter             f5 = new LogicalAndFilter(f1, f2);
            LogicalOrFilter f6           = new LogicalOrFilter(f3, f4);
            LogicalOrFilter memberFilter = new LogicalOrFilter(f5, f6);

            FilteredElementCollector collector = new FilteredElementCollector(doc);

            collector.WherePasses(memberFilter);
            List <Element> members = collector.ToList();
            String         Tag     = null;

            foreach (Element e in members)
            {
                Tag = e.get_Parameter(BuiltInParameter.DOOR_NUMBER).AsString();

                if (Tag == "" || Tag == null)
                {
                    HiLighted(e.Id, uidoc, doc);
                }
                else
                {
                    UnHiLighted(e.Id, uidoc, doc);
                }

                Tag = null;
            }
        }
示例#3
0
        public void ClearMarks()
        {
            Document doc = this.ActiveUIDocument.Document;
            FilteredElementCollector     collector = new FilteredElementCollector(doc);
            ElementClassFilter           f1        = new ElementClassFilter(typeof(FamilyInstance));
            StructuralMaterialTypeFilter f2        = new StructuralMaterialTypeFilter(StructuralMaterialType.Concrete);
            ElementClassFilter           f3        = new ElementClassFilter(typeof(Floor));
            ElementClassFilter           f4        = new ElementClassFilter(typeof(Wall));
            LogicalAndFilter             f5        = new LogicalAndFilter(f1, f2);
            LogicalOrFilter f6 = new LogicalOrFilter(f3, f4);
            LogicalOrFilter f7 = new LogicalOrFilter(f5, f6);

            ICollection <Element> collection = collector.WherePasses(f7).ToElements();

            using (Transaction tx = new Transaction(doc, "CopyMarkToSN"))
            {
                tx.Start();
                foreach (Element e in collection)
                {
                    Parameter pSN = e.LookupParameter("編號");

                    if (null != pSN)
                    {
//			            Parameter pMark = e.LookupParameter("標註");
                        Parameter pMark = e.get_Parameter(BuiltInParameter.DOOR_NUMBER);
                        pMark.Set("");
                    }
                }
                tx.Commit();
            }
        }
示例#4
0
        private static readonly double density_steel     = 490.0;                            //pound per cubic foot

        private static void ExtractObjects()
        {
            StructuralMaterialTypeFilter steelFilter = new StructuralMaterialTypeFilter(StructuralMaterialType.Steel);

            _StruColumns = (new FilteredElementCollector(_doc)).WherePasses(new ElementStructuralTypeFilter(StructuralType.Column)).WherePasses(steelFilter).ToElementIds().ToList();
            _StruBeams   = (new FilteredElementCollector(_doc)).WherePasses(new ElementStructuralTypeFilter(StructuralType.Beam)).WherePasses(steelFilter).ToElementIds().ToList();
            _Braces      = (new FilteredElementCollector(_doc)).WherePasses(new ElementStructuralTypeFilter(StructuralType.Brace)).WherePasses(steelFilter).ToList();
            _maxBB       = new BoundingBoxXYZ();
        }
示例#5
0
        public void CreateNewTypes()
        {
            UIDocument uidoc = ActiveUIDocument;
            Document   doc   = uidoc.Document;

            ElementClassFilter           f1 = new ElementClassFilter(typeof(FamilyInstance));
            StructuralMaterialTypeFilter f2 = new StructuralMaterialTypeFilter(StructuralMaterialType.Concrete);
            ElementClassFilter           f3 = new ElementClassFilter(typeof(Floor));
            ElementClassFilter           f4 = new ElementClassFilter(typeof(Wall));
            LogicalAndFilter             f5 = new LogicalAndFilter(f1, f2);
            LogicalOrFilter f6           = new LogicalOrFilter(f3, f4);
            LogicalOrFilter memberFilter = new LogicalOrFilter(f5, f6);

            FilteredElementCollector collector = new FilteredElementCollector(doc);

            collector.WherePasses(memberFilter);
            List <Element> members = collector.ToList();

            using (Transaction tx = new Transaction(doc, "MarkFrames")){
                tx.Start();
                foreach (Element e in members)
                {
                    Debug.Print(string.Format(
                                    "Type '{0}-{1}' listed.",
                                    e.get_Parameter(BuiltInParameter.DOOR_NUMBER).AsString(),
                                    e.get_Parameter(BuiltInParameter.ELEM_TYPE_PARAM).AsValueString()));
                    try {
                        ElementId   eTypeId  = e.get_Parameter(BuiltInParameter.ELEM_TYPE_PARAM).AsElementId();
                        ElementType eType    = doc.GetElement(eTypeId) as ElementType;
                        ElementType newEType = eType.Duplicate(string.Format(
                                                                   "{0}-{1}",
                                                                   e.get_Parameter(BuiltInParameter.DOOR_NUMBER).AsString(),
                                                                   e.get_Parameter(BuiltInParameter.ELEM_TYPE_PARAM).AsValueString())) as ElementType;
                        e.get_Parameter(BuiltInParameter.ELEM_TYPE_PARAM).Set(newEType.Id);
                    } catch (Exception) {
                        //throw;
                    }
                }
                tx.Commit();
            }
        }
示例#6
0
        public void MarkUntagedFrame2()
        {
            UIDocument uidoc = ActiveUIDocument;
            Document   doc   = uidoc.Document;

            BuiltInCategory[] bics = new BuiltInCategory[] {
                BuiltInCategory.OST_StructuralColumns,
                BuiltInCategory.OST_StructuralFraming,
                BuiltInCategory.OST_StructuralFoundation,
                BuiltInCategory.OST_Floors,
                BuiltInCategory.OST_Ramps
            };

            IList <ElementFilter> a
                = new List <ElementFilter>(bics.Length);

            foreach (BuiltInCategory bic in bics)
            {
                a.Add(new ElementCategoryFilter(bic));
            }

            LogicalOrFilter categoryFilter
                = new LogicalOrFilter(a);

            ElementClassFilter f1 = new ElementClassFilter(typeof(FamilyInstance));
            ElementClassFilter f2 = new ElementClassFilter(typeof(Floor));


            LogicalAndFilter f3
                = new LogicalAndFilter(categoryFilter, f1);
            LogicalAndFilter f4
                = new LogicalAndFilter(categoryFilter, f2);
            //StructuralMaterialTypeFilter 會把不是OST_StructuralFraming的物件過濾掉,即使他們的材料也是Concrete!!!!
            StructuralMaterialTypeFilter f5 = new StructuralMaterialTypeFilter(StructuralMaterialType.Concrete);

            LogicalOrFilter f6
                = new LogicalOrFilter(f3, f4);
            LogicalAndFilter memberFilter
                = new LogicalAndFilter(f5, f6);


            FilteredElementCollector collector = new FilteredElementCollector(doc);

            collector.WherePasses(memberFilter);

            List <Element> members = collector.ToList();
            String         Tag     = null;

            foreach (Element e in members)
            {
                Tag = e.get_Parameter(BuiltInParameter.DOOR_NUMBER).AsString();

                if (Tag == "" || Tag == null)
                {
                    HiLighted(e.Id, uidoc, doc);
                }
                else
                {
                    UnHiLighted(e.Id, uidoc, doc);
                }

                Tag = null;
            }
        }
示例#7
0
 private static void ExtractObjects()
 {
     StructuralMaterialTypeFilter steelFilter = new StructuralMaterialTypeFilter(StructuralMaterialType.Steel);
     _StruColumns = (new FilteredElementCollector(_doc)).WherePasses(new ElementStructuralTypeFilter(StructuralType.Column)).WherePasses(steelFilter).ToElementIds().ToList();
     _StruBeams = (new FilteredElementCollector(_doc)).WherePasses(new ElementStructuralTypeFilter(StructuralType.Beam)).WherePasses(steelFilter).ToElementIds().ToList();
     _Braces = (new FilteredElementCollector(_doc)).WherePasses(new ElementStructuralTypeFilter(StructuralType.Brace)).WherePasses(steelFilter).ToList();
     _maxBB = new BoundingBoxXYZ();
 }