问题标签 [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 回答
1496 浏览

python - 从 Revit 外部访问 Revit API

我使用过 RevitPythonShell 和 Dynamo,但想使用我现有的 Python IDE (Eclipse),我在其中配置了日志记录、调试、GitHub 集成等。

我对事务和整体 API 很满意,我花一些时间阅读有关 Revit API 和无模式连接以及其他人提出类似问题的信息。其中一些已经有几年的历史了。目前是否可以通过在 Revit 外部执行的 Python 与 Revit 进行交互?

例如,我尝试过;

但这似乎并没有暴露任何有用的东西。

0 投票
1 回答
688 浏览

revit-api - Revit 模型数据提取

我想要一个所有几何图形的 excel 文件,它们的尺寸存在于 Revit 模型中(如门、窗及其数量和尺寸)。我怎么能得到那个?我可以为此使用模型衍生 API 吗?或者任何其他可能的方式?

0 投票
2 回答
1079 浏览

revitpythonshell - 从 Revit Python Shell 读取 Excel 文件

我正在尝试使用 Revit Python Shell 从 Revit 2017 API 读取 Excel 文件。基本上,我不知道我在做什么,但我试过这个:http ://wiki.theprovingground.org/revit-api-py-excel ,但我收到一个错误:

回溯(最后一次调用):文件“”,第 1 行,EnvironmentError:System.Runtime.InteropServices.COMException(0x800401F3):无效的类字符串(来自 HRESULT 的异常:0x800401F3(CO at System.Runtime.InteropServices.Marshal.CLSIDFromProgID) (String progId, Guid& clsid) 在 Microsoft.Scripting.Interpreter.FuncCallInstruction`2.Run(InterpretedFrame frame) at Microsoft.Scripting.InteropServices.Marshal.GetActiveObject(String progID) 在 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame ) 在 Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,Tret](T0 arg0, T1 arg1, T2 arg2, T3 arg3) 在 IronPython.Compiler.Ast.CallExpression.Invoke1Instruction.Run(InterpretedFrame 框架) 在 Microsoft 的 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)。IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx) 在 IronPython.Hosting.PythonCommandLine.<>c__DisplayClass1.b__0() 的 Scripting.Interpreter.LightLambda.Run2[T0,T1,Tret](T0 arg0, T1 arg1)

运行时:System.Runtime.InteropServices.Marshal.GetActiveObject('Excel.Application')

我在 Windows 7 机器上执行此操作。

除此之外,我几乎尝试了我在网上找到的每个模块,这些模块应该有助于打开 xlsx 文件,但每次我都会在某些时候出错。有人可以帮忙吗?它也可以是 ods 文件。

谢谢!阿尔诺。

0 投票
1 回答
1387 浏览

revit-api - 使用 API Revit 运行“按 ID 选择元素”的“显示”功能

在用户界面中,Revit 有一个“按 ID 选择元素”,其中有一个“显示”按钮。我可以使用 RPS 和自定义 pyrevit 代码来选择元素,但是我想让我的用户能够扫描所有视图并打开类似于“显示”按钮的元素可见的视图。在遍历视图和视图中的元素之前,我想我会问 API 中是否有直接打开的命令。或者一种调用显示功能区命令的方法。提前致谢

0 投票
3 回答
4786 浏览

revit-api - 如何通过 revit API 访问所有族类型?

是否可以使用 Revit API 访问某个类别的所有族类型(例如窗户、门……)?与事例相反。据我所知,使用 FilteredElementCollector(doc).OfCategory(...).ToElements() 或 FilteredElementCollector(doc).OfClass(...).ToElements() 指向该类/类型的实例,但我想要检查特定类型是否已加载到 Revit 中,即使它尚未实例化。

(我正在使用 pyRevit,Revit 2017)

非常感谢!

0 投票
2 回答
724 浏览

revit-api - 使用 Revit API 编码:减少内存使用的技巧?

我有一个非常“一般”的问题。我正在使用 Revit API(使用 python)进行开发,有时我会观察到 Revit 会话在我的测试和试验期间变得更慢(Revit 保持打开的时间越长,它似乎发生的越多)。它没有达到真正有问题的地步,但无论如何它让我想到了它。

所以,由于我没有编程背景,我很确定我的代码充满了真正“非正统”的东西,这些东西可能会好得多。

是否有一些我可以遵循的基本“提示和技巧”(我的意思是,与 Revit API 相关)来帮助提高代码执行速度?或者我应该说:帮助减少内存使用?

例如,我已经了解了可用的“处理”方法,特别是在使用事务时(例如这里:http://thebuildingcoder.typepad.com/blog/2012/09/disposal-of-revit-api-objects。 html),但最后我不太清楚这是否真的很重要(此外,因为我使用的是 Python,并且不知道这让我在讨论使用“使用”时处于什么位置或不)?

我应该“处理”所有东西吗?;)

除了'Dispose'方法,还有别的吗?

非常感谢,阿诺。

0 投票
1 回答
189 浏览

revitpythonshell - Revit API:“隐藏”方法?

在使用 Revit API 并浏览“RevitAPI.chm”文件(以及浏览 Internet 上的示例)时,我注意到有些方法存在,但在“RevitAPI.chm”文件中既没有列出,也没有在使用 RevitPythonShell 时提出建议。

我解释。例如,假设我有一个“空间”对象,通过

如果我这样做,让我们说(假设 s[0] 是一个有效的 Space 对象):

我有一个“索引器对象”:

如果我这样做:

然后我得到了我的 GeometryElement 对象。例如,get_BoundingBox 也有同样的行为。

现在,这很好,但我可以了解这些 get_something 方法的唯一方法是查看示例(在“RevitAPI.chm”或论坛等上)。所以这有点奇怪,不是吗?从某种意义上说,这些方法实际上并未列出。

所以我想我的问题是:

  • 这是正常行为吗?(或者我通常应该使用 s[0].Geometry 来获取 GeometryElement 对象吗?)
  • 如果是,……为什么?:D
  • 这些“索引器”是什么?

谢谢!阿尔诺。

PS:使用 Revit 2017,使用 RevitPythonShell 和 pyRevit 进行测试

0 投票
3 回答
1120 浏览

revit-api - 如何在 Python(Revit Dynamo)中自动处理 DialogBoxShowing 事件?

如何在 Python (Dynamo) 中订阅 Revit 事件?

特别是 DialogBoxShowing,所以我可以查看它是否是“使用临时隐藏/隔离导出”警告并选择“打开并导出临时隔离模式”?

它在这里用 C# 完成:

http://thebuildingcoder.typepad.com/blog/2013/03/export-wall-parts-individually-to-dxf.html

见小标题:处理和解除警告信息

谢谢!

0 投票
0 回答
33 浏览

pyrevit - pyRevit 配置文件不断变化

首先,我不是使用它的用户,而是为几个用户实现它。

我们将 VDi 机器与服务器上的所有用户配置文件一起使用。我设法克隆了 Git Repo 并在服务器上留下了一份副本,我使用 Robo 副本将其复制给用户。

这很有效,但是当他们想要更改某些设置时我们遇到了一个问题,我们得到了错误。如果在配置文件中它指向 UNC 路径 (\domian.local\share\users\username) 但如果它指向共享的驱动器盘符 (t:\users\username) 或 c,则设置确实很好用驱动器 (c:\users\username) 我们得到一个错误。

我会查找错误并上传。

干杯艾萨克

0 投票
1 回答
322 浏览

revit-api - Revit API:创建新的足迹屋顶

我在使用 revit 2018 API 创建足迹屋顶时遇到问题。基本上,我这样称呼:

和:

  • “ca”是一个有效的Autodesk.Revit.DB.CurveArray对象。这是一个闭环。
  • “doc.GetElement(roofsInstances[0].LevelId)”是一个有效的Autodesk.Revit.DB.Level对象
  • 并且“roofsInstances[0].RoofType”是一个有效的Autodesk.Revit.DB.RoofType对象

当我调用它时,它返回:异常:值不能为空。

关于可能是什么问题的任何想法?非常感谢!