Revit Family API 创建参考平面

本文介绍如何使用 Revit Family API 创建垂直与水平参考平面。通过定义平面上的两个点和一个向量,或者三个点来确定参考平面的位置。文中提供了具体的 C# 代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用API来编辑族时,使用doc.FamilyCreate.NewReferencePlane();创建参考平面。
// Revit Family API 创建参考平面
[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]
public  class cmdCreateReferencePlane : IExternalCommand
{
     // 添加垂直参考平面(Family API),通过平面上两点与向量。
     void AddReferencePlane_VerticalOffset(Document doc, View view)
    {
        XYZ pt1 =  new XYZ(- 0.5, - 2.00.0);
        XYZ pt2 =  new XYZ(- 0.52.00.0);
        XYZ vec = XYZ.BasisZ;
        ReferencePlane refPlane = doc.FamilyCreate.NewReferencePlane(pt1, pt2, vec, view);
        refPlane.Name =  " OffsetV ";
    }
     // 添加水平参考平面(Family API),通过平面上两点与向量。
     void AddReferencePlane_HorizontalOffset(Document doc, View view)
    {
        XYZ pt1 =  new XYZ( 2.0, - 0.50.0);
        XYZ pt2 =  new XYZ(- 2.0, - 0.50.0);
        XYZ vec = XYZ.BasisZ;
        ReferencePlane refPlane = doc.FamilyCreate.NewReferencePlane(pt1, pt2, vec, view);
        refPlane.Name =  " OffsetH ";
    }
     // 使用三个点来确定参考平面
     void AddReferencePlane_VerticalOffset2(Document doc)
    {
        XYZ pt1 =  new XYZ(- 0.5, - 2.00.0);
        XYZ pt2 =  new XYZ(- 0.52.00.0);
        XYZ pt3 =  new XYZ(- 0.5, - 1.01.0);
        View view = findElement(doc,  typeof(ViewPlan),  " Lower Ref. Level "as View;
         if (view !=  null)
        {
            ReferencePlane refPlane = doc.FamilyCreate.NewReferencePlane2(pt1, pt2, pt3, view);
            refPlane.Name =  " OffsetV ";
        }
    }
     public Result Execute(ExternalCommandData commandData,  ref  string messages, ElementSet elements)
    {
        UIApplication app = commandData.Application;
        Document doc = app.ActiveUIDocument.Document;
        Selection sel = app.ActiveUIDocument.Selection;

        Transaction ts =  new Transaction(doc,  " CreateReferencePlane ");
        ts.Start();
         // 垂直参考平面
        AddReferencePlane_VerticalOffset(doc, doc.ActiveView);
         // AddReferencePlane_VerticalOffset2(doc);
        
// 水平参考平面
        AddReferencePlane_HorizontalOffset(doc, doc.ActiveView);

        ts.Commit();

         return Result.Succeeded;
    }
     // 通过类型与名称找Element
    Element findElement(Document _rvtDoc, Type targetType,  string targetName)
    {
         //  get the elements of the given type
        
//
        FilteredElementCollector collector =  new FilteredElementCollector(_rvtDoc);
        collector.WherePasses( new ElementClassFilter(targetType));

         //  parse the collection for the given name
        
//  using LINQ query here. 
        
//  
         var targetElems =  from element  in collector  where element.Name.Equals(targetName)  select element;
        List<Element> elems = targetElems.ToList<Element>();

         if (elems.Count >  0)
        {   //  we should have only one with the given name. 
             return elems[ 0];
        }

         //  cannot find it.
         return  null;
    }
}
from: http://greatverve.cnblogs.com/p/NewReferencePlane.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值