The AcDbAssocAction objects follow the regular deep cloning and wblockcloning rules. AcDbAssocAction is a hard owner of its AcDbAssocDependencies, so when an action is cloned, its dependencies are also cloned. When an action is hard owned by an AcDbAssocNetwork and the network is cloned, the action is also cloned. The AcDbAssocAction::addMoreObjectsToDeepClone() method is provided for more control over cloning, and to reduce the need for application developers to implement custom deep cloning reactors. Client code can provide its own implementation by overriding the corresponding AcDbAssocActionBody::addMoreObjectsToDeepCloneOverride() method.
The Parametric Drawing Framework keeps track of objects that have been deep cloned and that have dependencies attached to them. After the original set of objects have been cloned, addMoreObjectsToDeepClone() is called on all the actions that have dependencies on objects that have been cloned. These actions can then add more objects to clone, as well as adding themselves to be cloned. Note that although the objects will have already been cloned at this time, the ids will not have been translated yet; it is not advisable to traverse or inspect the object clones; only the original objects can be safely inspected.
Applications can do additional work by overriding and implementing the AcDbAssocActionBody::postProcessAfterDeepCloneOverride() method. The source actions can obtain their own clones or clones of other objects by consulting the provided AcDbIdMapping. The AcDbAssoc2dConstraintGroup objects add themselves to be cloned if they reference geometries that have been cloned. The Constraint Group clone is then pruned to only contain constraints that are between geometries that have all been cloned. Constraints referencing geometries that haven't been cloned are removed from the Constraint Group clone. If a Constraint Group is cloned, it also requests cloning for the AcDbAssocVariables that provide values for the dimensional constraints owned by the Constraint Group and the AcDbDimensions that serve as graphical representations of the dimensional constraints.