我在尝试通过 Revit 的 Power shell 启动宏时遇到一些问题。 在 Excel 中,基于此看起来相当简单
$excel = new-object -comobject excel.application
$excelFiles = Get-ChildItem -Path C:\fso -Include *.xls, *.xlsm -Recurse
Foreach($file in $excelFiles)
{
$workbook = $excel.workbooks.open($file.fullname)
$worksheet = $workbook.worksheets.item(1)
$excel.Run("CreateChart")
$workbook.save()
$workbook.close()
}
$excel.quit()
但是,即使可执行文件存在,Revit.Application 也不是我计算机上的对象。 由于 Revit 在 2024 年更改了其 API,我们遇到了镜像问题,我正在尝试解决该问题。 如果你们中的任何一个人能帮我解决这个问题,我将永远感激你们。
这里是评论的参考,因此您不必进一步滚动。
@逻辑图我已经写好了宏。我只需要 Powershell 打开文档运行宏并关闭文档。为了更多地强调正在发生的事情,Autodesk 的 Revit 在 2024 年更改了他们的 API,这导致我们的功能出现重大缺陷。现在需要的是利用 Revit 现有的 post 命令(这就是宏的作用),但是在所有代码完成之前,post 命令无法运行。所以将其放入循环的想法是不可能的
尝试此操作时,我无法使脚本工作
正如我在 Revit API 讨论论坛中回答您的问题时所回答的那样:Powershell 在 Revit 中运行宏:
您不能像 Excel 那样简单地从外部驱动 Revit。 Revit API 需要有效的 Revit API 上下文才能执行。此类上下文仅在 Revit API 事件的事件处理程序中提供。此类处理程序只能从 Revit 加载项注册,该加载项需要加载到 Revit.exe 的运行会话中。这种行为近年来没有改变,并且此描述适用于 Revit 的所有活动版本,至少是最近 10 个或 15 个左右。您可以从外部驱动 Revit,方法是首先加载实现
外部事件的加载项,然后从 Powershell 脚本引发该事件。
The Building Coder 提供了大量有关如何使用和外部事件进行无模式访问以及从外部驱动 Revit 的文章。