
###################################
A3DAsmComputeFilePathsFromModelFile
###################################

.. c:function:: A3DStatus A3DAsmComputeFilePathsFromModelFile(const A3DAsmModelFile *pA3DAsmModelFile, A3DUns32 *uNbPartFiles, A3DUTF8Char ***ppPartFilePaths, A3DUns32 *uNbAssemblyFiles, A3DUTF8Char ***ppAssemblyFilePaths, A3DUns32 *uNbMissingFiles, A3DUTF8Char ***ppMissingFilePaths)

   .. rst-class:: sig-pretty-signature
   
      | :c:enum:`~A3DStatus` A3DAsmComputeFilePathsFromModelFile(*const* :c:type:`~A3DAsmModelFile`\ \* **pA3DAsmModelFile**\ , :c:type:`~A3DUns32`\ \* **uNbPartFiles**\ , :c:type:`~A3DUTF8Char`\ \*\*\* **ppPartFilePaths**\ , :c:type:`~A3DUns32`\ \* **uNbAssemblyFiles**\ , :c:type:`~A3DUTF8Char`\ \*\*\* **ppAssemblyFilePaths**\ , :c:type:`~A3DUns32`\ \* **uNbMissingFiles**\ , :c:type:`~A3DUTF8Char`\ \*\*\* **ppMissingFilePaths**\ )
   
   Retrieve file paths constituting a model file, recursively.
   
   ``A3DAsmComputeFilePathsFromModelFile``\ lists all file paths constituting the input model file:*sub-assembly*\ , *part*\ , and *missing*\ files:
   
   
   - All sub-assembly files are stored in ``ppAssemblyFilePaths``\ ,
   - All part files are stored in ``ppPartFilePaths``\ , and
   - All missing files are stored in ``ppMissingFilePaths``\ .
   
   A file path may be referenced both as part or sub-assembly. When this is the case, it is put only into ``ppAssemblyFilePaths``\ .
   
   Traversal starts from ``pA3DAsmModelFile``\ and follows all referenced external files, which means that ``A3DAsmComputeFilePathsFromModelFile``\ will always reference at least one path, corresponding to ``pA3DAsmModelFile``\ .
   
   The missing paths collection (``ppMissingFilePaths``\ ) references files that could not be loaded (incorrect path, permission error, ...).
   
   On success, the function allocates arrays of UTF_8 strings and writes them to the output parameters. The caller is reponsible for this memory.
   
   To release all allocated memory objects, call this function again with ``pA3DAsmModelFile``\ set to *0*\ , passing the same output parameters.
   
   
   ::
   
      A3DUTF8Char**ppPartFilePaths,**ppAssemblyFilePaths,**ppMissingFilePaths;
      A3DUns32uNbPartFiles,uNbAssemblyFiles,uNbMissingFiles;
      
      A3DAsmComputeFilePathsFromModelFile(
      pA3DAsmModelFile,
      &uNbPartFiles,&ppPartFilePaths,
      &uNbAssemblyFiles,&ppAssemblyFilePaths,
      &uNbMissingFiles,&ppMissingFilePaths
      );
      
      //...PathsAvailable...
      
      //Release
      A3DAsmComputeFilePathsFromModelFile(
      0,
      &uNbPartFiles,&ppPartFilePaths,
      &uNbAssemblyFiles,&ppAssemblyFilePaths,
      &uNbMissingFiles,&ppMissingFilePaths
      );
   
   **Parameters**
   
   
      **pA3DAsmModelFile**\ : Input model file. Can be "tree only":c:type:`~A3DAsmModelFile`\ .
   
      **uNbPartFiles**\ : Location to the number of found part files. Cannot be null.
   
      **ppPartFilePaths**\ : Location to the path of each part files. Cannot be null.
   
      **uNbAssemblyFiles**\ : Location to the number of found sub-assembly files.
   
      **ppAssemblyFilePaths**\ : Location to the path of each sub-assembly files.
   
      **uNbMissingFiles**\ : Location to the number of found missing files.
   
      **ppMissingFilePaths**\ : Location to the path of each missing files.
   
   
   **Returns**
   
   
      ``A3D_SUCCESS``\ on success, or an error code on failure
   
   




