Revit新建族并创建拉伸

主要使用RevitAPI中创建命令Document.FamilyCreate.NewExtrusion,此处Document需为族文档。
代码如下:

[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{
    public Result Execute(ExternalCommandData data, ref string message, ElementSet elements)
    {
        UIApplication  _app = data.Application;
        UIDocument uidoc = data.Application.ActiveUIDocument;
        Document _doc = uidoc.Document;
        //选择族文件模板,默认公制常规模型
        string rftPath = @"C:\ProgramData\Autodesk\RVT 2016\Family Templates\Chinese\公制常规模型.rft";
        //创建族文件
        Document faDoc = _app.Application.NewFamilyDocument(rftPath);
        Transaction trans = new Transaction(faDoc, "Create Family");
        trans.Start();
        try
        {
            FamilyManager manager = faDoc.FamilyManager;
            //添加材质参数
            FamilyParameter mfp = manager.AddParameter("材质", BuiltInParameterGroup.PG_MATERIALS, ParameterType.Material, false);
            //创建拉伸
            //创建拉伸轮廓
            double len = 10;
            XYZ p1 = new XYZ(-len, -len, 0);
            XYZ p2 = new XYZ(len, -len, 0);
            XYZ p3 = new XYZ(len, len, 0);
            XYZ p4 = new XYZ(-len, len, 0);
            Line l1 = Line.CreateBound(p1, p2);
            Line l2 = Line.CreateBound(p2, p3);
            Line l3 = Line.CreateBound(p3, p4);
            Line l4 = Line.CreateBound(p4, p1);
            CurveArray curveArray = new CurveArray();
            curveArray.Append(l1);
            curveArray.Append(l2);
            curveArray.Append(l3);
            curveArray.Append(l4);
            CurveArrArray curveArr = new CurveArrArray();
            curveArr.Append(curveArray);
            Plane p1 = faDoc.Application.Create.NewPlane(XYZ.BasisZ, XYZ.Zero);
            Extrusion extrusion = faDoc.FamilyCreate.NewExtrusion(true, curveArr, SketchPlane.Create(faDoc, p1), 10);
            faDoc.Regenerate();
            //关联材质参数
            Parameter p = extrusion.get_Parameter(BuiltInParameter.MATERIAL_ID_PARAM);
            manager.AssociateElementParameterToFamilyParameter(p, mfp);
            trans.Commit();
        }
        catch (Exception ex)
        {
            trans.RollBack();
        }
        //载入族
        Family fa = faDoc.LoadFamily(_doc);
        faDoc.Close(false);
        //设置族名称
        trans = new Transaction(_doc, "SetName");
        trans.Start();
        fa.Name = "自建拉伸";
        trans.Commit();
        return Result.Succeeded;
    }
}
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值