
#############################
A3DMiscCascadedAttributesPush
#############################

.. c:function:: A3DStatus A3DMiscCascadedAttributesPush(A3DMiscCascadedAttributes *pAttr, const A3DRootBaseWithGraphics *pBase, const A3DMiscCascadedAttributes *pFather)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DMiscCascadedAttributesPush(:c:type:`~A3DMiscCascadedAttributes`\ * **pAttr**\ , *const* :c:type:`~A3DRootBaseWithGraphics`\ * **pBase**\ , *const* :c:type:`~A3DMiscCascadedAttributes`\ * **pFather**\ )
   
   Computes the result of cascaded attribute propagation from a parent node. 
   
   
      2.0
   
   
   
   In the context of a model file node hierarchy, *cascaded* describes the way an application using HOOPS Exchange will resolve conflicting attributes. Attributes are propagated downstream, by overriding current attributes with the parent node's ones according to specific inheritance rules defined in :ref:`Bit Field for Behavior on Graphics <group__a3d__graphicsbits>`\ .
   
   Although properties propagation can be manually applied if those rules are known, HOOPS Exchange provides ``#A3DMiscCascadedAttributesPush`` as a convenience function.
   
   ``#A3DMiscCascadedAttributesPush`` computes the result of propagating attributes from ``pFather`` to ``pBase`` and writes them into ``pAttr``\ , which data can then be retrieves using ``#A3DMiscCascadedAttributesGet``\ .
   
   ``pBase`` can be any instance of ``#A3DTopoFace`` ``#A3DTopoShell``\ , ``#A3DTopoConnex``\ , ``#A3DRiRepresentationItem``\ , ``#A3DAsmPartDefinition`` or ``#A3DAsmProductOccurrence``\ .
   
   **Parameters**
   
   
      **pAttr**\ : A handle to the resulting cascaded attributes 
   
      **pBase**\ : The child node the attributes are computed from 
   
      **pFather**\ : The attributes held by the parent node 
   
   
   **Returns**
   
   
      ``A3D_SUCCESS`` or an error code in case of failure.
   
   




