主要内容
升级单个文件
复制下面的代码,修改文件路径、升级的文件路径,然后粘贴到宏管理器上,点击生成解决方案
public void UpgradeSingle()
{
string file = "文件路径";
string targetFilePath = "升级的文件路径";
// 打开文件
var doc = this.Application.OpenDocumentFile(file);
// 另存为
doc.SaveAs(targetFilePath);
doc.Close();
}
点击运行,就可以
批量升级多个文件夹的
修改D:\A_DataBases\Revit宏
这部分,改成你电脑上族文件所在的路径,然后点击生成解决方案,在宏管理器点击运行即可
public void UpgradeFamily()
{
// 获取某个目录下的所有rfa文件
var files = Directory.GetFiles(@"D:\A_DataBases\Revit宏", "*.rfa", SearchOption.AllDirectories);
// 批量升级
foreach (var file in files)
{
// 拼接保存的路径
var fileName = Path.GetFileNameWithoutExtension(file);
var curDir = Path.GetDirectoryName(file);
var targetFileName = fileName + "2020.rfa";
var targetFilePath = Path.Combine(curDir, targetFileName);
// 打开,另存为
var doc = this.Application.OpenDocumentFile(file);
doc.SaveAs(targetFilePath);
doc.Close();
}
}
RevitAPI 小结
打开文件:
Application.OpenDocumentFile(文件路径);
另存文件:
Document.SaveAs(路径);
扩展知识
Application 类、Document 类的认识。
Application 类
Application 类在Autodesk.Revit.ApplicationServices
命名空间下,代表一个 Revit 应用程序,该类提供了:
- 文档的访问
- 设置选项
- 其他应用程序范围的数据和设置的访问
一个类有自己的属性、方法、事件;
- 属性:可以对应人的外表
- 方法:就对应这一个人可以做的事,比如一个人可以读书、写字、吃饭、跑步、跳舞、唱歌等等,是一个具体的行为、动作。
- 事件:事件就是发生某种情况时会触发的事。
方法和事件都是做出动作,两者的区别:
- 方法是我能做什么动作,事件是,当 xxx 时,我要做什么动作。
- 方法是是定死的,让我走路,我就去走路。事件是灵活的,比如当时间到了 12 点时,我要做什么,要做什么这件事你来告诉我。
方法:
方法是我能做什么动作?那 Application 能做什么?其实这个可以从软件操作上看,
比如点击文件就可以看到新建、打开、保存、另存为、导出、打印、关闭这些功能,这个就是 Application 能做的事。
在比如:点击选项,这里有常规、用户界面、图形、硬件、文件位置等设置,这也是 Application 能控制的
就是人工能点击的,Application 基本也能做,但不一定全部都能做,这个就得看官方的 SDK 文档了
详见:Application Class
比如常见的新建、打开之类的,上面的族文件升级,其实就是用了这个类的功能。
所以其实核心是学习这些 API,而宏只是一个可以编写、运行这些代码的地方,可以使用其它方式来运行代码。
Document 类
这个类也和上面的类似,需要去看看官方文档了,
Document Class: https://www.revitapidocs.com/2020/db03274b-a107-aa32-9034-f3e0df4bb1ec.htm
熟悉一个类、主要熟悉这个类有什么熟悉、有什么方法、有什么事件,对应软件的操作是哪个操作,开发的基本要求就是要先熟悉这些常见的类,知道这些类的方法怎么调用的,然后根据业务的要求去实现就好。
博主本身也是一个菜鸡,没法教大家太多,只能大概说一下这个思路了。。