前言
Revit 二维视图的导出。
内容
IExportContext2D
就是用来导出二维的,它和三维导出本质上是一样的。
最底层是 IExportContext
:
namespace Autodesk.Revit.DB
{
public interface IExportContext
{
void Finish();
bool IsCanceled();
void OnElementEnd(ElementId elementId);
RenderNodeAction OnFaceBegin(FaceNode node);
void OnFaceEnd(FaceNode node);
RenderNodeAction OnInstanceBegin(InstanceNode node);
void OnInstanceEnd(InstanceNode node);
void OnLight(LightNode node);
RenderNodeAction OnLinkBegin(LinkNode node);
void OnLinkEnd(LinkNode node);
void OnMaterial(MaterialNode node);
void OnPolymesh(PolymeshTopology node);
void OnRPC(RPCNode node);
RenderNodeAction OnViewBegin(ViewNode node);
void OnViewEnd(ElementId elementId);
bool Start();
}
}
它的父类 IExportContextBase
,带了一些线以及文字相关的接口:
namespace Autodesk.Revit.DB
{
public interface IExportContextBase : IExportContext
{
RenderNodeAction OnCurve(CurveNode node);
void OnLineSegment(LineSegment segment);
RenderNodeAction OnPolyline(PolylineNode node);
void OnPolylineSegments(PolylineSegments segments);
void OnText(TextNode node);
}
}
它的父类是 IExportContext2D
,带了一些二维面相关的接口:
namespace Autodesk.Revit.DB
{
public interface IExportContext2D : IExportContextBase
{
RenderNodeAction OnElementBegin2D(ElementNode node);
void OnElementEnd2D(ElementNode node);
RenderNodeAction OnFaceEdge2D(FaceEdgeNode node);
RenderNodeAction OnFaceSilhouette2D(FaceSilhouetteNode node);
}
}
在二维导出的过程中,用户可以自己去重写这些接口,从而获取自己想要的内容。
结果
下面是用插件运行的结果,差异在于是否要标注,以及是否导出面上的细节 Pattern: