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); }
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); }
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); }
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 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()); }
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"); } } } }