示例#1
1
        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);
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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);
        }