问题标签 [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 - 从 Revit 外部访问 Revit API
我使用过 RevitPythonShell 和 Dynamo,但想使用我现有的 Python IDE (Eclipse),我在其中配置了日志记录、调试、GitHub 集成等。
我对事务和整体 API 很满意,我花一些时间阅读有关 Revit API 和无模式连接以及其他人提出类似问题的信息。其中一些已经有几年的历史了。目前是否可以通过在 Revit 外部执行的 Python 与 Revit 进行交互?
例如,我尝试过;
但这似乎并没有暴露任何有用的东西。
revit-api - Revit 模型数据提取
我想要一个所有几何图形的 excel 文件,它们的尺寸存在于 Revit 模型中(如门、窗及其数量和尺寸)。我怎么能得到那个?我可以为此使用模型衍生 API 吗?或者任何其他可能的方式?
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 文件。
谢谢!阿尔诺。
revit-api - 使用 API Revit 运行“按 ID 选择元素”的“显示”功能
在用户界面中,Revit 有一个“按 ID 选择元素”,其中有一个“显示”按钮。我可以使用 RPS 和自定义 pyrevit 代码来选择元素,但是我想让我的用户能够扫描所有视图并打开类似于“显示”按钮的元素可见的视图。在遍历视图和视图中的元素之前,我想我会问 API 中是否有直接打开的命令。或者一种调用显示功能区命令的方法。提前致谢
revit-api - 如何通过 revit API 访问所有族类型?
是否可以使用 Revit API 访问某个类别的所有族类型(例如窗户、门……)?与事例相反。据我所知,使用 FilteredElementCollector(doc).OfCategory(...).ToElements() 或 FilteredElementCollector(doc).OfClass(...).ToElements() 指向该类/类型的实例,但我想要检查特定类型是否已加载到 Revit 中,即使它尚未实例化。
(我正在使用 pyRevit,Revit 2017)
非常感谢!
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'方法,还有别的吗?
非常感谢,阿诺。
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 进行测试
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
见小标题:处理和解除警告信息
谢谢!
pyrevit - pyRevit 配置文件不断变化
首先,我不是使用它的用户,而是为几个用户实现它。
我们将 VDi 机器与服务器上的所有用户配置文件一起使用。我设法克隆了 Git Repo 并在服务器上留下了一份副本,我使用 Robo 副本将其复制给用户。
这很有效,但是当他们想要更改某些设置时我们遇到了一个问题,我们得到了错误。如果在配置文件中它指向 UNC 路径 (\domian.local\share\users\username) 但如果它指向共享的驱动器盘符 (t:\users\username) 或 c,则设置确实很好用驱动器 (c:\users\username) 我们得到一个错误。
我会查找错误并上传。
干杯艾萨克
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对象
当我调用它时,它返回:异常:值不能为空。
关于可能是什么问题的任何想法?非常感谢!