欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RevitAPI之快速创建尺寸标注

程序员文章站 2022-06-11 08:06:59
...
对于尺寸标注的创建,Revit API提供了以下方法来创建线性尺寸标注和对齐尺寸标注。

1) 创建线性尺寸标注
• Autodesk. Revit. Creation. Document. NewDimension (View view, Line line, ReferenceArray references)

其中,参数view是尺寸标注所要创建在的视图,line表示线性尺寸的直线,references 是绑定的几何参照。

• Autodesk. Revit. Creation. Document. NewDimension (View view,Line line, ReferenceArray references, DimensionType dimensionType)

其中,参数view是尺寸标注所要创建在的视图,line表示线性尺寸的直线,references 是绑定的几何参照,dimensionType是尺寸标注的族类型。

2) 创建对齐尺寸标注
Autodesk. Revit. Creation. Document. NewAlignment ( View view, Reference referencel,Reference reference2)
其中,参数view是尺寸标注所要创建在的视图,reference1和reference2是绑定的几何参照。

3) 创建角度尺寸标注
Autodesk. Revit. Creation. FamilyltemFactory. NewAngularDimension ( View view,Arc arc,Reference firstRef,Reference secondRef)
其中,参数view是尺寸标注所要创建在的视图,arc表示所要标注的圆弧,firstRef和 secondRef是尺寸标注的两个参照,它们必须和圆弧垂直
Autodesk. Revit. Creation. FamilyltemFactory. NewAngularDimension ( View view,Arc arc,Reference firstRef,Reference secondRef,DimensionType dimensionType)
其中,参数view是尺寸标注所要创建在的视图,arc表示所要标注的圆弧,firstRef和 secondRef是尺寸标注的两个参照,它们必须和圆弧垂直。dimensionType是尺寸标注的族 类型。

4) 创建弧长度尺寸标注
Autodesk. Revit. Creation. FamilyltemFactory. NewArcLengthDimension (View view,Arc arc,Reference arcRef, Reference firstRef,Reference secondRef)
其中,参数view是尺寸标注所要创建在的视图,arc表示所要标注的圆弧,arcRef表示 所要标注的圆弧的几何参照,firstRef和secondRef是尺寸标注的两个参照,它们必须和圆弧相交。
Autodesk. Revit. Creation. FamilyltemFactory. NewArcLengthDimension (View view,Arc arc, Reference arcRef,Reference firstRef,Reference secondRef, DimensionType dimensionType)
其中,参数view是尺寸标注所要创建在的视图,arc表示所要标注的圆弧,arcRef表示 所要标注的圆弧的几何参照,firstRef和secondRef是尺寸标注的两个参照,它们必须和圆弧相交。dimensionType是尺寸标注的族类型。

5) 创建直径尺寸标注

Autodesk. Revit. Creation. FamilyltemFactory. NewDiameterDimension ( View view,Reference arcRef,XYZ origin)

其中,参数view是尺寸标注所要创建在的视图,arcRef表示所要标注的圆弧的几何参照,origin和圆心连线表示尺寸标注所在的线。


6) 创建线性尺寸标注

Autodesk. Revit Creation. FamilyltemFactory. NewLinearDimensionC View view, Line line, ReferenceArray references)

其中,参数view是尺寸标注所要创建在的视图,line表示线性尺寸的直线,references 是绑定的几何参照。 

Autodesk. Revit. Creation. FamilyltemFactory. NewLinearDimension(View Line line, Reference Array references, DimensionType dimensionType)
其中,参数view是尺寸标注所要创建在的视图,line是线性尺寸的直线,references 是绑定的几何参照,dimensionType是尺寸标注的族类型。

7) 创建径向尺寸标注
• Autodesk. Revit. Creation. FamilyltemFactory. NewRadialDimensionC View,Reference arcRef, XYZ origin)
其中,参数view是尺寸标注所要创建在的视图,arcRef表示所要标注的圆弧的几何参照,origin和圆心连线表所尺寸标注所在的线。
• Autodesk. Revit. Creation. FamilyltemFactory. NewRadialDimension( View view, Reference arcRef,XYZ origin,DimensionType dimensionType)
其中,参数view是尺寸标注所要创建在的视图,arcRef表示所要标注的圆弧的几何参照,origin和圆心连线表示尺寸标注所在的线,dimensionType是尺寸标注的族类型。

创建线性尺寸标注的代码示例:
        
public void CreatDimension(UIApplication app,List<Wall> m_walls)
        {
            Transaction transaction = new Transaction


(app.ActiveUIDocument.Document, "添加标注");
            transaction.Start();
            //取得墙,给墙的两个端点创建线性尺寸 
            for (int i = 0; i < m_walls.Count; i++)
            {
                Wall wallTemp = m_walls[i] as Wall;
                if (null == wallTemp)
                {
                    continue;
                }


                //取得位置线 
                Location location = wallTemp.Location;
                LocationCurve locationline = location as LocationCurve;
                if (null == locationline)
                {
                    continue;
                }


                Line newLine = null;


                //取得参考 
                AnalyticalModel analyticalModel = wallTemp.GetAnalyticalModel();
                var activeCurveList= analyticalModel.GetCurves


(AnalyticalCurveType.ActiveCurves);


                ReferenceArray referenceArray = new ReferenceArray();
                foreach (Curve aCurve in activeCurveList)
                {
                    // 从分析模型中找到不垂直的线 
                    if (aCurve.GetEndPoint(0).Z == aCurve.GetEndPoint(1).Z)
                        newLine = aCurve as Line;
                    if (aCurve.GetEndPoint(0).Z != aCurve.GetEndPoint(1).Z)
                    {
                        AnalyticalModelSelector amSelector = new 


AnalyticalModelSelector(aCurve);
                        amSelector.CurveSelector = 


AnalyticalCurveSelector.StartPoint;
                        referenceArray.Append(analyticalModel.GetReference


(amSelector));
                    }
                    if (2 == referenceArray.Size)
                        break;
                }
                if (referenceArray.Size != 2)
                {
                    return;
                }
                try
                {
                    //创建尺寸 
                    Autodesk.Revit.DB.Document doc = 


app.ActiveUIDocument.Document;


                    Autodesk.Revit.DB.XYZ p1 = new XYZ( newLine.GetEndPoint(0).X 


+ 5, newLine.GetEndPoint(0).Y + 5, newLine.GetEndPoint(0).Z);
                    Autodesk.Revit.DB.XYZ p2 = new XYZ( newLine.GetEndPoint(1).X 


+ 5, newLine.GetEndPoint(1).Y + 5, newLine.GetEndPoint(1).Z);


                    Line newLine2 = Line.CreateBound(p1, p2);
                    Dimension newDimension = doc.Create.NewDimension( 


doc.ActiveView, newLine2, referenceArray);
                }
                catch (Exception)
                {
                    return ;
                }
            }
            transaction.Commit();
        }

=========【更多高级应用请关注公众号】========

RevitAPI之快速创建尺寸标注

==================================