Class Hierarchy
AcRxObject AcGiDrawable AcDbObject AcDbEvalGraph
C++
class AcDbEvalGraph : public AcDbObject;
File
dbeval.h
Description
This class holds the network of interrelated elements that implement the behavior of dynamic blocks. Each individual element (or AcDbEvalExpr) can depend on zero or more other AcDbEvalExpr objects. The role of AcDbEvalGraph is to invoke the AcDbEvalExpr::evaluate() method for each of the elements it contains at the proper time. Before an AcDbEvalExpr can be evaluated, evaluate() must be invoked for any dependent AcDbEvalExpr objects. AcDbEvalGraph uses a directed acyclic graph (DAG) to reprsent the dependencies between AcDbEvalExpr objects. If an AcDbEvalExpr E1 depends on (requires input from) an AcDbEvalExpr E2, an edge from E2 to E1 is represented in the graph. See the ObjectARX Developer's Guide for more information.
Based on which AcDbEvalExpr objects are active during evaluation (in other words, which objects have been directly modified through means such as the Properties palette or grip editing), the subset of AcDbEvalExpr objects that can be reached from the activated set is determined. The resulting subgraph is expected to be a DAG, and is then topologically sorted to determine the order of node evaluation.
The current internal use of this graph class is for dynamic blocks, in which a graph of the expressions is maintained on the block table record. This graph is queried at graph editing time and evaluated in order to trigger the networked nodes (AcDbEvalExpr objects) that, through their evaluate() methods being invoked, implement the dynamic behavior.
Links
AcDbEvalGraph Enumerations, AcDbEvalGraph Methods
See Also
AcDbEvalExpr