REVIT创建立面和标记
# 创建立面
需要先创建立面标记,再根据方向创建对应的立面视图
//获取视图样板
ElementId viewFamily = Jack.RevitUtils.Extends.ViewExtend.GetViewFamilyType(wrapper.Doc, Autodesk.Revit.DB.ViewFamily.Elevation, "立面");
var marker = ElevationMarker.CreateElevationMarker(wrapper.Doc, viewFamily, origin, 1);
wrapper.Doc.Regenerate();
View templateView = DocumentExtend.GetElements<View>(wrapper.Doc).Find(p => p.IsTemplate && p.Name == "21_木作立面图");
marker.SetParameter(BuiltInParameter.VIEW_TEMPLATE, templateView.Id);
var baseRefOrigin = -XYZ.BasisX;
var viewName = $"{roomName}木作立面图{viewIndex}";
ViewSection elevationView = null;
var index = 0;
// ElevationMarker 顺时针 -X,Y,X,-Y --0,1,2,3
for (int i = 0; i < 4; i++)
{
if (!XyzExtend.IsEqual(fi0.FacingOrientation, baseRefOrigin))
{
baseRefOrigin = baseRefOrigin.VectorRotate(-XYZ.BasisZ, Math.PI / 2);
continue;
}
DeleteView(ViewType.Elevation, viewName);
// 创建立面
elevationView = marker.CreateElevation(wrapper.Doc, view.Id, i);
// 创建立面裁剪范围
elevationView.GetCropRegionShapeManager().SetCropShape(loop);
elevationView.Name = viewName;
//设置远裁剪偏移
elevationView.get_Parameter(BuiltInParameter.VIEWER_BOUND_OFFSET_FAR).Set(farClipOffset);
elevationView.SetParameter(BuiltInParameter.VIEW_TEMPLATE, templateView.Id);
// 创建标记前需要Regenerate(),很重要
wrapper.Doc.Regenerate();
CreateDimensions(elevationView, elements);
views.Add(elevationView);
newElems.Add(marker);
index = i;
break;
}
# 创建标记
基于立面视图进行立面标记
// X轴不变,Z与Y交换 // 顶部标记 原点+高度偏移 var topSecond = topDimTuple.Item2; XYZ origion = section.Origin; var offsetSize = 50d.ConvertToAPI(); double d = max.Z - min.Z + offsetSize; XYZ vector = section.UpDirection.Normalize(); XYZ p1 = origion + vector * d; XYZ p2 = p1 + section.RightDirection; Line line = Line.CreateBound(p1, p2); var dimTop0 = section.Document.Create.NewDimension(section, line, topSecond);

浙公网安备 33010602011771号