Revit API: 日志文件 journal

本文深入探讨了Revit中的Journal功能,这是一种将用户操作转换为可回放程序的神奇特性。文章详细介绍了如何通过API记录和读取日志数据,以及在二次开发中利用日志回放功能的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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; }
    }
}

总结

通常日志回放的实现:

  1. 在你自己的 IExternalCommand.Execute 执行的时候,把内容记录到 ExternalCommandData.JournalData,这些内容会被记录到日志里面;
  2. 在日志回放的时候,从日志里面把记录的内容读取出来,成为运行 IExternalCommand.Execute 的参数值。
    例子,可以参考 Revit SDK 介绍:日志 Journal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安意诚Matrix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值