Revit API: 日志文件 journal
程序员文章站
2022-06-10 23:27:37
...
前言
Journal 是 Revit 一个非常神奇的功能。当你在操作 Revit 的时候,实际上,Revit 会默默地把你的操作变成程序。而这个程序,可以回放。如果有自己的插件,暂时没有找到成功的方法,可能有某些隐藏设置。
官方对于日志文件的解释
关于日志文件
日志文件可以捕捉从软件启动到停止这段时间内,软件在 Revit 会话期间所执行的操作。这些文本文件可用来解决该软件的技术问题。每次使用 Revit 时,该软件都会创建一个新日志文件。编号最高的日志文件是最新文件。默认情况下,日志文件位于以下位置:
%LOCALAPPDATA%\Autodesk\Revit\Autodesk Revit 2021\Journals 在 Windows
中,默认情况下,将隐藏日志文件夹。如果您在 Revit
会话期间遇到问题,支持提供商可能会要求您发送日志文件和所有备份文件,以帮助解决问题。如果您在会话期间没有遇到问题,那么日志文件几乎没有什么用处,可将其删除。要自动删除较早的日志文件,请参见“常规选项”。
日志回放
对于二次开发,比较关心的是日志的回放功能。
通过 API 写入:
void WriteJournalData(ExternalCommandData commandData)
{
// Get the StringStringMap class which can write data into.
IDictionary<String, String> dataMap = commandData.JournalData;
dataMap.Clear();
// Begin to add the support data
dataMap.Add("Name", "Autodesk.Revit");
dataMap.Add("Information", "This is an example.");
dataMap.Add("Greeting", "Hello Everyone.");
}
通过 API 读取:
/// <summary>
/// This sample shows how to get data from journal file.
/// </summary>
void ReadJournalData(ExternalCommandData commandData)
{
// Get the StringStringMap class which can write data into.
IDictionary<String, String> dataMap = commandData.JournalData;
// Begin to get the support data.
String prompt = "Name: " + dataMap["Name"];
prompt += "\nInformation: " + dataMap["Information"];
prompt += "\nGreeting: " + dataMap["Greeting"];
TaskDialog.Show("Revit",prompt);
}
这里, ExternalCommandData
哪里来?
当你调用一个插件命令,即 IExternalCommand
,它在执行的时候就会用到这个。
这也是你读取和写入的入口:
namespace Autodesk.Revit.UI
{
public interface IExternalCommand
{
Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements);
}
}
类 ExternalCommandData
包含三个属性:
namespace Autodesk.Revit.UI
{
public class ExternalCommandData : APIObject
{
public IDictionary<string, string> JournalData { get; set; }
public UIApplication Application { get; set; }
}
}
总结
通常日志回放的实现:
- 在你自己的
IExternalCommand.Execute
执行的时候,把内容记录到ExternalCommandData.JournalData
,这些内容会被记录到日志里面; - 在日志回放的时候,从日志里面把记录的内容读取出来,成为运行
IExternalCommand.Execute
的参数值。
例子,可以参考 Revit SDK 介绍:日志 Journal
。