Exemple #1
0
        private static bool HasWohnungblockInvalidKomma(_AcDb.BlockReference blockRef)
        {
            var attDict  = Globs.GetAttributesUcKey(blockRef);
            var nutzwert = Globs.GetValOrEmpty("NUTZWERT", attDict);

            if (nutzwert.IndexOf(".", StringComparison.Ordinal) >= 0)
            {
                return(true);
            }
            return(false);
        }
        public void ReadBlocksFromModelspace()
        {
            _blockInfos.Clear();
            _wohnungInfos.Clear();
            _projektInfo = null;

            var doc = Application.DocumentManager.MdiActiveDocument;
            var db  = doc.Database;

            using (_AcDb.Transaction tr = doc.TransactionManager.StartTransaction())
            {
                _AcDb.BlockTable       bt  = (_AcDb.BlockTable)tr.GetObject(db.BlockTableId, _AcDb.OpenMode.ForRead);
                _AcDb.BlockTableRecord btr = (_AcDb.BlockTableRecord)tr.GetObject(bt[_AcDb.BlockTableRecord.ModelSpace], _AcDb.OpenMode.ForRead);

                foreach (var oid in btr)
                {
                    var blockRef = tr.GetObject(oid, _AcDb.OpenMode.ForRead) as _AcDb.BlockReference;
                    if (blockRef != null)
                    {
                        if (string.Compare(blockRef.Name, Globs.RaumBlockName, StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            var attDict   = Globs.GetAttributesUcKey(blockRef);
                            var blockInfo = new BlockInfo
                            {
                                Raum       = Globs.GetValOrEmpty("RAUM", attDict),
                                Flaeche    = Globs.GetValOrEmpty("FLÄCHE", attDict),
                                Zusatz     = Globs.GetValOrEmpty("ZUSATZ", attDict),
                                Top        = Globs.GetValOrEmpty("TOP", attDict),
                                Geschoss   = Globs.GetValOrEmpty("GESCHOSS", attDict),
                                Nutzwert   = Globs.GetValOrEmpty("NUTZWERT", attDict),
                                Begrundung = Globs.GetValOrEmpty("BEGRUNDUNG", attDict),
                                Handle     = blockRef.Handle.ToString()
                            };
                            _blockInfos.Add(blockInfo);
                        }
                        else if (string.Compare(blockRef.Name, Globs.GstinfoBlockName, StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            if (_projektInfo == null)
                            {
                                _projektInfo = _factory.CreateProjectInfo();                       // new AcadPari.ProjektInfo();
                            }
                            var attDict = Globs.GetAttributesUcKey(blockRef);
                            _projektInfo.Bauvorhaben       = Globs.GetValOrEmpty("BAUVORHABEN", attDict);
                            _projektInfo.Katastralgemeinde = Globs.GetValOrEmpty("KATASTRALGEMEINDE", attDict);
                            _projektInfo.EZ = Globs.GetValOrEmpty("EZ", attDict);

                            var subInfo = _factory.CreateSubInfo(); // new AcadPari.ProjektInfo.SubInfo();
                            subInfo.Gstnr      = Globs.GetValOrEmpty("GRUNDSTÜCKSNUMMER", attDict);
                            subInfo.Flaeche    = Globs.GetValOrEmpty("FLACHE", attDict);
                            subInfo.AcadHandle = blockRef.Handle.ToString();
                            _projektInfo.SubInfos.Add(subInfo);
                        }
                        else if (string.Compare(blockRef.Name, Globs.WohnunginfoBlockName, StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            var attDict     = Globs.GetAttributesUcKey(blockRef);
                            var wohnungInfo = new WohnungInfo
                            {
                                Top      = Globs.GetValOrEmpty("TOP", attDict),
                                Typ      = Globs.GetValOrEmpty("TYP", attDict),
                                Widmung  = Globs.GetValOrEmpty("WIDMUNG", attDict),
                                Nutzwert = Globs.GetValOrEmpty("NUTZWERT", attDict),
                            };
                            _wohnungInfos.Add(wohnungInfo);
                        }
                    }
                }
                tr.Commit();
            }

            WidmungNutzwertBegrundungCorrection();
        }