问题标签 [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.
python - RevitPythonShell 用户输入 raw_input 错误
有人知道如何在 RevitPythonShell 2018.1.0.0 中修复此错误吗?
c# - Revit API - C# - 如何在视口上设置视图标题
我正在尝试使用 Revit API 设置视图标题以显示在 Revit 项目中,但我不知道如何访问它。
我可以在图纸上放置一个视口并将视图标题系列加载到项目中,但我无法将加载的视图标题分配给视口。有没有人有这方面的运气?
这是我正在尝试做的一些照片:
2)编辑视图类型和更改视图标题使用“View Title w sheet”
以下是我一直在查看的一些资源: 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>
,应用更改,然后点击按钮。有用。在我应用更改之前,几乎就像家庭不被视为合法的视图标题选项一样。
这是我的代码:
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 个单独的事务提交如何解决了该问题,但是我尝试了它并没有用。这个显示类似的东西
python - Revit 使用 Python,按族过滤(族符号)
我刚刚开始使用 Revit API,我有一个问题。我现在一直在寻找一种按族过滤 Revit 元素的方法。这是我的程序:首先我做了一个过滤元素收集器来获取所有家庭符号 ID。
这应该让我得到家庭符号 ID。然后,我尝试使用此 ID 创建过滤后的元素收集器。
这给了我以下错误:Microsoft.Scripting.ArgumentTypeException: expected BuiltInParameter, got ElementId
。
BuiltInParameter
如果FamilySymbolFilters
要求元素 ID ,我不知道为什么它期待一个。无论如何,任何帮助将不胜感激。谢谢!
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?
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在自述文件末尾指出了一个类似的错误。
revit-api - Revit API - 从 Revit 项目中完全删除族
我在尝试从项目中删除一个家庭时遇到了问题。我可以删除族类型,但似乎该族仍在项目中加载。有没有办法彻底去除?
到目前为止,我已经查看了这些来源:
这是我的代码:
revit-api - Revit 2020 API - 在家庭文档打开和激活后家庭文档活动视图返回空值
我正在尝试获取我家人文档的活动视图,但它返回 null。在 Revit 2019 中,它总是会返回一个值,但是我最近切换到了 Revit 2020,它似乎给了我一个问题。
有没有其他人遇到过这个问题并找到解决方案?
我偶然发现了这篇文章,但它的建议是使用我不喜欢的过滤元素收集器。我在将它传递给其他类时遇到问题。Revit 2019 看起来如此简单。
注意:这在 Revit 2021 中也存在
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()。我不知道您可以在不打开文档的情况下编辑家庭。这解决了我的问题。不过,我仍然很好奇是否有办法检查未结交易。
revit-api - Revit API - 如何在调用 PostCommand 后返回“正常代码”
我一直在寻找答案,但没有找到任何可以解决的问题。
我有一个调用 PostCommand 的线程,我注意到了几件事:无论我将 PostCommand 放在哪里,它都会在我的线程中最后出现,即使它在单独的事务中也是如此。
有没有办法按顺序调用它,然后返回我的 Revit API 代码继续执行?
我找到了这个线程,但我希望他们的错误是因为他们在 dynamo 中运行,而不是在 Visual Studio 中使用 c#