
########################
A3DCopyAndAdaptBrepModel
########################

.. c:function:: A3DStatus A3DCopyAndAdaptBrepModel(const A3DEntity *p, const A3DCopyAndAdaptBrepModelData *psSetting, A3DEntity **const pp)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DCopyAndAdaptBrepModel(*const* :c:type:`~A3DEntity`\ \* **p**\ , *const* :c:struct:`~A3DCopyAndAdaptBrepModelData`\ \* **psSetting**\ , :c:type:`~A3DEntity`\ \*\* **pp**\ )
   
   Copy and adapt B-rep parameters.
   
   The B-rep used by HOOPS Exchange may not be completely compatible with modeling systems that do not support the full range of B-rep as employed by PRC. This function attempts to convert PRC B-rep into a format that is compatible with your system.
   
   In order to use this function, you create a :c:struct:`~A3DCopyAndAdaptBrepModelData`\ structure and configure it to create a new B-rep model using entities you are able to support. The function can transform predetermined surface types and curves to NURBS. It also can process parametric curves and 3D curves, as well as split periodic parametric surfaces.
   
   :c:struct:`~A3DCopyAndAdaptBrepModelData`\ creates a new, independent B-rep model. To free the allocated memory after its use, the model must be manually deleted after its use by calling :c:func:`~A3DEntityDelete`\. If the new B-rep model is inserted into an existing model tree, however, ownership is transferred to the model tree and explicit deletion of the model is no longer required.
   
   A3DCopyAndAdaptBrepModel will perform the following steps:
   
   **Parameters**
   
   
      **p**\ : A pointer to the source B-rep entity
   
      **psSetting**\ : The structure that defines which types of B-rep you would like to convert to
   
      **pp**\ : A pointer to the result B-rep entity or entities
   
   
   **Returns**
   
   
      ``A3D_SUCCESS``\ on success, or an error code on failure
   
   




