示例#1
0
        /// <summary>
        /// 检测系统中是否有默认连接项,无则进行添加
        /// </summary>
        /// <param name="src"></param>
        /// <param name="type"></param>
        protected FamilySymbol Judge_LoadDefaultFitting(MEPCurve src, MEPCurveConnectTypeENUM type)
        {
            FamilySymbol fs = null;

            switch (type)
            {
            case MEPCurveConnectTypeENUM.Elbow:    //弯头
                fs = src.GetDefaultFittingSymbol(RoutingPreferenceRuleGroupType.Elbows); break;

            case MEPCurveConnectTypeENUM.Tee:    //三通
                fs = src.GetDefaultFittingSymbol(RoutingPreferenceRuleGroupType.Junctions); break;

            case MEPCurveConnectTypeENUM.Cross:    //四通
                fs = src.GetDefaultFittingSymbol(RoutingPreferenceRuleGroupType.Crosses); break;

            case MEPCurveConnectTypeENUM.Transition:    //过渡件
                fs = src.GetDefaultFittingSymbol(RoutingPreferenceRuleGroupType.Transitions); break;

            case MEPCurveConnectTypeENUM.TakeOff:    //侧接
                fs = src.GetDefaultTakeoffFittingSymbol(); break;

            default:
                fs = null;
                break;
            }

            if (fs != null)
            {
                return(fs);
            }

            if (this.IsOnlyUseRevitDefault)
            {
                return(null);
            }

            var familyName = this.GetDefaultFittingName(src, type);

            if (familyName == null)
            {
                return(null);
            }

            fs = FamilyLoadUtils.FindFamilySymbol_SubTransaction(src.Document, familyName, null);
            if (fs == null)
            {
                return(null);
            }
            if (src is Pipe || src is Duct)
            {
                RoutingPreferenceManager rpm = src.GetMEPCurveType().RoutingPreferenceManager;
                var rule = new RoutingPreferenceRule(fs.Id, "");
                rule.AddCriterion(PrimarySizeCriterion.All());

                switch (type)
                {
                case MEPCurveConnectTypeENUM.Elbow:    //弯头
                    rpm.AddRule(RoutingPreferenceRuleGroupType.Elbows, rule); break;

                case MEPCurveConnectTypeENUM.Tee:    //三通
                    rpm.AddRule(RoutingPreferenceRuleGroupType.Junctions, rule); break;

                case MEPCurveConnectTypeENUM.Cross:    //四通
                    rpm.AddRule(RoutingPreferenceRuleGroupType.Crosses, rule); break;

                case MEPCurveConnectTypeENUM.Transition:    //过渡件
                    rpm.AddRule(RoutingPreferenceRuleGroupType.Transitions, rule); break;

                case MEPCurveConnectTypeENUM.TakeOff:    //侧接
                    rpm.AddRule(RoutingPreferenceRuleGroupType.Junctions, rule); break;

                default:
                    break;
                }
            }
            else if (src is Conduit)
            {
                Parameter param = null;

                switch (type)
                {
                case MEPCurveConnectTypeENUM.Elbow:    //弯头
                    param = (src.Document.GetElement(src.GetTypeId())).GetParameters("弯头").FirstOrDefault(); break;

                case MEPCurveConnectTypeENUM.Tee:    //三通
                    param = (src.Document.GetElement(src.GetTypeId())).GetParameters("T 形三通").FirstOrDefault(); break;

                case MEPCurveConnectTypeENUM.Cross:    //四通
                    param = (src.Document.GetElement(src.GetTypeId())).GetParameters("交叉线").FirstOrDefault(); break;

                case MEPCurveConnectTypeENUM.Transition:    //过渡件
                    param = (src.Document.GetElement(src.GetTypeId())).GetParameters("过渡件").FirstOrDefault(); break;

                default:
                    break;
                }

                if (param != null)
                {
                    param.Set(fs.Id);
                }
            }
            else if (src is CableTray)
            {
                Parameter param = null;
                var       t     = new FilteredElementCollector(src.Document).OfClass(typeof(CableTrayType)).FirstOrDefault(p => p.GetParameters("族名称").First().AsString() == "带配件的电缆桥架");
                switch (type)
                {
                case MEPCurveConnectTypeENUM.Elbow:    //弯头
                    param = t.GetParameters("水平弯头").FirstOrDefault(); break;

                case MEPCurveConnectTypeENUM.Tee:    //三通
                    param = t.GetParameters("T 形三通").FirstOrDefault(); break;

                case MEPCurveConnectTypeENUM.Cross:    //四通
                    param = t.GetParameters("交叉线").FirstOrDefault(); break;

                case MEPCurveConnectTypeENUM.Transition:    //过渡件
                    param = t.GetParameters("过渡件").FirstOrDefault(); break;

                default:
                    break;
                }

                if (param != null)
                {
                    param.Set(fs.Id);
                }
            }
            return(fs);
        }
示例#2
0
 /// <summary>
 /// 加载族 加载失败或者本文档未找到,返回null
 /// </summary>
 public static FamilySymbol LoadFamilySymbol(Document doc, string familyName, string name)
 {
     return(FamilyLoadUtils.FindFamilySymbol_SubTransaction(doc, familyName, name));
 }