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); } }
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); }