public void MainProgram(string FolderPathNWC, string FolderPathNWD, int FileSizeOut, int FileDateOut)
        {
            FileSize = FileSizeOut;
            FileDate = FileDateOut;
            //create NavisworksApplication automation objects
            Autodesk.Navisworks.Api.Automation.NavisworksApplication automationApplication = null;

            //Intiating main process


            Task task = DirIterateAsync(FolderPathNWC, FolderPathNWD, automationApplication);
        }
        void InitiateFileOperations(string ZeroIndEl, string[] FilesList, string DirPathNWD, string dirName, string FileNameNWD)
        {
            //create NavisworksApplication automation object
            Autodesk.Navisworks.Api.Automation.NavisworksApplication automationApplication =
                new Autodesk.Navisworks.Api.Automation.NavisworksApplication();

            automationApplication.OpenFile(ZeroIndEl, FilesList);

            string NWDDir = DirPathNWD + "\\" + dirName + "\\";

            if (Directory.Exists(NWDDir) == false)
            {
                Directory.CreateDirectory(NWDDir);
            }

            automationApplication.SaveFile(NWDDir + "\\" + FileNameNWD);

            Archiving(NWDDir, FileNameNWD);
        }
        public async Task DirIterateAsync(string DirPathNWC, string DirPathNWD, Autodesk.Navisworks.Api.Automation.NavisworksApplication automationApplication)
        {
            string[] NewDir = Directory.EnumerateDirectories(DirPathNWC, "*_*_*_*_*", SearchOption.AllDirectories).ToArray();
            int      i      = 0;

            try
            {
                //Get folders
                foreach (string d in NewDir)
                {
                    i++;
                    // Make a reference to info of a directory.
                    DirectoryInfo di = new DirectoryInfo(d);

                    // Get a reference to each file in that directory.
                    FileInfo[] fiArr = di.GetFiles();


                    if (fiArr.Length != 0)
                    {
                        string dirName     = new DirectoryInfo(d).Name;
                        string FileNameNWD = dirName + "_" + CurDate + ".nwd";

                        string[] FilesList = new string[fiArr.Length];

                        FilesList = GetFilesList(d, fiArr, out string ZeroIndEl, FilesList);

                        if (ZeroIndEl != "")
                        {
                            try
                            {
                                await Task.Run(() => InitiateFileOperations(ZeroIndEl, FilesList, DirPathNWD, dirName, FileNameNWD));
                            }
                            catch (Autodesk.Navisworks.Api.Automation.AutomationException e)
                            {
                                //An error occurred, display it to the user
                                System.Windows.Forms.MessageBox.Show("Error: " + e.Message);
                            }
                            catch (Autodesk.Navisworks.Api.Automation.AutomationDocumentFileException e)
                            {
                                //An error occurred, display it to the user
                                System.Windows.Forms.MessageBox.Show("Error: " + e.Message);
                            }
                            finally
                            {
                                if (automationApplication != null)
                                {
                                    automationApplication.Dispose();
                                    automationApplication = null;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogWriter(ex.ToString(), CurDateTime);
                return;
            }

            await EndTaskAsync();
        }