【Revit二次开发】创建一个拉伸实体(正方体)+创建一个自定义族类型

写在前面

这个例子是在族文件是测试的(打开Revit,选择新建族,选择公制常规模型,如下图一)。创建好以后是空白的,如下图二

                                                                                        图一

【Revit二次开发】创建一个拉伸实体(正方体)+创建一个自定义族类型_第1张图片

                                                                                                  图二

【Revit二次开发】创建一个拉伸实体(正方体)+创建一个自定义族类型_第2张图片

 

 

实现例子前有几个疑问:

拉伸实体是什么?创建拉伸实体的方法是什么?

创建自定义族类型的方法是什么?方法是什么?

问题解答:

拉伸实体是什么?创建拉伸实体的方法是什么?

答:各种百度也没有个所以然,询问同事以后得到一个通俗的解释,说创建族的时候,你给定一个正方形,就可以做一个正方体出来,同理,给一个圆,就能做一个圆柱出来,拉伸实体的意思大概根据平面图形,拉伸呈现给你一个加了厚度的立体图形吧。

创建拉伸实体的方法 doc.FamilyCreate.NewExtrusion(),要求参数如下:

创建自定义族类型的方法是什么?方法是什么?

答:使用FamilyMananger中的NewType来实现族类型的添加,在创建完成后,Revit会把新创建的族类型设置为当前族类型。

创建族类型的方法:doc.FamilyManager.NewType("我创建的类");,代码中的例子,参数就是一个名字,string类型的。

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;

namespace BasicCreation
{
    [TransactionAttribute(TransactionMode.Manual)]
    [RegenerationAttribute(RegenerationOption.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIDocument uidoc = commandData.Application.ActiveUIDocument;
            Document doc = uidoc.Document;
            Transaction trans = new Transaction(doc,"LS");
            trans.Start();

            Curve c1 = Line.CreateBound(new XYZ(0,0,0),new XYZ(0,10,0));
            Curve c2 = Line.CreateBound(new XYZ(0,10,0), new XYZ(10,10,0));
            Curve c3 = Line.CreateBound(new XYZ(10,10,0), new XYZ(10,0,0));
            Curve c4 = Line.CreateBound(new XYZ(10,0,0), new XYZ(0,0,0));

            CurveArray curveArray = new CurveArray();
            curveArray.Append(c1);
            curveArray.Append(c2);
            curveArray.Append(c3);
            curveArray.Append(c4);
            CurveArrArray curveArr = new CurveArrArray();
            curveArr.Append(curveArray);

            //doc.FamilyCreate.NewExtrusion(true,curveArr,SketchPlane.Create(doc,new Plane(new XYZ(0,0,1),XYZ.Zero)),10);
            doc.FamilyCreate.NewExtrusion(true, curveArr, SketchPlane.Create(doc, Plane.CreateByNormalAndOrigin(new XYZ(0,0,1),XYZ.Zero)), 10);
            doc.FamilyManager.NewType("我创建的类");
            trans.Commit();
            return Result.Succeeded;
        }
    }
}

效果:

【Revit二次开发】创建一个拉伸实体(正方体)+创建一个自定义族类型_第3张图片

你可能感兴趣的:(Revit二次开发)