问题标签 [pyrevit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
84 浏览

python - RevitPythonShell 用户输入 raw_input 错误

有人知道如何在 RevitPythonShell 2018.1.0.0 中修复此错误吗?

在此处输入图像描述

0 投票
2 回答
1050 浏览

c# - Revit API - C# - 如何在视口上设置视图标题

我正在尝试使用 Revit API 设置视图标题以显示在 Revit 项目中,但我不知道如何访问它。

我可以在图纸上放置一个视口并将视图标题系列加载到项目中,但我无法将加载的视图标题分配给视口。有没有人有这方面的运气?

这是我正在尝试做的一些照片:

1) 视图放置在图纸上。不是问题 视图放置在图纸上。 不是问题

2)编辑视图类型和更改视图标题使用“View Title w sheet” 在此处输入图像描述

3)将显示延长线更改为“是” 在此处输入图像描述

4)让它看起来像这样。 在此处输入图像描述

以下是我一直在查看的一些资源: https ://thebuildingcoder.typepad.com/blog/2013/01/changeing-viewport-type.html <-- 显示如何将视口类型更改为已创建的视口类型。

https://forums.autodesk.com/t5/revit-api-forum/move-title-of-a-viewport/td-p/5598602 <--显示如何移动视图标题

**************更新**********************

我以为我让它完美地工作,我没有。

第一次单击该按钮时,除了未设置“标题”参数外,一切正常。它仍然显示<none>

创建视口时,再次单击该按钮会向我发送内部定义错误。

如果我将Title手动设置为加载的视图标题系列,应用更改,将其重置为<none>,应用更改,然后点击按钮。有用。在我应用更改之前,几乎就像家庭不被视为合法的视图标题选项一样。

这是我的代码:

0 投票
2 回答
744 浏览

c# - Revit API - 抛出异常:RevitAPI.dll 中的“Autodesk.Revit.Exceptions.InternalException” - 尝试两次运行按钮时

客观的

大家好,我正在 Revit 中制作一个按钮,用于将单个视口添加到新工作表,然后更改视口以显示 viewTitle 而不是空的或只是一行

错误

当我第一次运行该按钮时,除了视图标题未设置为加载的系列外,一切正常,尽管视图标题“行”正在显示。当我第二次运行该按钮时出现我的错误。

这是我第二次尝试运行按钮时遇到的错误:

错误发生在这一行:

勘探

根据我的研究,该按钮正在尝试访问已被访问的元素,但如果我正在更改比例,我应该能够更改 ViewTitle。请参阅此问题底部的参考资料

这是我在交易中的一些代码

我发现 如果我从我的代码中删除这一行: bool elementType = doc.GetElement(newViewPort.GetTypeId()).get_Parameter(BuiltInParameter.VIEWPORT_ATTR_LABEL_TAG).Set(viewTitleIdCommand);

它可以工作,并且只能重复创建新图纸和放置带有视图标题行的视口。

任何和所有的帮助表示赞赏。 此处的此链接显示了 2 个单独的事务提交如何解决了该问题,但是我尝试了它并没有用。这个显示类似的东西

这是对我关于按钮的其他相关问题的参考

0 投票
2 回答
433 浏览

python - Revit 使用 Python,按族过滤(族符号)

我刚刚开始使用 Revit API,我有一个问题。我现在一直在寻找一种按族过滤 Revit 元素的方法。这是我的程序:首先我做了一个过滤元素收集器来获取所有家庭符号 ID。

这应该让我得到家庭符号 ID。然后,我尝试使用此 ID 创建过滤后的元素收集器。

这给了我以下错误:Microsoft.Scripting.ArgumentTypeException: expected BuiltInParameter, got ElementId

BuiltInParameter如果FamilySymbolFilters要求元素 ID ,我不知道为什么它期待一个。无论如何,任何帮助将不胜感激。谢谢!

0 投票
1 回答
421 浏览

revit-api - pyRevit WPF 非模态问题

所以我刚刚开始在 pyRevit 中涉足 WPF。我尝试像这样实现 pyrevit.forms.WPFWindow 类:

这是我的 xaml:

def show(self, modal=False):由于类功能,这将打开一个非模式窗口。对我来说,问题是即使我的点击功能只调用一个FilteredElementCollector对象,Revit 也会崩溃。如果我这样做ui.show(modal=True),它会起作用,但是我无法在 Revit UI 中做任何事情。我真正想要的是这样做:

这将不起作用,因为焦点仍然在 UI 上。我试过这个:

这可行,但我需要在完成后创建一个新的 UI 实例。是否有可能使用 pyRevit 提供非模态 UI?

0 投票
1 回答
189 浏览

f# - Revit API:System.MissingMethodException:在 Autodesk.Revit.UI.IExternalApplication 上找不到方法

我正在使用类似于 RevitPythonShell 或 pyRevit 的 F# 脚本编辑器。由于它是一个非模态 WPF 窗口,我尝试按照该ExternalEvent模式来评估脚本。在具有接口的主插件类上,IExternalApplication我还创建了一些实用程序成员来引发外部事件。我创建了一个静态成员来访问这个插件类的当前实例。见插件:https ://github.com/goswinr/Seff.Revit/blob/minimal/Addin.fs#L51

插件运行后,我将当前运行插件的引用 ( #r @"D:\Git\Seff.Revit\bin\Debug\net472\Seff.Revit.dll") 发送到 Fsharp Interactive。静态成员具有正确的签名可见,但使用它们时,我得到一个System.MissingMethodException. 这只发生在使用 Revit 命名空间的成员身上。与 Revit 无关的成员按预期工作。

在此处输入图像描述 在此处输入图像描述 其他成员工作正常: 在此处输入图像描述

编辑: 当我启动 Revit 并打开一个项目时,我只有这个错误。首次启动 Revit,然后从 revit 中打开项目时,不会发生此错误。

此 Revit 和 F# repro在自述文件末尾指出了一个类似的错误。

0 投票
1 回答
539 浏览

revit-api - Revit API - 从 Revit 项目中完全删除族

我在尝试从项目中删除一个家庭时遇到了问题。我可以删除族类型,但似乎该族仍在项目中加载。有没有办法彻底去除?

到目前为止,我已经查看了这些来源:

1) https://adndevblog.typepad.com/aec/2012/07/supported-workflow-for-unloading-a-family-using-the-revit-api.html

2) https://adndevblog.typepad.com/aec/2012/07/supported-workflow-for-unloading-a-family-using-the-revit-api.html

这是我的代码:

在此处输入图像描述

0 投票
1 回答
242 浏览

revit-api - Revit 2020 API - 在家庭文档打开和激活后家庭文档活动视图返回空值

我正在尝试获取我家人文档的活动视图,但它返回 null。在 Revit 2019 中,它总是会返回一个值,但是我最近切换到了 Revit 2020,它似乎给了我一个问题。

有没有其他人遇到过这个问题并找到解决方案?

我偶然发现了这篇文章,但它的建议是使用我不喜欢的过滤元素收集器。我在将它传递给其他类时遇到问题。Revit 2019 看起来如此简单。

注意:这在 Revit 2021 中也存在

这是我的调试图片,显示其为空在此处输入图像描述

然后这是我的家庭文档 Snoop 打开并激活后的图片,显示它具有价值。 在此处输入图像描述

0 投票
2 回答
1347 浏览

revit-api - Revit API - 如何检查打开的事务、子事务或组事务

我正在开发一个按钮,在该按钮上打开了一个项目文档并打开了一个家庭文档。我正在尝试关闭家庭文档,但是我收到一条错误消息:

Autodesk.Revit.Exceptions.InvalidOperationException: 'Close is not allowed when there is any open sub-transaction, transaction, or transaction group.'

我已经检查了我的所有交易,它们都使用transactionName.Start(document)and启动和提交transactionName.Commit()

有谁知道检查任何正在进行的活动交易的方法?

我也尝试过使用

'RevitCommandId closeDoc = RevitCommandId.LookupPostableCommandId(PostableCommand.Close); uiapp.PostCommand(closeDoc);'

但是,这往往只想关闭我的项目文档。

///////////////////////////////////更新////////////// ///////////// 太棒了,我刚刚发现我不需要使用 uiapp.OpenAndActivateDocument()。我不知道您可以在不打开文档的情况下编辑家庭。这解决了我的问题。不过,我仍然很好奇是否有办法检查未结交易。

0 投票
1 回答
187 浏览

revit-api - Revit API - 如何在调用 PostCommand 后返回“正常代码”

我一直在寻找答案,但没有找到任何可以解决的问题。

我有一个调用 PostCommand 的线程,我注意到了几件事:无论我将 PostCommand 放在哪里,它都会在我的线程中最后出现,即使它在单独的事务中也是如此。

有没有办法按顺序调用它,然后返回我的 Revit API 代码继续执行?

我找到了这个线程,但我希望他们的错误是因为他们在 dynamo 中运行,而不是在 Visual Studio 中使用 c#