通过Revit API创建一个族并载入到工程文档中

来源:互联网 发布:如何组建淘宝团队 编辑:程序博客网 时间:2024/06/01 10:24

四个注意点:

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;        }    }
0 0
原创粉丝点击