Exemple #1
0
        public void TestSetDocumentScanned()
        {
            db.Clear();

            string expectedFileId = "bc6a1669-51ce-444c-94c6-cfec71c0f44d";
            string jsonFile       = @"
            {
	            'ClassName': 'File',
	            'FileId': 'bc6a1669-51ce-444c-94c6-cfec71c0f44d',
	            'Hash': 'd520b80512f226e81dd72294037657fd',
	            'Path': '\\\\FILESERVER\\home\\#АРХИВ 2014\\Объекты\\МНОГОТОПЛИВНАЯ АЗС №15\\задание на фундаменты.dwg',
	            'Scanned': false
            }";
            string jsonPxy        = @"
            {
	            'ClassName': 'AcDbProxy',
	            'FileId': 'bc6a1669-51ce-444c-94c6-cfec71c0f44d',
	            'Hash': 'd520b80512f226e81dd72294037657fd',
	            'Path': '\\\\FILESERVER\\home\\#АРХИВ 2014\\Объекты\\МНОГОТОПЛИВНАЯ АЗС №15\\задание на фундаменты.dwg',
	            'Scanned': false
            }";
            string jsonBlk        = @"
            {
	            'ClassName': 'AcDbBlockTableReference',
	            'FileId': 'bc6a1669-51ce-444c-94c6-cfec71c0f44d',
	            'Hash': 'd520b80512f226e81dd72294037657fd',
	            'Path': '\\\\FILESERVER\\home\\#АРХИВ 2014\\Объекты\\МНОГОТОПЛИВНАЯ АЗС №15\\задание на фундаменты.dwg',
	            'Scanned': false
            }";

            db.InsertIntoFiles(jsonFile);
            db.InsertIntoFiles(jsonPxy);
            db.InsertIntoFiles(jsonBlk);

            db.SetDocumentScanned(expectedFileId);
            List <CrawlDocument> docList = db.GetFile(expectedFileId);

            Assert.AreEqual(1, docList.Count);

            foreach (CrawlDocument cd in docList)
            {
                Assert.AreEqual(expectedFileId, cd.FileId);
                Assert.IsTrue(cd.Scanned);
            }
        }
Exemple #2
0
        public void ScanDocument()
        {
            //Если документ неправильно зачитался то выходим
            if (this.teighaDocument == null)
            {
                return;
            }

            using (Transaction tr = this.teighaDocument.TransactionManager.StartTransaction())
            {
                PromptSelectionResult r = this.teighaDocument.Editor.SelectAll();

                //Пробегаем по всем объектам в чертеже
                foreach (SelectedObject obj in r.Value)
                {
                    string objId       = obj.ObjectId.ToString();
                    string objectJson  = jsonGetObjectData(obj.ObjectId);
                    string objectClass = obj.ObjectId.ObjectClass.Name;

                    if (!string.IsNullOrEmpty(objectJson))
                    {
                        this.sqlDB.SaveObjectData(objectJson, this.FileId);
                    }
                }
                //Пробегаем все определения блоков
                List <ObjectId> blocks = GetBlocks(this.teighaDocument);
                foreach (ObjectId btrId in blocks)
                {
                    BlockTableRecord btr = (BlockTableRecord)btrId.GetObject(OpenMode.ForRead);
                    DocumentFromBlockOrProxy(btrId, this.FileId);
                }

                //Пробегаем все определения слоев
                //http://forums.autodesk.com/t5/net/how-to-get-all-names-of-layers-in-a-drawing-by-traversal-layers/td-p/3371751
                LayerTable lt = (LayerTable)this.teighaDocument.Database.LayerTableId.GetObject(OpenMode.ForRead);
                foreach (ObjectId ltr in lt)
                {
                    string           objId       = ltr.ToString();
                    string           objectClass = ltr.ObjectClass.Name;
                    LayerTableRecord layerTblRec = (LayerTableRecord)ltr.GetObject(OpenMode.ForRead);

                    crawlAcDbLayerTableRecord cltr = new crawlAcDbLayerTableRecord(layerTblRec);
                    string objectJson = jsonHelper.To <crawlAcDbLayerTableRecord>(cltr);


                    this.sqlDB.SaveObjectData(objectJson, this.FileId);
                }

                //Пробегаем внешние ссылки
                List <CrawlDocument> xrefs = GetXrefs(this.teighaDocument);
                foreach (CrawlDocument theXref in xrefs)
                {
                    crawlAcDbDocument cDoc = new crawlAcDbDocument(theXref);
                    sqlDB.InsertIntoFiles(theXref);

                    cDoc.sqlDB = sqlDB;
                    cDoc.ScanDocument();
                }
            }
            this.teighaDocument.CloseAndDiscard();

            sqlDB.SetDocumentScanned(this.FileId);
        }