.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

how to know current drawing is don't have any xref.

2 REPLIES 2
SOLVED
Reply
Message 1 of 3
RamanSBV
434 Views, 2 Replies

how to know current drawing is don't have any xref.

Hi,

 

How to know current drawing is don't have any xref

 

Regards,

Raman

2 REPLIES 2
Message 2 of 3
kdub_nz
in reply to: RamanSBV

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

Message 3 of 3
Hallex
in reply to: RamanSBV

      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;    

     }

 

_____________________________________
C6309D9E0751D165D0934D0621DFF27919

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost