我想将一些诊断输出发送到默认的report.txt 文件。
在一些帖子中,显示异常以某种方式记录到此 report.txt 文件中(自动或不?)。
另外,我在一些示例中看到人们使用以下方式进行日志记录
System.Console.WriteLine(),
我已经尝试过,但仍然无法在报告文件中看到它。
你能告诉我,如何实现这一目标吗?我知道可以选择创建另一个日志文件并将其与结果一起发送回来,但我认为使用现有的 report.txt 会更容易。
谢谢!
更新: System.Console.WriteLine() 有效。
我没有看到输出的原因是我的加载项加载失败。所以,它根本就没有到达这行代码。
我在 pyRevit 环境中使用 Iron python,我的代码如下:
element_types = \
DB.FilteredElementCollector(doc)\
.OfCategory(DB.BuiltInCategory.OST_Walls)\
.WhereElementIsElementType()\ # getting family types not elements
.ToElements()
for ele in element_types:
print(ele.Name)
Run Code Online (Sandbox Code Playgroud)
根据 Revit API 文档,这应该可以工作,并且可能在 C# 中工作。ele.Name既可以作为 setter也可以作为 getter 使用。但是在 Ironpython 上面的代码失败,返回一个AttributeError: Name. 但是当我尝试时ele.Name = "new_family_type_name"它工作正常。
所以我的问题是如何进行ele.Name工作以获取家庭类型名称。
不允许从在API上下文之外运行的外部应用程序启动事务.无法启动交易.
对于Revit插件,我编写了以下代码:
public Result Execute(ExternalCommandData commandData,
ref string message, ElementSet elements)
{
try
{
Global.GetInstance(commandData);
message = "Studio Launcher";
var mw = new MainWindow();
mw.ShowDialg();
}
catch (Exception)
{
TaskDialog.Show("Failure", "Please Open or Create a document");
return Result.Failed;
}
return Result.Succeeded;
}
Run Code Online (Sandbox Code Playgroud)
在这个插件中MainWindow有一个用户界面,用户可以与之交互,并且一些交易在那里发生。
它很有魅力,但形式不是无模式的,因为插件与其Revit本身位于同一线程中。为了提供无模式窗口,我将其更改mw.ShowDialg();为mw.Show();. 尽管插件成功启动并且 MainWindow 变为无模式并且用户能够同时与插件和 Revit 交互,但当我在 MainWindow 中打开事务时,Revit 崩溃,因为 Execute() 方法在打开该事务之前终止。
如果有任何方法可以为 Revit 开发多线程插件,请帮助我。