通過Revit API建立一個族並載入到工程文件中
阿新 • • 發佈:2019-02-19
四個注意點:
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;
}
}