2020年还真的是见证历史的一年,疫情爆发,美元熔断,原油暴跌,所以是玛雅预言的2012推迟了?
说回正题,来说说线性标注。
线性标注主要是提供了2种API:
但其实也算是一种,第二个可以选择标注样式。
主要的三个参数:
- view 标注的视图
- line 标注线
- references 稳定的引用
这里要注意标注视图只能在平面视图或者立面视图进行,本节示例方法只可用在线性元素上。
示例代码如下:
管线标注比较简单不用访问几何图元,因此以此作为参考示例,方法基本是一致的。
代码语言:javascript复制 Selection selection = uiDoc.Selection;
//选择需要标注尺寸的图元
IList<Reference> referenceList = selection.PickObjects(ObjectType.Element, "请选择要标注的图元");
if (referenceList.Count < 1)
{
TaskDialog.Show("警告", "选择数量出错,请重新选择");
}
Autodesk.Revit.DB.View view = doc.ActiveView;
ViewType vt = view.ViewType;
if (vt == ViewType.FloorPlan || vt == ViewType.Elevation)
{
//取得其中一个图元 获取其位置
Element element = doc.GetElement(referenceList.ElementAt(0));
Line line = (element.Location as LocationCurve).Curve as Line;
Element element2 = doc.GetElement(referenceList.ElementAt(1));
Line line2 = (element2.Location as LocationCurve).Curve as Line;
XYZ linemiddle = line.Evaluate(0.5, true);
//在这条线上投射指定的点的交点
XYZ projectPoint = line2.Project(linemiddle).XYZPoint;
Line newLine = Line.CreateBound(linemiddle, projectPoint);
ReferenceArray references = new ReferenceArray();
foreach (Reference reference in referenceList)
{
references.Append(reference);
}
//调用创建尺寸的方法创建
Dimension autoDimension = doc.Create.NewDimension(view, newLine, references);
}
else
{
TaskDialog.Show("警告", "标注视图不是平面视图或立面视图");
}
来看一下效果:
标注前
选中要标注的管道
标注完成的效果