public void UpdatePariProj() { log.Info("\nUpdatePariProj"); try { var doc = Application.DocumentManager.MdiActiveDocument; var editor = doc.Editor; var lg = new Logger(editor, log); lg.Info("Starte Update..."); var factory = new Factory(); IPariDatabase database = factory.CreatePariDatabase(); if (!CheckTableValidity(database)) { return; } var blockReader = new BlockReader(); blockReader.ReadBlocksFromModelspace(); var blockInfos = blockReader.BlockInfos; var wohnungInfos = blockReader.WohnungInfos; if (CheckBlockWohnungConsistencyAskUser(blockInfos, wohnungInfos)) { return; } var projektInfo = blockReader.ProjektInfo; if (projektInfo == null) { var msg = string.Format(CultureInfo.CurrentCulture, "Der ProjektInfo-Block existiert nicht in der Zeichnung!"); log.Error(msg); Application.ShowAlertDialog(msg); return; } lg.Info(string.Format(CultureInfo.CurrentCulture, "Projekt-ID: {0}", database.GetProjektId(projektInfo))); var tableUpdater = new TableUpdater(); tableUpdater.Update(blockInfos, wohnungInfos, projektInfo, database); tableUpdater.LogStatus(lg); if (CheckInvalidCategoriesAskUser(tableUpdater)) { return; } database.UpdateDatabase(tableUpdater, projektInfo); lg.Info("\n\nUpdatebeendet."); } catch (Exception ex) { log.Error(ex.Message, ex); Application.ShowAlertDialog(ex.Message); } }
public static void PariKommaPruef() { var doc = Application.DocumentManager.MdiActiveDocument; var ed = doc.Editor; try { ClearImpliedSelection(ed); var blockReader = new BlockReader(); if (!CheckInvalidKomma(Globs.RaumBlockName, "Raumblöcke", HasRaumblockInvalidKomma, blockReader, ed)) { CheckInvalidKomma(Globs.WohnunginfoBlockName, "Wohnungsblöcke", HasWohnungblockInvalidKomma, blockReader, ed); } } catch (Autodesk.AutoCAD.Runtime.Exception ex) { ed.WriteMessage(ex.Message); } }
public void ExcelPari() { log.Info("ExcelPari"); try { var fact = new Factory(); var excelExporter = fact.CreateVisualOutputHandler(); var database = fact.CreatePariDatabase(); var dwgPrefix = Application.GetSystemVariable("DwgPrefix").ToString(); var dwgName = Application.GetSystemVariable("DwgName").ToString(); int projektId = -1; var doc = Application.DocumentManager.MdiActiveDocument; _AcEd.PromptIntegerOptions inOpts = new _AcEd.PromptIntegerOptions("\nId des Projekts, für das eine Exceldatei erstellt werden soll <Return für aktuelles>: "); inOpts.AllowNegative = false; inOpts.AllowNone = true; var intRes = doc.Editor.GetInteger(inOpts); if (intRes.Status == _AcEd.PromptStatus.OK) { projektId = intRes.Value; var pi = database.ListProjInfos().FirstOrDefault(x => x.ProjektId == projektId); if (pi == null) { var msg = string.Format(CultureInfo.CurrentCulture, "Das Projekt mit Id {0} existiert nicht in der Datenbank!", projektId); log.Error(msg); Application.ShowAlertDialog(msg); return; } } else if (intRes.Status == _AcEd.PromptStatus.None) { var blockReader = new BlockReader(); blockReader.ReadBlocksFromModelspace(); var projektInfo = blockReader.ProjektInfo; if (projektInfo == null) { var msg = string.Format(CultureInfo.CurrentCulture, "Der ProjektInfo-Block existiert nicht in der Zeichnung!"); log.Error(msg); Application.ShowAlertDialog(msg); return; } projektInfo.DwgName = dwgName; projektInfo.DwgPrefix = dwgPrefix; projektId = database.GetProjektId(projektInfo); if (projektId < 0) { var msg = string.Format(CultureInfo.CurrentCulture, "Das Projekt wurde nicht gefunden in der Datenbank!"); log.Error(msg); Application.ShowAlertDialog(msg); return; } } doc.Editor.WriteMessage("\nExport wird gestartet..."); //var targetFile = Path.Combine(dwgPrefix, Path.GetFileNameWithoutExtension(dwgName) + "_NW" + ".xlsx"); excelExporter.ExportNW(database, null, projektId); excelExporter.ExportNF(database, null, projektId); doc.Editor.WriteMessage("\nExport fertiggestellt."); } catch (Exception ex) { log.Error(ex.Message, ex); Application.ShowAlertDialog(ex.Message); } }
public void ExportPari() { log.Info("ExportPari"); try { var factory = new Factory(); IPariDatabase database = factory.CreatePariDatabase(); if (!CheckTableValidity(database)) { return; } var blockReader = new BlockReader(); blockReader.ReadBlocksFromModelspace(); var blockInfos = blockReader.BlockInfos; var wohnungInfos = blockReader.WohnungInfos; var projektInfo = blockReader.ProjektInfo; if (projektInfo == null) { var msg = string.Format(CultureInfo.CurrentCulture, "Der ProjektInfo-Block existiert nicht in der Zeichnung!"); log.Error(msg); Application.ShowAlertDialog(msg); return; } var dwgName = Application.GetSystemVariable("DwgName").ToString(); var dwgPrefix = Application.GetSystemVariable("DwgPrefix").ToString(); projektInfo.DwgName = dwgName; projektInfo.DwgPrefix = dwgPrefix; var projektId = database.GetProjektId(projektInfo); if (projektId >= 0) { var msg = string.Format(CultureInfo.CurrentCulture, "Das Projekt '{0}' existiert bereits! ProjektId = {1}.", projektInfo.Bauvorhaben, projektId); log.Error(msg); Application.ShowAlertDialog(msg); return; } var tableBuilder = new TableBuilder(); tableBuilder.Build(blockInfos, wohnungInfos); if (CheckInvalidCategoriesAskUser(tableBuilder)) { return; } var doc = Application.DocumentManager.MdiActiveDocument; var editor = doc.Editor; database.SaveToDatabase(tableBuilder, projektInfo); var raumWithoutTop = tableBuilder.RaumTable.Where(x => string.IsNullOrEmpty(x.Top)).ToList(); if (raumWithoutTop.Count > 0) { editor.WriteMessage("\nFolgende Räume haben keine TOP-Information: "); editor.WriteMessage("\n-----------------------------------------------------------------"); foreach (var ri in raumWithoutTop) { var msg = string.Format(CultureInfo.CurrentCulture, "\nRaum: {0}\tGeschoss: {1}\tNutzwert: {2}\tHandle: {3}", ri.Raum, ri.Lage, ri.RNW, ri.AcadHandle); log.Warn(msg); editor.WriteMessage(msg); } } editor.WriteMessage("\n\nExport beendet."); } catch (Exception ex) { log.Error(ex.Message, ex); Application.ShowAlertDialog(ex.Message); } }
private static bool CheckInvalidKomma(string blockName, string blockNameStringPlural, Func <_AcDb.BlockReference, bool> checkFunc, BlockReader blockReader, _AcEd.Editor ed) { var invalidRaumblocks = blockReader.GetAllBlocksInModelSpaceWith(checkFunc, blockName); if (invalidRaumblocks.Count > 0) { ed.WriteMessage(string.Format(CultureInfo.CurrentCulture, "\nAnzahl gefundener {1} mit Komma: {0}", invalidRaumblocks.Count, blockNameStringPlural)); ed.SetImpliedSelection(invalidRaumblocks.ToArray()); return(true); } ed.WriteMessage(string.Format(CultureInfo.CurrentCulture, "\nEs wurden keine {0} mit Komma gefunden.", blockNameStringPlural)); return(false); }