Share

AcDbEvalGraph

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

Was this information helpful?