OpenAndActivateDocument 生成 ArgumentException
OpenAndActivateDocument generates ArgumentException
我必须调用需要关闭活动文档的函数。
由于我无法关闭活动文档,因此我创建了一个空项目并使用 OpenAndActivateDocument 将空项目设置为活动状态。然后我关闭第一个文档并调用该函数,然后调用 OpenAndActivateDocument 重新打开第一个文档。当我调用 OpenAndActivateDocument 时,生成了一个 ArgumentException:该文件不是 Revit 文档。
我检查了异常前的字符串文件路径,它是一个项目的有效路径。
这是我的代码:
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;
}
解决了。磁盘上根本没有足够的 space。
我必须调用需要关闭活动文档的函数。 由于我无法关闭活动文档,因此我创建了一个空项目并使用 OpenAndActivateDocument 将空项目设置为活动状态。然后我关闭第一个文档并调用该函数,然后调用 OpenAndActivateDocument 重新打开第一个文档。当我调用 OpenAndActivateDocument 时,生成了一个 ArgumentException:该文件不是 Revit 文档。
我检查了异常前的字符串文件路径,它是一个项目的有效路径。
这是我的代码:
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;
}
解决了。磁盘上根本没有足够的 space。