首先通过RevitLooup工具,我们可以看到云线的类是RevisionCloud,那么创建云线的方法不是在Document.Create里面寻找,就是在自己的静态方法里面寻找。
果然,被我们发现有一个静态的Create函数,如下:
public static RevisionCloud Create(Document document, View view, ElementId revisionId, IList<Curve> curves)
大多数参数我们应该能够猜出来它们是干什么的,唯一一个参数就是revisionId,这个从哪里来呢?
首先,我试了一下传入ElementId.InvalidElementId,发现抛出异常:
Autodesk.Revit.Exceptions.ArgumentException: revisionId is not a valid Revision. Parameter name: revisionId
所以这里必然是传入真实的Id。
此时我发现,RevisionCloud是有一个属性叫RevisionId的,于是查看了一下这个Id代表的是什么,那就是Revision。
再看Revision也有一个Create的静态方法,于是解决方案就明了了,也很简单:
var revision = Revision.Create(RevitDoc);
var revisionCloud = RevisionCloud.Create(RevitDoc,
RevitDoc.ActiveView, ElementId.InvalidElementId,
new List<Curve>() {
Line.CreateBound(XYZ.Zero, new XYZ(10,0,0))
});