Revit二次开发——多管道线性标注(第十八期)

2022-04-21 12:24:50 浏览数 (1)

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("警告", "标注视图不是平面视图或立面视图");
            }

来看一下效果:

标注前

选中要标注的管道

标注完成的效果

0 人点赞