//分区
        private void SetSubRegionParameter(Element ele)
        {
            if (null == ele)
            {
                return;
            }

            Parameter param = ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.SubDistrict));

            if (null != param)
            {
                if (string.IsNullOrEmpty(param.AsString()))
                {
                    bool successed = param.Set("A");
                    if (!successed)
                    {
                        string errorType = MtCommon.GetStringValue(ErrorType.SetParamterFailed) + MtCommon.GetStringValue(MtGlobals.Parameters.SubDistrict);
                        AddListViewErrorData(ele, errorType);
                    }
                }
            }
            else
            {
                string errorType = MtCommon.GetStringValue(ErrorType.NoParameter) + MtCommon.GetStringValue(MtGlobals.Parameters.SubDistrict);
                AddListViewErrorData(ele, errorType);
            }
        }
 private void CheckPipeParameters(Element ele)
 {
     GetParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Campus));
     GetParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Building));
     GetParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.MtLevel));
     GetParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.SubDistrict));
 }
        void EncodeEquipment()
        {
            ElementClassFilter       instanceFilter = new ElementClassFilter(typeof(FamilyInstance));
            ElementClassFilter       hostFilter     = new ElementClassFilter(typeof(HostObject));
            LogicalOrFilter          andFilter      = new LogicalOrFilter(instanceFilter, hostFilter);
            FilteredElementCollector collector      = new FilteredElementCollector(m_uIDocument.Document);

            collector.WherePasses(andFilter);

            foreach (var ele in collector)
            {
                var catogary   = ele.Category.Name;
                var familyName = MtCommon.GetElementFamilyName(m_uIDocument.Document, ele);
                if (familyName.Contains("风盘") || familyName.Contains("风机盘管"))
                {
                    continue;
                }
                if (catogary.Equals(MtGlobals.EquipmentCategory) || catogary.Equals(MtGlobals.ElecticCategory))
                {
                    //temp
                    var length = familyName.Length;
                    MtCommon.SetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.EquipmentCode),
                                             length <= 5 ? familyName.Substring(0, length - 1) : familyName.Substring(0, 5));
                }
            }
        }
        public void CheckPipeBasicInfo()
        {
            ElementClassFilter instanceFilter = new ElementClassFilter(typeof(FamilyInstance));
            ElementClassFilter hostFilter     = new ElementClassFilter(typeof(HostObject));
            LogicalOrFilter    andFilter      = new LogicalOrFilter(instanceFilter, hostFilter);

            FilteredElementCollector collector = new FilteredElementCollector(m_uIDocument.Document);

            collector.WherePasses(andFilter);

            foreach (var ele in collector)
            {
                CheckPipeParameters(ele);//是否有基础信息

                string category = ele.Category.Name;
                if (category.Equals(MtGlobals.PipeCategory) || category.Equals(MtGlobals.DustCategory))
                {
                    GetParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.VerticalPipe)); //检测竖管是否有参数
                }
                else if (category.Equals(MtGlobals.EquipmentCategory))
                {
                    if (ele.Name.Contains("风盘") || ele.Name.Contains("风机盘管"))
                    {
                        continue;
                    }
                    GetParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.EquipmentCode)); //设备是否有编码
                }
            }
            //MtCommon.IsolateElements(m_uIDocument.Document, m_ltBasicInfoErrors.Select(k => k.Key).ToList());
        }
        private void SetLevelParameter(Element ele, bool isPipe = false, bool isEnVersion = false)
        {
            if (ele == null)
            {
                return;
            }
            string level = string.Empty;

            if (isEnVersion)
            {
                if (isPipe)
                {
                    level = GetPipeLevelParamEN(ele);
                }
                else
                {
                    level = GetBuildingLevelParamEN(ele);
                }
            }
            else
            {
                if (isPipe)
                {
                    level = GetPipeLevelParamCN(ele);
                }
                else
                {
                    level = GetBuildingLevelParamCN(ele);
                }
            }

            //无法获取Element标高或参照标高参数
            if (string.IsNullOrEmpty(level))
            {
                string errorType = MtCommon.GetStringValue(ErrorType.NoParameter) + MtCommon.GetStringValue(MtGlobals.Parameters.MtLevel) + "或"
                                   + MtCommon.GetStringValue(MtGlobals.Parameters.ReferenceLevel);
                AddListViewErrorData(ele, errorType);
            }

            Parameter param = ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.MtLevel));

            if (null != param)
            {
                bool success = param.Set(level);
                if (!success)
                {
                    //楼层参数未设置成功
                    string errorType = MtCommon.GetStringValue(ErrorType.SetParamterFailed) + MtCommon.GetStringValue(MtGlobals.Parameters.MtLevel);
                    AddListViewErrorData(ele, errorType);
                }
            }
            else
            {
                //无法获取Element楼层参数
                string errorType = MtCommon.GetStringValue(ErrorType.NoParameter) + MtCommon.GetStringValue(MtGlobals.Parameters.MtLevel);
                AddListViewErrorData(ele, errorType);
            }
        }
        void IsConsistenSystemName(Element ele)
        {
            bool isconsistent = CheckConnectedElementsIsSameSystemName(ele);

            if (!isconsistent)
            {
                AddListViewErrorData(ele, MtCommon.GetStringValue(ErrorType.InConsistentSystemName));
            }
        }
        private string GetPipeLevel(Element ele)
        {
            string referenceLevel = string.Empty;

            referenceLevel = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.ReferenceLevel));
            if (string.IsNullOrEmpty(referenceLevel))
            {
                referenceLevel = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Level));
            }
            return(referenceLevel);
        }
        string GetBuildingLevelParamCN(Element ele)
        {
            string Level = string.Empty;

            Level = GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Level));
            if (string.IsNullOrEmpty(Level))
            {
                Level = GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.ReferenceLevel));
            }
            return(Level);
        }
        List <string> GetOnePipeSystemNames(Element ele)
        {
            string        systemName     = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.SystemName));
            List <string> eleSystemNames = new List <string>();

            if (!string.IsNullOrEmpty(systemName))
            {
                eleSystemNames = MtCommon.RemoveNumInComplexString(systemName); //可能包含多个系统名称
            }
            return(eleSystemNames);
        }
Exemple #10
0
        void AddListViewErrorData(Element ele, string errorType = null)
        {
            string famliyName             = MtCommon.GetElementFamilyName(m_uIDocument.Document, ele);
            string typeName               = MtCommon.GetElementType(m_uIDocument.Document, ele);
            string message                = MtCommon.GetStringValue(ErrorType.NoEndPipe) + errorType;
            SpuriousConnectionError error = CreateBasicInfoError(ele.Id.ToString(), famliyName, typeName, message);

            if (!m_dicErrorList.ContainsKey(ele.Id.ToString()))
            {
                m_dicErrorList.Add(ele.Id.ToString(), error);
            }
        }
        void ClearEquipmentCode()
        {
            ElementClassFilter       instanceFilter = new ElementClassFilter(typeof(FamilyInstance));
            ElementClassFilter       hostFilter     = new ElementClassFilter(typeof(HostObject));
            LogicalOrFilter          andFilter      = new LogicalOrFilter(instanceFilter, hostFilter);
            FilteredElementCollector collector      = new FilteredElementCollector(m_uIDocument.Document);

            collector.WherePasses(andFilter);

            foreach (var ele in collector)
            {
                MtCommon.SetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.EquipmentCode), string.Empty);
            }
        }
        bool IsLevelCorrect(Element ele, string level, string offset, out string errorMsg)
        {
            bool   isLevelCorrect = false;
            string errorMessage   = string.Empty;

            if (!string.IsNullOrEmpty(level) && !string.IsNullOrEmpty(offset))
            {
                double levelOffset = 0;
                if (m_dicLevelOffset.ContainsKey(level))
                {
                    levelOffset = m_dicLevelOffset[level];
                    double offsetValue = double.Parse(offset);

                    if (offsetValue < 0)
                    {
                        //将给排水中的排水管道排除,排水的管道位于本层标高的下方,该排水管道的标高属于本层
                        string systemName = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.SystemName));
                        if (!string.IsNullOrEmpty(systemName) && (systemName.Contains("排水") || systemName.Contains("废水")))
                        {
                            if (offsetValue < 0 && Math.Abs(offsetValue) < levelOffset)
                            {
                                isLevelCorrect = true;
                            }
                            else
                            {
                                isLevelCorrect = false;
                                errorMessage   = MtCommon.GetStringValue(ErrorType.NegLevelOffset);
                            }
                        }
                        else
                        {
                            isLevelCorrect = false;
                            errorMessage   = MtCommon.GetStringValue(ErrorType.NegLevelOffset);
                        }
                    }
                    else if (offsetValue > 0 && offsetValue > levelOffset)
                    {
                        isLevelCorrect = false;
                        errorMessage   = MtCommon.GetStringValue(ErrorType.PosLevelOffset);
                    }
                    else
                    {
                        isLevelCorrect = true;
                    }
                }
            }
            errorMsg = errorMessage;
            return(isLevelCorrect);
        }
        public void MarkLongVerticalPipeOrDust(Element ele, string levelName, string startoffset, string endoffset)
        {
            if (ValideParams(ele, levelName, startoffset, endoffset))
            {
                double LevelOffset  = m_dicLevelOffset[levelName];
                double startoffsetV = double.Parse(startoffset);
                double endoffsetV   = double.Parse(endoffset);

                if (Math.Abs(startoffsetV - endoffsetV) > LevelOffset)   //只有跨楼层的竖管才标记
                {
                    MtCommon.SetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.VerticalPipe), "1-1");
                }
                else
                {
                    MtCommon.SetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.VerticalPipe), "1");
                }
            }
        }
Exemple #14
0
        void TestLoopCircuit(StartElementData data, Action <List <Element> > totalElments = null)
        {
            ClearErrorListView();

            MtTravelsalTree tree = new MtTravelsalTree(m_uIDocument.Document, data.System);
            List <Element>  eles = tree.TestCircuit(data.StartElement, m_isSameSystem, m_multiSystem, IsIsolatedElements, totalElments);

            if (eles != null && eles.Count != 0)
            {
                foreach (var ele in eles)
                {
                    AddListViewErrorData(ele, MtCommon.GetStringValue(ErrorType.Circuit));
                }
            }
            IList <PipeRelationError> pipeRelationErrors = m_dicPipeRelationError.Select(v => v.Value).ToList();

            pipeRelationErrors = pipeRelationErrors.OrderBy(v => (v.FamilyName + v.TypeName)).ToList();
            SetErrorListView(pipeRelationErrors);
        }
        private string GetElementInfo(Element ele)
        {
            if (ele == null)
            {
                return(string.Empty);
            }

            string area          = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Campus));
            string building      = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Building));
            string level         = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.MtLevel));
            string equipmentCode = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.EquipmentCode));

            string isEquip = "0";

            if (!string.IsNullOrEmpty(equipmentCode))
            {
                isEquip = "1";
            }

            return(area + "-" + building + "-" + level + "*" + isEquip);
        }
        string RenameEleId(Element ele)
        {
            if (ele == null)
            {
                return(string.Empty);
            }

            string district = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Campus));
            string building = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Building));
            string level    = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.MtLevel));

            if (!string.IsNullOrEmpty(district) && !string.IsNullOrEmpty(building) && !string.IsNullOrEmpty(level))
            {
                return(district + "-" + building + "-" + level + "_PD_" + ele.Id);
            }
            else
            {
                TaskDialog.Show("Error", "Basic info is empty : " + ele.Id);
                return(string.Empty);
            }
        }
        void IsStandardSystemName(Element ele)
        {
            string systemName = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.SystemName));

            if (!string.IsNullOrEmpty(systemName))
            {
                List <string> eleSystemNames = MtCommon.RemoveNumInComplexString(systemName); //可能包含多个系统名称

                foreach (var name in eleSystemNames)
                {
                    if (!m_standardSystemNames.Contains(name))
                    {
                        AddListViewErrorData(ele, MtCommon.GetStringValue(ErrorType.NotStandardSystemName) + name); //不符合标准
                    }
                    else
                    {
                        string eleId = ele.Id.ToString();
                        if (!m_dicPipeSystemNames.ContainsKey(eleId))
                        {
                            m_dicPipeSystemNames.Add(ele.Id.ToString(), new List <string>());
                            m_dicPipeSystemNames[eleId].Add(name);
                        }
                        else
                        {
                            if (!m_dicPipeSystemNames[eleId].Contains(name))
                            {
                                m_dicPipeSystemNames[eleId].Add(name);
                            }
                        }
                    }
                }
            }
            else
            {
                AddListViewErrorData(ele, MtCommon.GetStringValue(ErrorType.NoParameter) +
                                     MtCommon.GetStringValue(MtGlobals.Parameters.SystemName) + " 或系统名称为空"); //Element可能不存在系统名称参数
            }
        }
        private void GetParameter(Element ele, string paramName)
        {
            if (ele == null || string.IsNullOrEmpty(paramName))
            {
                return;
            }
            Parameter param     = ele.LookupParameter(paramName);
            string    errorType = string.Empty;

            if (null != param)
            {
                if (param.AsString() == null)
                {
                    errorType = MtCommon.GetStringValue(ErrorType.ParameterIsNull) + paramName;
                    AddListViewErrorData(ele, errorType);
                }
            }
            else
            {
                errorType = MtCommon.GetStringValue(ErrorType.NoParameter) + paramName;
                AddListViewErrorData(ele, errorType);
            }
        }
        public void MarkVerticalPipe()
        {
            GetALLLevelOffset();

            ElementClassFilter instanceFilter = new ElementClassFilter(typeof(FamilyInstance));
            ElementClassFilter hostFilter     = new ElementClassFilter(typeof(HostObject));
            LogicalOrFilter    andFilter      = new LogicalOrFilter(instanceFilter, hostFilter);

            FilteredElementCollector collector = new FilteredElementCollector(m_uIDocument.Document);

            collector.WherePasses(andFilter);

            foreach (var ele in collector)
            {
                string levelName = GetPipeLevel(ele);
                string offset    = GetPipeOffset(ele);
                string category  = ele.Category.Name;

                if (category.Equals(MtGlobals.PipeCategory) || category.Equals(MtGlobals.DustCategory))
                {
                    //if (ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.VerticalPipe)) == null) continue;

                    string startoffset    = GetPipeStartOffset(ele);
                    string endoffset      = GetPipeEndOffset(ele);
                    bool   isVerticalPipe = CheckIsVerticalPipe(ele, startoffset, endoffset);
                    if (isVerticalPipe)
                    {
                        MarkLongVerticalPipeOrDust(ele, levelName, startoffset, endoffset);
                    }
                    else
                    {
                        MtCommon.SetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.VerticalPipe), "0");
                    }
                }
            }
        }
        //建筑
        private void SetBuildingParameter(Element ele, string buildingName)
        {
            if (null == ele || string.IsNullOrEmpty(buildingName))
            {
                return;
            }

            Parameter param = ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.Building));

            if (null != param)
            {
                bool successed = param.Set(buildingName);
                if (!successed)
                {
                    string errorType = MtCommon.GetStringValue(ErrorType.SetParamterFailed) + MtCommon.GetStringValue(MtGlobals.Parameters.Building);
                    AddListViewErrorData(ele, errorType);
                }
            }
            else
            {
                string errorType = MtCommon.GetStringValue(ErrorType.NoParameter) + MtCommon.GetStringValue(MtGlobals.Parameters.Building);
                AddListViewErrorData(ele, errorType);
            }
        }
        //int index = 0;
        bool CheckConnectedElementsIsSameSystemName(Element ele)
        {
            //string filepath = "C:/Users/1/Desktop/total_id.txt";
            //if (!File.Exists(filepath))
            //    File.Create(filepath).Close();

            //string content = File.ReadAllText(filepath);
            //content += index++ + ":   " + ele.Id.ToString() + "\r\n";
            //File.WriteAllText(filepath, content);



            List <string> eleSystemNames = GetOnePipeSystemNames(ele);

            //系统名称为空
            if (eleSystemNames.Count == 0)
            {
                AddListViewErrorData(ele, MtCommon.GetStringValue(ErrorType.ParameterIsNull) +
                                     MtCommon.GetStringValue(MtGlobals.Parameters.SystemName));
            }


            List <Element> elements = GetConnectElements(ele);

            if (elements.Count == 0)
            {
                AddListViewErrorData(ele, "连接的元素为空");
            }

            bool isSameSystemName = true;

            foreach (var item in elements)
            {
                List <string> connSystemNames = GetOnePipeSystemNames(item);
                bool          isSame          = isHaveSameSystemName(eleSystemNames, connSystemNames);
                if (!isSame)
                {
                    isSameSystemName = false;
                    break;
                }
            }
            return(isSameSystemName);



            //List<string> sysNames = new List<string>();
            //if (m_dicPipeSystemNames.ContainsKey(ele.Id.ToString())) {
            //    sysNames = m_dicPipeSystemNames[ele.Id.ToString()];
            //} else {
            //    //字典中不包含
            //}

            //List<Element> elements = GetConnectElements(ele);
            //bool isSameSystemName = true;
            //foreach (var item in elements) {
            //    string eleId = item.Id.ToString();
            //    if (m_dicPipeSystemNames.ContainsKey(eleId)) {
            //        bool isSame = isHaveSameSystemName(sysNames, m_dicPipeSystemNames[eleId]);
            //        if (!isSame) {
            //            isSameSystemName = false;
            //            break;
            //        }
            //    } else {
            //        //字典中不包含
            //    }
            //}
            //return isSameSystemName;
        }
        void TravelSwitchLight()
        {
            ElementClassFilter       instanceFilter = new ElementClassFilter(typeof(FamilyInstance));
            ElementClassFilter       hostFilter     = new ElementClassFilter(typeof(HostObject));
            LogicalOrFilter          andFilter      = new LogicalOrFilter(instanceFilter, hostFilter);
            FilteredElementCollector collector      = new FilteredElementCollector(m_uIDocument.Document);

            collector.WherePasses(andFilter);

            foreach (var ele in collector)
            {
                if (ele.Category.Name.Contains("灯具"))
                {
                    string label = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Note));
                    if (!string.IsNullOrEmpty(label))
                    {
                        m_switchDic.Add(ele, label);
                    }
                }
                if (ele.Category.Name.Contains("照明设备"))
                {
                    string label = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Note));
                    if (!string.IsNullOrEmpty(label))
                    {
                        m_lightDic.Add(ele, label);
                    }
                }

                if (ele.Category.Name.Contains("线管") || ele.Category.Name.Contains("线管配件"))
                {
                    string label = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Note));
                    if (!string.IsNullOrEmpty(label))
                    {
                        m_spoolDic.Add(ele, label);
                    }
                }
            }

            foreach (var item in m_switchDic)
            {
                string switchId = RenameEleId(item.Key);
                if (!m_switchLightRelationDic.ContainsKey(switchId))
                {
                    m_switchLightRelationDic.Add(switchId, new Dictionary <string, string>());
                }

                var ligths = from data in m_lightDic
                             where data.Value == item.Value
                             select data.Key;

                foreach (var light in ligths)
                {
                    string lightId = RenameEleId(light);
                    if (!m_switchLightRelationDic[switchId].ContainsKey(lightId))
                    {
                        m_switchLightRelationDic[switchId].Add(lightId, "0");
                    }
                }

                var spools = from data in m_spoolDic
                             where data.Value == item.Value
                             select data.Key;

                foreach (var spool in spools)
                {
                    string spoolId = RenameEleId(spool);
                    if (!m_switchLightRelationDic[switchId].ContainsKey(spoolId))
                    {
                        m_switchLightRelationDic[switchId].Add(spoolId, "1");
                    }
                }
            }
        }
 private string GetPipeEndOffset(Element ele)
 {
     return(MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.EndOffset)));
 }
        public void AutoAdjustLevel()
        {
            GetALLLevelOffset();

            foreach (var item in m_dicLevelErrors)
            {
                Element ele = MtCommon.GetElementById(m_uIDocument.Document, item.Key);

                if (ele != null)
                {
                    string offset      = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Offset));
                    string startOffset = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.StartOffset));
                    string endOffset   = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.EndOffset));

                    string _level = string.Empty;
                    string level  = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Level));
                    if (string.IsNullOrEmpty(level) || level.Equals(MtGlobals.Parameters.NoParam.ToString()))
                    {
                        _level = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.ReferenceLevel));
                    }
                    else
                    {
                        _level = level;
                    }

                    string correctLevel       = string.Empty;
                    double offsetValue        = double.Parse(offset);
                    double correctOffsetValue = offsetValue;

                    if (offsetValue > 0)
                    {
                        bool isFirst = false;
                        for (int i = 0; i < m_listLevelOffset.Count; i++)
                        {
                            LevelOffset leveloffset = m_listLevelOffset[i];
                            if (leveloffset.levelName != _level && !isFirst)
                            {
                                continue;
                            }
                            else
                            {
                                isFirst = true;

                                if (correctOffsetValue >= leveloffset.levelOffsetValue)
                                {
                                    correctOffsetValue -= leveloffset.levelOffsetValue;
                                }
                                else
                                {
                                    correctLevel = leveloffset.levelName;
                                    break; //获得正确标高跳出
                                }
                            }
                        }
                    }
                    else
                    {
                        bool isFirst = false;
                        correctOffsetValue = Math.Abs(offsetValue);
                        for (int i = m_listLevelOffset.Count - 1; i >= 0; i--)
                        {
                            LevelOffset leveloffset = m_listLevelOffset[i];
                            if (leveloffset.levelName != _level && !isFirst)
                            {
                                continue;
                            }
                            else
                            {
                                isFirst = true;

                                if (correctOffsetValue >= leveloffset.levelOffsetValue)
                                {
                                    correctOffsetValue -= leveloffset.levelOffsetValue;
                                }
                                else
                                {
                                    correctLevel = leveloffset.levelName;
                                    break;
                                }
                            }
                        }
                    }
                    if (string.IsNullOrEmpty(level) || level.Equals(MtGlobals.Parameters.NoParam.ToString()))
                    {
                        if (m_levels != null && m_levels.ContainsKey(correctLevel))
                        {
                            Parameter param = ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.ReferenceLevel));
                            if (param != null)
                            {
                                param.Set(m_levels[correctLevel].LevelId);
                            }
                        }
                    }
                    else
                    {
                        if (m_levels != null && m_levels.ContainsKey(correctLevel))
                        {
                            ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.Offset)).Set(correctOffsetValue);
                            Parameter param = ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.Level));
                        }
                    }
                }
            }

            CheckPipeLevel();
        }
        void GetPipePiameter()
        {
            ElementClassFilter instanceFilter = new ElementClassFilter(typeof(FamilyInstance));
            ElementClassFilter hostFilter     = new ElementClassFilter(typeof(HostObject));
            LogicalOrFilter    andFilter      = new LogicalOrFilter(instanceFilter, hostFilter);

            FilteredElementCollector collector = new FilteredElementCollector(m_uIDocument.Document);

            collector.WherePasses(andFilter);

            Dictionary <string, float> m_dic = new Dictionary <string, float>();
            List <Element>             eles  = new List <Element>();
            float piameter = 0;

            MtCommon.WriteStringIntoText("总共:" + collector.Count().ToString());
            int index = 0;

            foreach (var ele in collector)
            {
                if (m_IsCreateFile)
                {
                    var content = MtCommon.ReadStringFromText();
                    content += "\r\n" + $"索引{index}:" + ele.Id.ToString();
                    MtCommon.WriteStringIntoText(content);
                    index++;
                }

                string eleID = ele.Id.ToString();

                //判断是否是设备,通过设备编码参数,判断是否为设备,设备的直径默认设置为10000
                var equipCode = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(Parameters.EquipmentCode));
                if (!string.IsNullOrEmpty(equipCode))
                {
                    piameter = 10000f;
                }
                else
                {
                    //获取管道直径参数:只要包含“直径”二字的选择一个作为直径参数
                    var paramter = GetParameterWithPiameterParam(ele, "直径");
                    if (paramter != null && paramter.Count != 0)
                    {
                        foreach (var item in paramter)
                        {
                            var value = GetMultiNumbers(item.AsValueString()).FirstOrDefault();
                            piameter += value;
                        }
                        piameter = (int)(piameter / paramter.Count);
                    }
                    else
                    {
                        //没有直径参数的,利用宽高等参数判断,取中值
                        var width  = GetParameterWithPiameterParam(ele, "风管宽度").FirstOrDefault();;
                        var height = GetParameterWithPiameterParam(ele, "风管高度").FirstOrDefault();

                        if (width != null && height != null)
                        {
                            var widthValue  = GetMultiNumbers(width.AsValueString()).FirstOrDefault();
                            var heightValue = GetMultiNumbers(height.AsValueString()).FirstOrDefault();
                            piameter = (int)((widthValue + heightValue) / 2);
                        }
                        else
                        {
                            //利用尺寸200x100,200x100200x100,只取前后两位计算
                            var size = MtCommon.GetOneParameter(ele, "尺寸");
                            if (!string.IsNullOrEmpty(size))
                            {
                                var result = GetMultiNumbers(size);
                                if (result.Count >= 2)
                                {
                                    piameter = (int)((result[0] + result[result.Count - 1]) / 2);
                                }
                                else if (result.Count == 1)
                                {
                                    piameter = result[0];
                                }
                                else
                                {
                                    piameter = 0;
                                }
                            }
                            else
                            {
                                piameter = 0f;
                            }
                        }
                    }
                }
                var    campus       = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(Parameters.Campus));
                var    build        = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(Parameters.Building));
                var    level        = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(Parameters.MtLevel));
                var    verticalPipe = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(Parameters.VerticalPipe));
                string pipeCode     = string.Empty;
                if (verticalPipe.Equals("1-1"))
                {
                    pipeCode = campus + "-" + build + "-" + level + "_" + m_SystemCode + "_" + ele.Id + "#L";
                }
                else
                {
                    pipeCode = campus + "-" + build + "-" + level + "_" + m_SystemCode + "_" + ele.Id;
                }

                if (!m_dic.ContainsKey(pipeCode))
                {
                    m_dic.Add(pipeCode, piameter);
                    eles.Add(ele);
                }
                piameter = 0;
            }

            MtCommon.HideElements(m_uIDocument.Document, eles);

            m_sqlite = new MtSQLite(m_sqliteFilePath);
            List <string> quarays = new List <string>();

            foreach (var item in m_dic)
            {
                quarays.Add($"Update Facility_Pipe Set diameter = '{item.Value}' where code = '{item.Key}'");
                //quarays.Add($"Insert into Pipe (code,diameter) values ('{item.Key}','{item.Value}')");
            }
            m_sqlite.ExecuteNoneQuery(quarays.ToArray());
        }