RevitAPI创建族并载入到工程文档中

原创
2017/04/20 15:08
阅读数 708

四个注意点:

1、在族文档中创建拉伸时,需要开启事务,开启事务时使用的文档必须是族文档

2、在族文档中创建草图工作平面时,使用的文档必须是族文档

3、将族文档导入工程文档时,不能开启事务,否则会抛出异常

4、LoadFamily方法的调用者是族文档,参数是目标工程文档

    class CmdTest : AbstractExternalCommand
    {
        protected override Result RunImpl(Autodesk.Revit.UI.ExternalCommandData commandData, ref string message, Autodesk.Revit.DB.ElementSet elements)
        {
            String filePath = @"d:\Documents\liukang\桌面\Family Templates\Chinese\公制常规模型.rft";

            //创建族文档
            Document familyDoc = app.NewFamilyDocument(filePath);

            //开启事务时,使用的文档,必须是族文档
            Transaction familyTrans = new Transaction(familyDoc, "family");
            familyTrans.Commit();

            CurveArrArray curveArrArr = app.Create.NewCurveArrArray();

            CurveArray curveArr = app.Create.NewCurveArray();

            Curve curve1 = Line.CreateBound(new XYZ(0, 0, 0), new XYZ(1, 0, 0));
            Curve curve2 = Line.CreateBound(new XYZ(1, 0, 0), new XYZ(1, 1, 0));
            Curve curve3 = Line.CreateBound(new XYZ(1, 1, 0), new XYZ(0, 0, 0));

            curveArr.Append(curve1);
            curveArr.Append(curve2);
            curveArr.Append(curve3);
            curveArrArr.Append(curveArr);

            //创建平面
            Plane plane = app.Create.NewPlane(new XYZ(0, 0, 1), new XYZ(0, 0, 0));
            //创建草图平面,文档必须是族文档
            SketchPlane sp = SketchPlane.Create(familyDoc, plane);

            //创建拉伸
            familyDoc.FamilyCreate.NewExtrusion(true, curveArrArr, sp, 10);

            familyTrans.Commit();

            //LoadFamily方法的调用者是族文档,参数是目标工程文档
            Family family = familyDoc.LoadFamily(doc);

            return Result.Succeeded;
        }
    }

参考链接:http://blog.csdn.net/joexiongjin/article/details/7636666

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部