void SaveRelationData() { m_sqlite = new MtSQLite(m_sqliteFilePath); string[] _columnName = m_columnName.Split(';'); List <string[]> listColumnValues = new List <string[]>(); foreach (var _switch in m_switchLightRelationDic) { foreach (var ctrlObj in _switch.Value) { string switchCode = "'" + _switch.Key + "'"; string ctrlObjCode = "'" + ctrlObj.Key + "'"; string typeCode = "'" + ctrlObj.Value + "'"; listColumnValues.Add(new string[] { switchCode, ctrlObjCode, typeCode }); } } m_sqlite.InsertIntoList(m_tableName, _columnName, listColumnValues); }
public void ReadDataFromDB(string sqliteFilePath) { m_floorInfo.Clear(); if (sqliteFilePath == null) { TaskDialog.Show("Error", "没有指定DB文件"); } m_sqlite = new MtSQLite(sqliteFilePath); JArray jarr = new JArray(); string quarySql = "SELECT ID,空间,空间编码 FROM " + "'" + m_tableName + "'"; // string quarySql = "SELECT 序号,科室名称,用途 FROM " + "'" + m_tableName + "'"; jarr = m_sqlite.ExecuteQuery(quarySql); foreach (var item in jarr) { //string roomNum = item.Value<string>("序号").Trim(); string id = item.Value <string>("ID").Trim(); string space = item.Value <string>("空间").Trim(); string spaceNum = item.Value <string>("空间编码").Trim(); //string dep = item.Value<string>("科室名称").Trim(); //string use = item.Value<string>("用途").Trim(); //string floorId = level + "-" + roomNum; //string floorId = roomNum; //string info = dep + "*" + use; if (string.IsNullOrEmpty(id) || string.IsNullOrEmpty(space) || string.IsNullOrEmpty(spaceNum)) { continue; } string floorID = id; string info = space + "*" + spaceNum; if (!m_floorInfo.ContainsKey(floorID)) { m_floorInfo.Add(floorID, info); } } }
//效率较低 public void DumpIntoDB(string path, string systemName, string subSystem, string tunnelName, string tableName, string columnName, bool isPositiveDir, bool isWaterReturnPipe) { if (string.IsNullOrEmpty(path)) { return; } m_sqlite = new MtSQLite(path); string[] _columnKey = columnName.Split(';'); //id,upstream,downstream string[] _columnValue = new string[10]; foreach (var Node in m_allTreeNodeList) { string info = Node.Info; _columnValue[0] = ResetPipeId(Node, systemName, Node.Id.ToString()); //ID if (string.IsNullOrEmpty(tunnelName)) { _columnValue[3] = "'" + "Default" + "'"; //TUNNEL 默认为Default } else { _columnValue[3] = "'" + tunnelName + "'"; } _columnValue[5] = Node.IsValve.ToString(); //IsValve : 0 :非Valve 1: 是Valve _columnValue[6] = "'" + subSystem + "'"; //SUBSYSTEM : 通过下拉框选择 _columnValue[7] = "'" + GetSubsystemCode(subSystem) + "'"; //subsystemCode _columnValue[8] = "'" + (IsEncodeDevice(info) ? 1 : 0).ToString() + "'"; //设备是否有编码 _columnValue[9] = "'" + "0" + "'"; //是否是末端管道 if (isPositiveDir) { _columnValue[4] = "1"; //DIRECTION 1:正向 0:逆向 if (Node.Parent == null) { _columnValue[1] = "'" + string.Empty + "'"; foreach (var child in Node.ChildNodes) { _columnValue[2] = ResetPipeId(child, systemName, child.Id.ToString()); //DOWNSTREAM m_sqlite.InsertInto(tableName, _columnKey, _columnValue); } } else { _columnValue[1] = ResetPipeId(Node.Parent, systemName, Node.Parent.Id.ToString()); //UPSTREAM if (Node.ChildNodes != null && Node.ChildNodes.Count != 0) { foreach (var child in Node.ChildNodes) { _columnValue[2] = ResetPipeId(child, systemName, child.Id.ToString()); //DOWNSTREAM m_sqlite.InsertInto(tableName, _columnKey, _columnValue); } } else { _columnValue[2] = "'" + string.Empty + "'"; _columnValue[9] = "'" + "1" + "'"; //是否是末端管道 1:是 0:不是 m_sqlite.InsertInto(tableName, _columnKey, _columnValue); //加入没有下游的记录 } } } else { _columnValue[4] = "0"; //DIRECTION 1:正向 0:逆向 if (Node.Parent == null) { _columnValue[2] = "'" + string.Empty + "'"; foreach (var child in Node.ChildNodes) { _columnValue[1] = ResetPipeId(child, systemName, child.Id.ToString()); //加入逆向的初始管道 m_sqlite.InsertInto(tableName, _columnKey, _columnValue); } } else { _columnValue[2] = ResetPipeId(Node.Parent, systemName, Node.Parent.Id.ToString()); //DOWNSTREAM if (Node.ChildNodes != null && Node.ChildNodes.Count != 0) { foreach (var child in Node.ChildNodes) { _columnValue[1] = ResetPipeId(child, systemName, child.Id.ToString()); //UPSTREAM m_sqlite.InsertInto(tableName, _columnKey, _columnValue); } } else { if (!isWaterReturnPipe) //回水的末端不加入数据库中,因为供水的管道已经写入 { _columnValue[1] = "'" + string.Empty + "'"; _columnValue[9] = "'" + "1" + "'"; m_sqlite.InsertInto(tableName, _columnKey, _columnValue); //加入没有上游的记录 } } } } } m_isHide = true; }
public void DumpIntoDB2(string path, string systemName, string subSystem, string tunnelName, string tableName, string columnName, bool isPositiveDir, bool isWaterReturnPipe) { if (string.IsNullOrEmpty(path)) { return; } m_sqlite = new MtSQLite(path); string[] _columnKey = columnName.Split(';'); List <string[]> listColumnValues = new List <string[]>(); foreach (var Node in m_allTreeNodeList) { string info = Node.Info; string[] _columnValue = new string[_columnKey.Length]; _columnValue[0] = ResetPipeId(Node, systemName, Node.Id.ToString()); //ID //if (string.IsNullOrEmpty(tunnelName)) // _columnValue[3] = "'" + "Default" + "'"; //TUNNEL 默认为Default //else _columnValue[3] = "'" + GetTunnelName(tunnelName) + "'"; _columnValue[5] = Node.IsValve.ToString(); //IsValve : 0 :非Valve 1: 是Valve _columnValue[6] = "'" + subSystem + "'"; //SUBSYSTEM : 通过下拉框选择 _columnValue[7] = "'" + GetSubsystemCode(subSystem) + "'"; //subsystemCode _columnValue[8] = "'" + (IsEncodeDevice(info) ? 1 : 0).ToString() + "'"; //设备是否有编码 _columnValue[9] = "'" + "0" + "'"; //是否是末端管道 _columnValue[10] = ResetPipeId(m_startingElementNode, systemName, m_startingElementNode.Id.ToString()); if (isPositiveDir) { _columnValue[4] = "1"; //DIRECTION 1:正向 0:逆向 if (Node.Parent == null) { _columnValue[1] = "'" + string.Empty + "'"; foreach (var child in Node.ChildNodes) { //引用问题,所以用了临时变量 string[] tempColumnValue = CopyData(_columnValue); tempColumnValue[2] = ResetPipeId(child, systemName, child.Id.ToString()); //DOWNSTREAM listColumnValues.Add(tempColumnValue); } } else { _columnValue[1] = ResetPipeId(Node.Parent, systemName, Node.Parent.Id.ToString()); //UPSTREAM if (Node.ChildNodes != null && Node.ChildNodes.Count != 0) { foreach (var child in Node.ChildNodes) { string[] tempColumnValue = CopyData(_columnValue); tempColumnValue[2] = ResetPipeId(child, systemName, child.Id.ToString()); //DOWNSTREAM listColumnValues.Add(tempColumnValue); } } else { _columnValue[2] = "'" + string.Empty + "'"; _columnValue[9] = "'" + "1" + "'"; //是否是末端管道 1:是 0:不是 listColumnValues.Add(_columnValue); //加入没有下游的记录 } } } else { _columnValue[4] = "0"; //DIRECTION 1:正向 0:逆向 if (Node.Parent == null) { _columnValue[2] = "'" + string.Empty + "'"; foreach (var child in Node.ChildNodes) { string[] tempColumnValue = CopyData(_columnValue); tempColumnValue[1] = ResetPipeId(child, systemName, child.Id.ToString()); //加入逆向的初始管道 listColumnValues.Add(tempColumnValue); } } else { _columnValue[2] = ResetPipeId(Node.Parent, systemName, Node.Parent.Id.ToString()); //DOWNSTREAM if (Node.ChildNodes != null && Node.ChildNodes.Count != 0) { foreach (var child in Node.ChildNodes) { string[] tempColumnValue = CopyData(_columnValue); tempColumnValue[1] = ResetPipeId(child, systemName, child.Id.ToString()); //UPSTREAM listColumnValues.Add(tempColumnValue); } } else { if (!isWaterReturnPipe) //回水的末端不加入数据库中,因为供水的管道已经写入 { _columnValue[1] = "'" + string.Empty + "'"; _columnValue[9] = "'" + "1" + "'"; listColumnValues.Add(_columnValue); //加入没有上游的记录 } } } } } m_sqlite.InsertIntoList(tableName, _columnKey, listColumnValues); m_isHide = true; }
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()); }