/// <summary>NR3160-02とJB-Dが同時に存在したらエラー、NR3160-02とJB-MAINが同時に存在してもエラー</summary> public static void ValidateNR3160_02(List <Symbol> symbols) { string messageId = @"Need to delete NR3160 because there's JB-D/JB-DA/JB machine in floor plan."; var validator = new Validator(); validator.Validate = delegate() { if (Static.Drawing.Prefix == "HZA") { return(null); } //NR3160-02のシンボルで絞る var nrSymbols = symbols.FindAll(p => p.Equipment.Name == Const.EquipmentName.NR3160_02); if (nrSymbols.Count == 0) { return(null); } var jbSymbols = symbols.FindAll(p => p.IsJBox || p.Equipment.Name == Const.EquipmentName.JB_MAIN); if (jbSymbols.Count == 0) { return(null); } var error = new ErrorDialog(messageId); nrSymbols.ForEach(p => error.AddInfo(p)); jbSymbols.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary> /// 青マーキングを使用して天井設置ワイヤー同士を結合しようとしていたらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateSameWireCombine(List <Symbol> markingSymbols, List <Wire> wires) { string messageId = @"Under Floor Drop function is combine of Normal wire cannot be done by using."; var validator = new Validator(); validator.Validate = delegate() { List <Symbol> buleMarkings = markingSymbols.FindAll(p => p.Equipment.Name == Const.EquipmentName.MarkingBule); List <Wire> errorWires = new List <Wire>(); List <Symbol> errorSymbols = new List <Symbol>(); foreach (Symbol buleMarking in buleMarkings) { List <Wire> connectedWires = wires.FindAll(p => p.IsConnected(buleMarking)); int normalCount = 0; foreach (Wire connectedWire in connectedWires) { if (connectedWire.IsUnderfloor) { continue; } normalCount++; } if (2 <= normalCount) { errorSymbols.Add(buleMarking); errorWires.AddRange(connectedWires); } } if (errorWires.Count == 0 && errorSymbols.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); errorWires.ForEach(a => error.AddInfo(a)); errorSymbols.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
//警報機シンボルがないときエラー public static void ValidateSecuritySymbol(List <Symbol> symbols) { string messageId = @"Please check security alarm and remote in floor plan."; var validator = new Validator(); validator.Validate = delegate() { var errors = new List <string>(); var alarms = symbols.FindAll(p => p.Floor == 1); if (!alarms.Exists(p => p.Equipment.Name == Const.EquipmentName.リモコン18) && !alarms.Exists(p => p.Equipment.Name == Const.EquipmentName.リモコン16) && !alarms.Exists(p => p.Equipment.Name == Const.EquipmentName.リモコン19) && !alarms.Exists(p => p.Equipment.Name == Const.EquipmentName.リモコン17)) { errors.Add("1F"); } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary> /// マーキングに三本以上のWireが繋がっていたらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateConnectedThreeOrMoreMarkingWire(List <Symbol> markingSymbols, List <Wire> wires) { string messageId = @"Marking is connected three Wire or more to Wire."; var validator = new Validator(); validator.Validate = delegate() { List <Symbol> threeOrMoreMarkings = new List <Symbol>(); foreach (Symbol marking in markingSymbols) { List <Wire> connectedWire = wires.FindAll(p => p.IsConnected(marking)); if (3 <= connectedWire.Count) { threeOrMoreMarkings.Add(marking); } } if (threeOrMoreMarkings.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); threeOrMoreMarkings.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
/// <summary> /// マーキングと階またぎアローがワイヤーと接続されてたら、存在していたらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateConnectedMarkingToArrow(List <Symbol> markingSymbols, List <Symbol> arrows, List <Wire> wires) { string messageId = @"Marking and Floor Arrow cannot be connected. "; var validator = new Validator(); validator.Validate = delegate() { //マーキングと階またぎアローが接続されているワイヤー List <Wire> connectedMarkingToArrowWires = new List <Wire>(); foreach (Wire wire in wires) { bool isMarkingConnected = markingSymbols.Exists(p => wire.IsConnected(p)); bool isArrowConnected = arrows.Exists(p => wire.IsConnected(p)); if (isMarkingConnected && isArrowConnected) { connectedMarkingToArrowWires.Add(wire); } } if (connectedMarkingToArrowWires.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); connectedMarkingToArrowWires.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
/// <summary> /// Wireが繋がっていないマーキングシンボルが有ったらエラー /// </summary> /// <param name="symbols">マーキングシンボル</param> /// <param name="wires"></param> public static void ValidateUnconnectedMarkingSymbol(List <Symbol> markingSymbols, List <Wire> wires) { string messageId = @"Marking is unconnected to Wire"; var validator = new Validator(); validator.Validate = delegate() { List <Symbol> unconnectedMarking = new List <Symbol>(); foreach (Symbol marking in markingSymbols) { List <Wire> connectedWire = wires.FindAll(p => p.IsConnected(marking)); if (connectedWire.Count == 0) { unconnectedMarking.Add(marking); } } if (unconnectedMarking.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); unconnectedMarking.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
/// <summary> /// マーキングに繋がるワイヤーが、「電気_配線」以外に存在していたらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateConnectedMarkingWireLayer(List <Symbol> markingSymbols, List <Wire> wires) { string messageId = @"It is not possible to connect it except Normal wire."; var validator = new Validator(); validator.Validate = delegate() { //「電気_配線」以外のワイヤー List <Wire> exceptDenkiHaisenWires = new List <Wire>(); foreach (Symbol marking in markingSymbols) { List <Wire> connectedWires = wires.FindAll(p => p.IsConnected(marking) && p.Layer != Const.Layer.電気_配線); if (connectedWires.Count != 0) { exceptDenkiHaisenWires.AddRange(connectedWires); } } if (exceptDenkiHaisenWires.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); exceptDenkiHaisenWires.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
/// <summary> /// マーキングに一本のWireしか繋がっていなかったらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateConnectedOnlyOneMarkingWire(List <Symbol> markingSymbols, List <Wire> wires) { string messageId = @"Marking is connected only one to Wire"; var validator = new Validator(); validator.Validate = delegate() { //一本のワイヤーしか接続されていないマーキングシンボル List <Symbol> onlyOneMarkings = new List <Symbol>(); foreach (Symbol marking in markingSymbols) { List <Wire> connectedWire = wires.FindAll(p => p.IsConnected(marking)); if (connectedWire.Count == 1) { onlyOneMarkings.Add(marking); } } if (onlyOneMarkings.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); onlyOneMarkings.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
/// <summary>パワコンのテキストがあるのに、ソーラーソケットがなければエラー</summary> public static void ValidateSolarSockets(List <Symbol> symbols, List <TextObject> texts) { var messageId = @"Please add original solar socket and please check if it is tally with the number of powercon."; var validator = new Validator(); validator.Validate = delegate() { var powerCons = texts.FindAll(p => p.Text == Const.Text.パワーコンディショナ); if (powerCons.Count == 0) { return(null); } if (symbols.Exists(p => p.Equipment.Name == Const.EquipmentName.太陽光_1口 || p.Equipment.Name == Const.EquipmentName.太陽光_2口 || p.Equipment.Name == Const.EquipmentName.太陽光_3口)) { return(null); } var error = new ErrorDialog(messageId, false); powerCons.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary> /// オレンジマーキングが電気配線に重なっていない場合エラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateOrangeMarkingWire(List <Wire> wires, List <Symbol> orangeMarkings) { string messageId = @"There was marking symbol without the connection."; var validator = new Validator(); validator.Validate = delegate() { var errorMarkings = new List <Symbol>(); foreach (Symbol orangeMarking in orangeMarkings) { List <Wire> penetrateWires = wires.FindAll(p => p.IsCrossover(orangeMarking)); if (penetrateWires.Count == 0) { errorMarkings.Add(orangeMarking); } } if (errorMarkings.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); errorMarkings.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary> /// オレンジマーキングと別の色が混在していたらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateOrangeMarkingOthers(List <MarkingWire> wires) { string messageId = @"The orange and other marking cannot be used at the same wire."; var validator = new Validator(); validator.Validate = delegate() { var errorWires = new List <Wire>(); foreach (var wire in wires) { if (wire.Wires.Exists(p => p.withOrangeMarking)) { errorWires.Add(wire); } } if (errorWires.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); errorWires.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary> /// 緑色と黄色マーキングで、床下配線が使用されていたらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateUnderFloorWireCombine(List <Symbol> markingSymbols, List <Wire> wires) { string messageId = @"Please use function to Under Floor Drop when combine Underfloor wire."; var validator = new Validator(); validator.Validate = delegate() { List <Symbol> markings = markingSymbols.FindAll(p => p.Equipment.Name == Const.EquipmentName.MarkingGreen || p.Equipment.Name == Const.EquipmentName.MarkingYellow); List <Wire> errorWires = new List <Wire>(); List <Symbol> errorSymbols = new List <Symbol>(); foreach (Symbol marking in markings) { List <Wire> connectedWires = wires.FindAll(p => p.IsConnected(marking)); List <Wire> underFloorWires = new List <Wire>(); foreach (Wire connectedWire in connectedWires) { if (connectedWire.IsUnderfloor) { underFloorWires.Add(connectedWire); } } if (underFloorWires.Count == 0) { continue; } errorSymbols.Add(marking); errorWires.AddRange(underFloorWires); } if (errorWires.Count == 0 && errorSymbols.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); errorWires.ForEach(a => error.AddInfo(a)); errorSymbols.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
/// <summary>245:出窓箇所に出窓用照明が無かったらエラー</summary> public static void ValidateUnitWindowItem(List <TextObject> texts, List <Symbol> symbols) { var messageId = @"No item installed for unit window."; var validator = new Validator(); validator.Validate = delegate() { //最上階を取得 var maxFloor = 0; foreach (var text in texts) { if (maxFloor < text.Floor) { maxFloor = text.Floor; } } //階毎にチェック var errorSymbols = new List <Symbol>(); var errorTexts = new List <TextObject>(); var comments = texts.FindAll(p => !p.IsBayWindowNoLight); for (int i = 1; i <= maxFloor; i++) { var floorComments = comments.FindAll(p => p.IsBayWindow && p.Floor == i); var items = symbols.FindAll(p => p.Equipment.Name == Const.EquipmentName.uw_04 && p.Floor == i); if (floorComments.Count > items.Count) { errorSymbols.AddRange(items); errorTexts.AddRange(floorComments); } } if (errorSymbols.Count == 0 && errorTexts.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errorSymbols.ForEach(p => error.AddInfo(p)); errorTexts.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>重複したリモコンがあったらエラー</summary> public static void ValidateDuplicateRemocon(List <Symbol> symbols) { string messageId = @"Duplicate remote pattern, please cheeck."; var validator = new Validator(); validator.Validate = delegate() { var rimokonNames = new List <string>(); rimokonNames.Add(Const.EquipmentName.リモコン01); rimokonNames.Add(Const.EquipmentName.リモコン02); rimokonNames.Add(Const.EquipmentName.リモコン03); rimokonNames.Add(Const.EquipmentName.リモコン04); rimokonNames.Add(Const.EquipmentName.リモコン05); rimokonNames.Add(Const.EquipmentName.リモコン06); rimokonNames.Add(Const.EquipmentName.リモコン07); rimokonNames.Add(Const.EquipmentName.リモコン08); rimokonNames.Add(Const.EquipmentName.リモコン09); rimokonNames.Add(Const.EquipmentName.リモコン10); rimokonNames.Add(Const.EquipmentName.リモコン16); rimokonNames.Add(Const.EquipmentName.リモコン17); rimokonNames.Add(Const.EquipmentName.リモコン18); rimokonNames.Add(Const.EquipmentName.リモコン19); var errors = new List <Symbol>(); foreach (var name in rimokonNames) { var rimokons = symbols.FindAll(p => p.Equipment.Name == name); if (rimokons.Count >= 2) { errors.AddRange(rimokons); } } //var remotes = symbols.FindAll(p => p.Equipment.Name.StartsWith("リモコン")); //if (remotes.Count == 0) // return null; //var errors = new List<Symbol>(); //foreach (var remote in remotes) //{ // var duplicated = remotes.FindAll(p => p.Equipment.Name == remote.Equipment.Name); // if (duplicated.Count >= 2) // errors.Add(remote); //} if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary> /// CombineWireの構成で、3個以上黄色または緑色のマーキングを使用していたらエラー /// </summary> /// <param name="symbols"></param> /// <param name="wires"></param> public static void ValidateYellowAndGreenOneEach(List <MarkingWire> combineWires) { string messageId = @"Ceiling drop point is drawn for wiring by three point or more. Ceiling drop point(Yellow or Green Marking) is up to two. "; var validator = new Validator(); validator.Validate = delegate() { List <Wire> errorWires = new List <Wire>(); List <Symbol> errorMarkings = new List <Symbol>(); foreach (MarkingWire combine in combineWires) { //マーキングの内訳 var yellows = combine.MarkingSymbols.FindAll(p => p.IsYellowMarking); var greens = combine.MarkingSymbols.FindAll(p => p.IsGreenMarking); int totalMarkingCount = yellows.Count + greens.Count; if (3 <= totalMarkingCount) { errorWires.AddRange(combine.Wires); errorMarkings.AddRange(yellows); errorMarkings.AddRange(greens); break; } } if (errorWires.Count == 0 && errorMarkings.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); errorWires.ForEach(a => error.AddInfo(a)); errorMarkings.ForEach(a => error.AddInfo(a)); return(error); }; validator.Run(messageId); }
/// <summary>FireAlermに壁付コメントがあるのに、高さコメントがなければエラー</summary> public static void ValidateInputWallFireAlermHeight(List <Symbol> symbols) { string messageId = @"There is no indication of height for wall kemuri."; var validator = new Validator(); validator.Validate = delegate() { //Fire Alarmカテゴリに含まれるシンボルに絞る var fireAlarmCategory = UnitWiring.Masters.SelectionCategories.Find(p => p.Name.Contains("Fire Alarm")); if (fireAlarmCategory == null) { return(null); } var alarms = symbols.FindAll(symbol => Array.Exists(fireAlarmCategory.Equipments, q => symbol.Equipment.Id == q.Id)); if (alarms.Count == 0) { return(null); } //壁付き属性をもったシンボルに絞る var wallAlarms = alarms.FindAll(p => p.Attributes.Exists(q => q.Value == Const.Text.壁付)); if (wallAlarms.Count == 0) { return(null); } //壁付き属性をもったシンボルから、エラー対象のシンボルに絞る var noHeightComments = new List <Symbol>(); foreach (var wallAlarm in wallAlarms) { var height = wallAlarm.Attributes.Find(p => p.Tag == Const.AttributeTag.HEIGHT); if (height == null) { continue; } if (string.IsNullOrEmpty(height.Value) || height.Value == "H=0") { noHeightComments.Add(wallAlarm); } } if (noHeightComments.Count == 0) { return(null); } var error = new ErrorDialog(messageId); noHeightComments.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>DenkiWireの両端がスイッチである場合エラーとする。</summary> public static void ValidateWireConnection(List <Wire> wires, List <Symbol> symbols) { string messageId = @"No Wire Connection for switch to switch."; var validator = new Validator(); validator.Validate = delegate() { var errorWires = new List <Wire>(); var error = new ErrorDialog(messageId, false); var switches = symbols.FindAll(p => p.IsSwitch); foreach (var swSymbol in switches) { var denkiWires = wires.FindAll(p => p.IsConnected(swSymbol)); foreach (var wire in denkiWires) { var connectSymbol = switches.Find(p => wire.IsConnected(p) && swSymbol.ObjectId != p.ObjectId); if (connectSymbol == null) { return(null); } if (connectSymbol.IsSensorSwitch) { return(null); } if (connectSymbol.IsKatteniSwitch) { return(null); } errorWires.Add(wire); } } if (errorWires.Count == 0) { return(null); } errorWires.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>Ceiling Panelの線上にJoint Boxシンボルが重なっていればエラー</summary> public static void ValidateJBOnCeilingPanel(List <Symbol> symbols, List <CeilingPanel> panels) { string messageId = @"Joint Box was installed at the edge of the ceiling panel. Move it to other."; var validator = new Validator(); validator.Validate = delegate() { var errors = new List <Symbol>(); var jointBoxes = symbols.FindAll(p => p.IsJointBox); if (jointBoxes.Count == 0) { return(null); } foreach (var jointBox in jointBoxes) { var ceilingPanels = panels.FindAll(p => p.Floor == jointBox.Floor); if (ceilingPanels.Count == 0) { continue; } foreach (var ceilingPanel in ceilingPanels) { var entity = new Edsa.AutoCadProxy.Entity(); var crossPoint = entity.GetIntersect2D(jointBox.ObjectId, ceilingPanel.ObjectId); if (0 < crossPoint.Count) { errors.Add(jointBox); } } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>238:HCUコメントがあるのに、専用E付-27シンボルが無かったら場合はエラー</summary> public static void ValidateHCUSocket(List <TextObject> texts, List <Symbol> symbols) { var messageId = @"No HCU item with HCU/HU machine in floor plan. Please add the item. Check number of machine in floor plan."; var validator = new Validator(); validator.Validate = delegate() { if (Static.Drawing.Prefix != "HJA") { return(null); } //最上階を取得 var maxFloor = 0; foreach (var text in texts) { if (maxFloor < text.Floor) { maxFloor = text.Floor; } } //階毎にチェック var errors = new List <string>(); for (var i = 1; i <= maxFloor; i++) { var comments = texts.FindAll(p => p.Text.Contains(Const.Text.HCU_HU) && p.Floor == i); var sockets = symbols.FindAll(p => p.Equipment.Name == Const.EquipmentName.HCU && p.Floor == i); if (sockets.Count < comments.Count) { errors.Add(i.ToString() + "F"); } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
public static void ValidateConnectedToStarHaikan(string equipmentName, List <Symbol> symbols) { var validation = new Validation(); string messageId = equipmentName + " has no wire found."; var validator = new Validator(); validator.Validate = delegate() { var errors = new List <Symbol>(); var targetSymbols = symbols.FindAll(p => p.Equipment.Name == equipmentName); var starSymbols = symbols.FindAll(p => p.Equipment.Name == Const.EquipmentName.スター配管基点); var starSubGroup = UnitWiring.Masters.LightElectricals.FindAll(p => p.Category == "StarHaikan" && !p.IsTop); foreach (var star in starSymbols) { var children = star.Children.FindAll(p => p.Equipment.Name == equipmentName); foreach (var child in children) { if (starSubGroup.Exists(p => p.EquipmentId == child.Equipment.Id)) { targetSymbols.Remove(child); } else { errors.Add(child); } } } if (targetSymbols.Count != 0) { errors.AddRange(targetSymbols); } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId, false); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>帖つきの部屋or階段上部に火災報知機が無い時エラー</summary> public static void ValidateFireAlarmWithJyou(List <RoomObject> rooms, List <Symbol> symbols) { var messageId = @"Missing fire alarm. Please add."; var validator = new Validator(); validator.Validate = delegate() { if (Static.Drawing.Prefix == "HZA") { return(null); } var errors = new List <string>(); foreach (var room in rooms) { var jyouString = XData.Room.GetRoomJyou(room.ObjectId); if (String.IsNullOrEmpty(jyouString)) { if (room.Name != Const.Room.階段 && !room.Name.StartsWith(Const.Room.階段 + "(")) { continue; } } var alarms = symbols.FindAll(p => p.Floor == room.Floor && p.IsFireAlarm); if (!alarms.Exists(p => p.ActualPosition.IsIn(room.ObjectId))) { errors.Add(room.Floor + "F" + room.Name); } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>カップボードがあったら警告メッセージを表示する</summary> public static void WarnCupboardSerial(List <TextObject> texts) { string messageId = @"There's cupboard in floor plan please check height of items installed in it."; List <CupboardSerial> serials = UnitWiring.Masters.CupboardSerials; var cupboardTexts = texts.FindAll(p => serials.Exists(q => q.Name == p.Text)); if (cupboardTexts.Count == 0) { return; } var error = new ErrorDialog(messageId, 0); cupboardTexts.ForEach(p => error.AddInfo(p)); error.ShowDialog(); }
/// <summary>239:S指定があり、スマートシリアルがない場合はエラー</summary> public static void ValidateSmartSeriesSerial(List <Symbol> symbols) { var messageId = @"These symbols are smart series. Please add smart series serial."; var validator = new Validator(); validator.Validate = delegate() { if (Static.Drawing.Prefix != "HJA") { return(null); } var errors = new List <Symbol>(); foreach (var symbol in symbols) { if (symbol.Floor == 0) //立面は許可する { continue; } if (!symbol.IsSmartSeries) { continue; } if (!symbol.HasSmartSeriesSerial) { errors.Add(symbol); } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
//屋外用のNewLEDがかってにスイッチと接続していたらエラー public static void ValidateNewLEDConnectKatteni(List <Symbol> symbols, List <Wire> denkiWires) { var messageId = @"This type of LED light is not possible to connect in katteni switch."; var validator = new Validator(); validator.Validate = delegate() { var errors = new List <Symbol>(); foreach (var symbol in symbols) { if (!symbol.IsLight) { continue; } var light = new Light(symbol); var serials = light.GetSerialsForCount(); if (serials.Exists(p => p.Contains(Const.LightSerial.MLS) || p.Contains(Const.LightSerial.LLS) || p.Contains(Const.LightSerial.PLS))) { var wires = denkiWires.FindAll(p => p.IsConnected(symbol)); foreach (var wire in wires) { if (symbols.Exists(p => wire.IsConnected(p) && p.IsKatteniSwitch)) { errors.Add(symbol); break; } } } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>DenkiWireの両端について、片方でもシンボルがない場合エラーとする。</summary> public static void ValidateWireConnectionSymbol(List <Wire> wires, List <Symbol> symbols) { string messageId = @"There is a wire which is not connected to symbol."; var validator = new Validator(); validator.Validate = delegate() { var errorWires = new List <Wire>(); foreach (var wire in wires) { if (wire is RisingWire) { continue; } int count = 0; foreach (var symbol in symbols) { if (wire.IsConnected(symbol)) { count++; } } if (count < 2) { errorWires.Add(wire); } } if (errorWires.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errorWires.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
//TODO ValidateNoConnectionSwitchを使うのが正しい? //TODO ValidateNoConnectionSwitchメソッドの内容にHJAチェックを付けただけ。 /// <summary>スイッチと他のシンボルがつながっていなかった場合エラー(HJAのみ)</summary> public static void ValidateUnconnectedSwitch(List <Symbol> symbols, List <Wire> wires) { string messageId = @"Switch doesn't connect other symbol."; var validator = new Validator(); validator.Validate = delegate() { if (Static.Drawing.Prefix != "HJA") { return(null); } var bocchi = new List <Symbol>(); foreach (var symbol in symbols) { if (!symbol.IsSwitch) { continue; } if (wires.Exists(p => p.IsConnected(symbol))) { continue; } bocchi.Add(symbol); } if (bocchi.Count == 0) { return(null); } var error = new ErrorDialog(messageId); bocchi.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
//屋外用のNewLEDが屋内に配置されていたらエラー public static void ValidateNewLEDOutSide(List <Symbol> symbols) { var messageId = @"This type of LED light is not possible to use for inside light."; var validator = new Validator(); validator.Validate = delegate() { var errors = new List <Symbol>(); foreach (var symbol in symbols) { if (!symbol.IsLight) { continue; } var light = new Light(symbol); var serials = light.GetSerialsForCount(); if (serials.Exists(p => p.Contains(Const.LightSerial.MLS) || p.Contains(Const.LightSerial.LLS) || p.Contains(Const.LightSerial.PLS))) { if (!symbol.IsOutside) { errors.Add(symbol); break; } } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary>帖付きかつ勾配天井のある部屋に火災報知機が無い時エラー</summary> public static void ValidateFireAlarmWithKobai(List <RoomObject> rooms, List <TextObject> texts, List <Symbol> symbols) { var messageId = @"Missing fire alarm. Please check indication in elevation if fukiage. Please add."; var validator = new Validator(); validator.Validate = delegate() { var errors = new List <string>(); foreach (var room in rooms) { if (string.IsNullOrEmpty(XData.Room.GetRoomJyou(room.ObjectId))) { continue; } if (!room.IsKoubai(texts.FindAll(p => p.Floor == room.Floor))) { continue; } var alarms = symbols.FindAll(p => p.Floor == room.Floor && p.IsFireAlarm); if (!alarms.Exists(p => p.ActualPosition.IsIn(room.ObjectId))) { errors.Add(room.Floor + "F" + room.Name); } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
//JBOXシンボルの高さが無い場合エラー public static void ValidateJboxHeight(List <Symbol> symbols) { var messageId = @"Wrong encoding of Height for JC, JCL, JCT or JB-D/JB-DA."; var validator = new Validator(); validator.Validate = delegate() { if (Static.Drawing.Prefix == "HZA") { return(null); } var errors = new List <Symbol>(); foreach (var symbol in symbols) { if (symbol.IsJBox == false && symbol.Equipment.Name != Const.EquipmentName.JC && symbol.Equipment.Name != Const.EquipmentName.JCL && symbol.Equipment.Name != Const.EquipmentName.JCT) { continue; } if (symbol.Height <= 0) { errors.Add(symbol); } } if (errors.Count == 0) { return(null); } var error = new ErrorDialog(messageId); errors.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }
/// <summary> /// シンボルのSwitchSerial属性に未登録のスイッチシリアルが設定されていた場合エラー /// </summary> /// <param name="symbols"></param> public static void ValidateUnregisteredSwitchSerial(List <Symbol> symbols) { string messageId = @"There are switch serials that are not in the list of modified serials. Please Check!"; var validator = new Validator(); validator.Validate = delegate() { List <Symbol> switchSymbols = symbols.FindAll(p => p.IsSwitch); List <Comment> switchSerialComments = UnitWiring.Masters.Comments.FindAll(p => p.CategoryId == Const.CommentCategoryId.SerialForUnitWiringOnly); //未登録のスイッチシリアルが付与されているシンボルを詰めるリスト List <Symbol> unregisteredSwitches = new List <Symbol>(); foreach (Symbol switchSymbol in switchSymbols) { Attribute switchSerialAttr = switchSymbol.Attributes.Find(p => p.Tag == Const.AttributeTag.SWITCH_SERIAL); if (switchSerialAttr == null) { continue; } if (!switchSerialComments.Exists(p => p.Text == switchSerialAttr.Value)) { unregisteredSwitches.Add(switchSymbol); } } if (unregisteredSwitches.Count == 0) { return(null); } var error = new ErrorDialog(messageId); unregisteredSwitches.ForEach(p => error.AddInfo(p)); return(error); }; validator.Run(messageId); }