OpenAndActivateDocument генерирует ArgumentException - PullRequest
0 голосов
/ 13 февраля 2020

Мне нужно вызвать функцию, для которой мой активный документ должен быть закрыт. Поскольку я не могу закрыть активный документ, я создаю пустой проект и использую OpenAndActivateDocument, чтобы установить пустой проект активным. Затем я закрываю первый документ и вызываю эту функцию, после чего вызываю OpenAndActivateDocument, чтобы заново открыть первый документ. Когда я вызываю OpenAndActivateDocument, генерируется ArgumentException: файл не является документом Revit.

Я проверил строку filePath перед исключением, и это действительный путь к проекту.

Здесь мой код:

try{
 string filePath = mainDoc.PathName;
      string fileName = Path.GetFileNameWithoutExtension(filePath);
      try { mainDoc.Save(); } catch (Exception) { }
      Document placeHolder = uiapp.Application.NewProjectDocument(UnitSystem.Metric);     //Creo un progetto temporaneo vuoto
      if (File.Exists(@"C:\Users\Public\placeholder.rvt")) {
        File.Delete(@"C:\Users\Public\placeholder.rvt");
      }
      placeHolder.SaveAs(@"C:\Users\Public\placeholder.rvt");
      placeHolder = uiapp.OpenAndActivateDocument(placeHolder.PathName).Document;                                //Apro il progetto temporaneo e lo attivo
      mainDoc.Close(false);                                                               //Chiudo il progetto precedente

      if (!Documenta.messageBroker.SCheckInDoc(fileName, DcmRPC.DcmEnum.enumCheckinType.AutoIn, 0)) {   //Faccio il checkin del progetto
        TaskDialog.Show("Errore", "Impossibile effettuare il check in, codice documento: " + fileName);
        return Result.Failed;
      }

      mainDoc = uiapp.OpenAndActivateDocument(filePath).Document;                                            //Riapro il progetto principale
      placeHolder.Close(false);                                                           //Chiudo il progetto temporaneo
      if (File.Exists(@"C:\Users\Public\placeholder.rvt")) {
        File.Delete(@"C:\Users\Public\placeholder.rvt");
      }
    }
    catch (Exception exc) {
      TaskDialog.Show("Errore", exc.ToString());
      message = exc.Message;
      return Result.Failed;
    }

1 Ответ

0 голосов
/ 14 февраля 2020

Решил это. На диске просто не хватило места.

...