前言
Dynamo For Revit 做为一个开源的软件,任何人都可以从 github 上获取它的源代码,进行编译和调试。本文对 repo 的说明做简要整理,把关键点列出来。
内容
源代码
Git 地址:https://github.com/DynamoDS/DynamoRevit
这个 repo 里面的代码都是和 Revit 有关的,包括实现和测试。通常,还需要另外一个 ropo,但不是必须的,https://github.com/DynamoDS/Dynamo。
Git 地址:https://github.com/DynamoDS/Dynamo
是和 Revit 无关的,任何软件都可以把它集成进去。你可以单独编译这个repo,然后找到 Sandbox.exe,就可以看到你熟悉的 Dynamo 界面。
本地环境
在编译代码之前,首先你需要本地安装 Revit,当然不安装也可以编译。根据你本地的 Revit 版本选择自己需要的 DynamoRevit 分支。同理,需要从 Dynamo 的 repo 去找到对应的分支。然后编译这两个部分。
编译之前,一定要跑 restorepackages.bat
。
如果你的 Revit 安装在 C:\Program Files\Autodesk\
,应该可以正常通过编译。如果不行,或者你没有安装 Revit,则需要修改配置文件,https://github.com/DynamoDS/DynamoRevit/blob/master/src/Config/CS.props
:
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">$(SolutionDir)..\lib\Revit $(RevitVersionNumber)\net48</REVITAPI>
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit Architecture $(RevitVersionNumber)</REVITAPI>
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit $(RevitVersionNumber)</REVITAPI>
<REVITAPI Condition=" !Exists('$(REVITAPI)') ">C:\Program Files\Autodesk\Revit Preview Release</REVITAPI>
关联
在 DynamoRevit 的编译结果中找到文件 Dynamo.config
,编辑如下。这个值,C:\Workspace\GitHub\Dynamo\bin\AnyCPU\Debug
,指向你编译出来的 Dynamo。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="DynamoRuntime" value="C:\Workspace\GitHub\Dynamo\bin\AnyCPU\Debug"/>
</appSettings>
</configuration>
Addin
最重要的事情,从 Revit 2020 开始,是先把你自己的安装目录下的 DynamoForRevit 这个文件删除,目录 C:\Program Files\Autodesk\Revit 2020\AddIns
。
然后和其它插件一样,加一个 addin 文件:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type="Application">
<Name>Dynamo For Revit</Name>
<Assembly>"D:\DynamoRevit\bin\AnyCPU\Debug\Revit\DynamoRevitDS.dll"</Assembly>
<AddInId>8D83C886-B739-4ACD-A9DB-1BC78F315B2B</AddInId>
<FullClassName>Dynamo.Applications.DynamoRevitApp</FullClassName>
<VendorId>ADSK</VendorId>
<VendorDescription>Dynamo</VendorDescription>
</AddIn>
</RevitAddIns>
调试
Dynamo 用了 IExternalApplication
,所以,如果修改了代码,必须把 Revit 关了,重新编译,然后再附加到进行。