newer 发表于 2021-1-12 01:59:43

外部DWG创建 AcDbXRefGraph


问题:

In ObjectARX there only seems to be one function to create an AcDbXRefGraph
of a drawing, this function is called acedGetCurDwgXRefGraph.

The problem is that this only works on the current drawing!! How can I create
an AcDbXRefGraph of an external drawing (AcDbDatabase) that I have read in?


解答:

Here is a function to do the trick.


// ObjectARX defined commands


#include "StdAfx.h"
#include "StdArx.h"


// function to fill in an AcDbXrefGraph with a completed graph of the current drawing's xrefs.
// Returns Acad::eOk if successful.
Acad::ErrorStatus GetXrefGraph (AcDbDatabase *dwgDb, AcDbXrefGraph& graph);


// This is command 'TEST'
void asdktest()
{
// lock the document
AcAxDocLock docLock;
// now read in an external drawing
AcDbDatabase *db = new AcDbDatabase (false);
// if we created the db ok
if (db != NULL)
{
Acad::ErrorStatus es;
// try and read in the drawing
es = db->readDwgFile ("c:\\temp\\114-AB1B2.dwg");
// if ok
if (es == Acad::eOk)
{
   AcDbXrefGraph graph;
   // try out our new function
   GetXrefGraph (db, graph);
   // a little test to see if it worked
   acutPrintf ("\nNumber of nodes = %d", graph.numNodes ());
}
delete db;
}
}


页: [1]
查看完整版本: 外部DWG创建 AcDbXRefGraph