
###############################
A3DAsmProductOccurrenceDeepCopy
###############################

.. c:function:: A3DStatus A3DAsmProductOccurrenceDeepCopy(const A3DAsmProductOccurrence *pProductOccurrence, A3DAsmProductOccurrence **ppNewProductOccurrence)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DAsmProductOccurrenceDeepCopy(*const* :c:type:`~A3DAsmProductOccurrence`\ \* **pProductOccurrence**\ , :c:type:`~A3DAsmProductOccurrence`\ \*\* **ppNewProductOccurrence**\ )
   
   Creates a new product occurrence by making a deep copy of the data.
   
   The Copy can be processed on a member of an assembly at different levels. Here an assembly sample and the several copied product added.The deep copy will copied all the data and create new part, for the new instances.
   
   The prototype mechanism is still present after the copy to assure the possibility to distinguish instances.Due to his position in the tree the product occurrence of a part can reach its part definition by traversing multiple prototype. It's the case of the product A/B1/C1/D1.
   
   After the deep clone, only last prototype is necessary,All intermediate prototypes are removed and possible redefinition (color,) or data (attributes) are moved to the new product member.
   
   
   ::
   
      A/B1/C1/D1->B/C1/D1->C/D1->D
   
   Becomes
   
   
   ::
   
      CopyA/B1/C1/D1+intermediateproperties->CopyD
   
   **Returns**
   
   
      ``A3D_SUCCESS``\ on success, or an error code on failure
   
   




