// TODO: Add tests public (Database, TemplateDrawingObject) GetTemplate(Guid id) { if (Contains(id)) { Database template = new Database(); template.ReadDwgFile(Path, FileOpenMode.OpenForReadAndAllShare, false, null); template.CloseInput(true); using (Transaction trans = template.TransactionManager.StartTransaction()) { IEnumerable <BlockTableRecord> definitions = template.GetAllBlockDefinitions(); foreach (BlockTableRecord blockTableRecord in definitions) { BlockDrawingObject blockDrawingObject = new BlockDrawingObject(template); blockDrawingObject.BaseObject = blockTableRecord.ObjectId; if (blockDrawingObject.HasKey(TemplateDrawingObject.TEMPLATE_ID_KEY) && new Guid(blockDrawingObject[TemplateDrawingObject.TEMPLATE_ID_KEY]) == id) { TemplateDrawingObject templateObject = new TemplateDrawingObject(template); templateObject.BaseObject = blockDrawingObject.BaseObject; return(template, templateObject); } } } throw new InvalidOperationException("Key not found"); } else { throw new InvalidOperationException("Key not recognised"); } }
// TODO: Add tests public override void Load() { using (Database template = new Database()) { template.ReadDwgFile(Path, FileOpenMode.OpenForReadAndAllShare, false, null); template.CloseInput(true); using (Transaction trans = template.TransactionManager.StartTransaction()) { IEnumerable <BlockTableRecord> definitions = template.GetAllBlockDefinitions(); foreach (BlockTableRecord blockTableRecord in definitions) { BlockDrawingObject blockDrawingObject = new BlockDrawingObject(template); blockDrawingObject.BaseObject = blockTableRecord.ObjectId; if (blockDrawingObject.HasKey(TemplateDrawingObject.TEMPLATE_ID_KEY)) { BlockNode newNode = new BlockNode(this.Path, CacheDisabled, blockDrawingObject.Name); newNode.Load(blockDrawingObject); _containedTemplates.Add(newNode.TemplateId); this.Children.Add(newNode); } } } } }
public static DetailPlotMaster Create(Document doc, string plotTypeName) { BlockDrawingObject blockDrawingObject = BlockDrawingObject.Create(doc.Database, plotTypeName); DetailPlotMaster newPlotMaster = new DetailPlotMaster(doc); newPlotMaster.BaseObject = blockDrawingObject.BaseObject; newPlotMaster.PlotTypeName = plotTypeName; DataService.Current.GetStore <HousingDocumentStore>(doc.Name).GetManager <DetailPlotMasterManager>().Add(newPlotMaster); return(newPlotMaster); }
public static void BlockToTemplate() { TypedValue[] acTypValAr = new TypedValue[1]; acTypValAr.SetValue(new TypedValue((int)DxfCode.Start, "INSERT"), 0); SelectionFilter acSelFtr = new SelectionFilter(acTypValAr); PromptSelectionResult acSSPrompt = Application.DocumentManager.MdiActiveDocument.Editor.GetSelection(acSelFtr); Document currentDoc = Application.DocumentManager.MdiActiveDocument; if (acSSPrompt.Status == PromptStatus.OK) { if (acSSPrompt.Value.Count > 1) { throw new ArgumentOutOfRangeException("More items than expected"); } using (Transaction trans = Application.DocumentManager.MdiActiveDocument.TransactionManager.StartTransaction()) { DocumentCollection acDocMgr = Application.DocumentManager; Document newDoc = acDocMgr.Add(""); using (DocumentLock lockObj = newDoc.LockDocument()) { using (Transaction destinationTrans = newDoc.TransactionManager.StartTransaction()) { BlockReference refObj = (BlockReference)trans.GetObject(acSSPrompt.Value[0].ObjectId, OpenMode.ForWrite); BlockRefDrawingObject reference = new BlockRefDrawingObject(currentDoc, refObj); Database source = Application.DocumentManager.MdiActiveDocument.Database; BlockDrawingObject newInstance = reference.GetBlock().TransferToDocument(newDoc); TemplateDrawingObject blockDefinition = newInstance.ConvertToTemplate(); destinationTrans.Commit(); } } Application.DocumentManager.MdiActiveDocument = newDoc; } } }
public void Load(BlockDrawingObject blockDrawingObject) { TemplateId = new Guid(blockDrawingObject[TemplateDrawingObject.TEMPLATE_ID_KEY]); }