1. 程式人生 > >通過Revit API建立一個族並載入到工程文件中

通過Revit API建立一個族並載入到工程文件中

四個注意點:

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; } }