private void AddWagoKlemme(Project xmlProject, ref int position, string articleNo, string marking = null) { var article = new Article { ArticleNo = articleNo, Position = position++ }; if (!string.IsNullOrEmpty(marking)) { article.Marking = new Marking(); article.Marking.Lines.Add(marking); } xmlProject.Carrier.ProjectArticles.Add(article); }
private void WriteWagoXmlFile(PlanData data, string xmlFileName, TrageschieneKonfiguration tragschienenKonfiguration) { // jedes Listenelement entspricht einer var xmlProject = new Project { Name = data.documentData.projectAddress.Replace("\n", "- ") }; // Tragschiene xmlProject.Carrier = new Carrier { ArticleNo = "210-112", Name = data.documentData.projectName }; var outNodes = data.treeNodeDatas.Values.OfType <TreeNodeDataOut>().ToList(); string letzteKlemmleiste = string.Empty; string klemmeKlemmleistenEnde = string.Empty; // Klemme die am Ende einer Klemmleiste hinzugefügt werden muss string klemmeMarking = string.Empty; int position = 1; foreach (var nodeData in outNodes .Where(x => tragschienenKonfiguration.Klemmleisten.Contains(x.klemmleiste)) // nur die angegebenen Klemmleisten exportieren //.OrderBy( x => tragschienenKonfiguration.IndexOf(x.klemmleiste)) // die Reihenfolge wird durch die Konfiguration definiert. .OrderBy(x => x.KlemmleisteNummer) .ThenBy(x => x.klemmenBlockNummer)) { if (letzteKlemmleiste != nodeData.klemmleiste) { if (!string.IsNullOrEmpty(klemmeKlemmleistenEnde)) { AddWagoKlemme(xmlProject, ref position, klemmeKlemmleistenEnde); klemmeKlemmleistenEnde = string.Empty; } // für 230V Klemmleisten werden Einspeiseklemme und Sammelschienenträger hinzugefügt if (nodeData.Type == "out") { // Einspeiseklemme sofort hinzufügen AddWagoKlemme(xmlProject, ref position, _reihenklemmenCfg["WagoEinspeiseklemme"], nodeData.klemmleiste); // Sammelschienenträger merken wir uns bis zum Ende der Klemmleiste klemmeKlemmleistenEnde = _reihenklemmenCfg["WagoSammelschienenträger"]; } else { // ansonsten beschriften wir die erste Klemme mit dem Namend er Klemmleiste klemmeMarking = nodeData.klemmleiste; } } letzteKlemmleiste = nodeData.klemmleiste; int currentKlemmeNrInLeiste = 0; var reihenklemmen = _reihenklemmenCreator.CreateReihenklemmen(nodeData, ref currentKlemmeNrInLeiste); if (!reihenklemmen.Any()) { continue; } for (int idx = 0; idx < reihenklemmen.Count; idx++) { var currentKlemme = reihenklemmen[idx]; AddWagoKlemme(xmlProject, ref position, currentKlemme.ArticleNo, klemmeMarking); klemmeMarking = string.Empty; } } // evtl. fehlt noch der Sammelschienenträger if (!string.IsNullOrEmpty(klemmeKlemmleistenEnde)) { AddWagoKlemme(xmlProject, ref position, klemmeKlemmleistenEnde); } var wagoXmlCae = new WagoXmlCae { Project = xmlProject }; SaveWagoXmlFile(wagoXmlCae, xmlFileName); }