Try here
http://www.theswamp.org/index.php?topic=22884.msg275290#msg275290
but long story short :
Document doc = acadApp.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; // Get the xref graph for the current dbase... XrefGraph xrefGraph = db.GetHostDwgXrefGraph(true); if (xrefGraph == null || xrefGraph.IsEmpty || xrefGraph.NumNodes == 1) { ed.WriteMessage("\nNo xrefs found."); return; }
// Called Kerry in my other life.
Everything will work just as you expect it to, unless your expectations are incorrect.
class keyThumper<T> : Lazy<T>; another Swamper
You may want to loop through BlockTable and check
all BlockTableRecord on properties:
IsFromExternalReference or IsFromOverlayReference
Not tested, just was written in notepad
[CommandMethod("xrf")] public static void testXref() { bool whatabout = XrefIncluded(); Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(string.Format("Xref?\t{0}", whatabout)); } public static bool XrefIncluded() { bool include = false; Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; using (Transaction tr = db.TransactionManager.StartTransaction()) { BlockTable bt = tr.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; foreach (ObjectId id in bt) { BlockTableRecord btr = tr.GetObject(id, OpenMode.ForRead, false) as BlockTableRecord; // check if Xref if (btr.IsFromExternalReference || btr.IsFromOverlayReference) { include= true; break; } } tr.Commit(); } return include; }