Autodesk.Revit.DB.IGetLocalPathForOpenCallback是Revit API中的接口类型,它用于获取在打开Revit文档时使用的本地路径。其实现类作为参数传递给Autodesk.Revit.DB.Document.LocalFilePath属性的委托。
该方法返回要用于打开文档的本地路径。
string GetLocalPathForOpen(ModelPath centralModelPath, WorksetConfiguration worksetConfiguration);
参数:
centralModelPath
:Revit中央文件的路径worksetConfiguration
:用于打开文档的工作集配置返回值:
string
:用于打开文档的本地路径实现Autodesk.Revit.DB.IGetLocalPathForOpenCallback接口的类应该提供GetLocalPathForOpen方法的实现。
一个实现示例:
public class MyGetLocalPathForOpenCallback : Autodesk.Revit.DB.IGetLocalPathForOpenCallback
{
public string GetLocalPathForOpen(ModelPath centralModelPath, WorksetConfiguration worksetConfiguration)
{
var centralPathStr = centralModelPath.TryGet( typeof( FilePath ) ) as FilePath;
if (centralPathStr == null)
throw new InvalidOperationException("Invalid central model path");
var centralModelDir = Path.GetDirectoryName(centralPathStr.Path);
var localFilePath = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),
"RevitLocal",
Path.GetFileNameWithoutExtension(centralPathStr.Path) + "_" + worksetConfiguration.Name
);
return localFilePath;
}
}
使用IGetLocalPathForOpenCallback时,首先需要在文档中定义一个变量来保存实现IGetLocalPathForOpenCallback接口的类的实例,然后将该实例传递给替代的LocalFilePath属性的委托。例如:
var cb = new MyGetLocalPathForOpenCallback();
doc = Application.OpenDocumentFile(centralModelPath, new OpenOptions { IGetLocalPathForOpenCallback = cb.GetLocalPathForOpen });
在上述示例中,MyGetLocalPathForOpenCallback是一个实现了IGetLocalPathForOpenCallback接口的类的实例,当调用Application.OpenDocumentFile方法时,IGetLocalPathForOpenCallback.GetLocalPathForOpen方法将被调用,并返回要用于打开文档的本地路径。