外部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]