使用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.0, 0.0);
        XYZ pt2 = new XYZ(-0.5, 2.0, 0.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.5, 0.0);
        XYZ pt2 = new XYZ(-2.0, -0.5, 0.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.0, 0.0);
        XYZ pt2 = new XYZ(-0.5, 2.0, 0.0);
        XYZ pt3 = new XYZ(-0.5, -1.0, 1.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 > )
        {  // we should have only one with the given name. 
            return elems[];
        }         // cannot find it.
        return null;
    }
}

from:http://greatverve.cnblogs.com/p/NewReferencePlane.html

Revit Family API 创建参考平面的更多相关文章

  1. Revit通过API创建共享参数

    Revit共享参数是通过创建一个.txt类型的文件来保存相关信息,一旦与项目保存完毕之后,共享参数也就变成了项目参数(项目参数无法通过API创建),项目参数是保存在Revit项目里面的,所以此时这个. ...

  2. Revit Family API 添加对齐

    没测试成功,留待以后研究. [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] ; ; i < nV ...

  3. Revit Family API 添加几何实体

    先创建一个封闭曲线createProfileLShape();再创建实体,这里需要手工画一个参考平面; ; i < nVerts; ++i)        {            Line l ...

  4. 使用Azure REST API创建虚拟机

    Hollis Yao, Shihao Rong  使用REST API创建虚拟机之前,首先要确保Azure订阅中已经建好了"云服务"和"存储账号".如果没有的话 ...

  5. 使用hbase的api创建表时出现的异常

    /usr/lib/jvm/java-7-openjdk-amd64/bin/java -Didea.launcher.port=7538 -Didea.launcher.bin.path=/usr/l ...

  6. (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0)

    (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0) 更新:ios4.1现在已经将这个做到SDK了.你可以设置键盘类型为UIKeyboardTypeDecimal ...

  7. JavaEE Tutorials (11) - 使用Criteria API创建查询

    11.1Criteria和Metamodel API概述16811.2使用Metamodel API为实体类建模170 11.2.1使用元模型类17011.3使用Criteria API和Metamo ...

  8. 使用Win32 API创建不规则形状&带透明色的窗口

    前一阵突然想起了9月份电面某公司实习时的二面题,大概就是说怎么用Win32 API实现一个透明的窗口,估计当时我的脑残答案肯定让面试官哭笑不得吧.所以本人决定好好研究下这个问题.经过一下午的摸索,基本 ...

  9. Revit 2015 API 的全部变化和新功能

    这里从SDK的文章中摘录出全部的API变化.主要是希望用户用搜索引擎时能找到相关信息: Major changes and renovations to the Revit API APIchange ...

随机推荐

  1. linux(CentOS7)中安装erlang(20.3)以及rabbitmq(3.7.9)的步骤以及一些注意事项

    首先下载安装包,之后先安装erlang,安装erlang需要很多依赖,所以一步步来: 首先 wxWidgets会报错,这个不是必须的,可以不安装,不影响 然后需要安装一些必须的依赖: yum inst ...

  2. BurpSuite中的安全测试插件推荐

    Burp Suite 是用于攻击web 应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程.所有的工具都共享一个能处理并显示HTTP 消息,持久性,认证,代 ...

  3. Service Mesh 及其主流开源实现解析(转)

    什么是 Service mesh Service Mesh 直译过来是 服务网格,目的是解决系统架构微服务化后的服务间通信和治理问题.服务网格由 sidecar 节点组成.在介绍 service me ...

  4. dede列表页读取当前栏目名称

    list或者arclist之内使用[field:typename/]之外使用{dede:field name='typename'/}

  5. 《Look Mom, I don’t use Shellcode》议题解析

    0x0 前言 <Look Mom, I don’t use Shellcode>是2016年Syscan360上讲过的一个议题,这个议题的副标题是"Browser Exploit ...

  6. Jupyter Notebook 入门

    参考     Jupyter Notebook 快速入门 进阶 可看: Jupyter Notebook 的 27 个窍门,技巧和快捷键 Jupyter Notebook(此前被称为 IPython ...

  7. Angular和Vue.js

    Angular和Vue.js Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已 ...

  8. OpenCV中的SVM参数优化

    OpenCV中的SVM参数优化 svm参数优化opencv SVMSVR参数优化CvSVMopencv CvSVM        SVM(支持向量机)是机器学习算法里用得最多的一种算法.SVM最常用的 ...

  9. 关于replacePlaceholders

    现在还没有完全验证好,有空看看报错信息 https://www.cnblogs.com/fanguangdexiaoyuer/p/5788432.html 1.目录结构 2. package cn.c ...

  10. ctrl+c ctrl+d ctrl+z 的区别和使用场景

    三者的区别 Ctrl+C :强制中断程序,程序无论运行哪里都停止. Ctrl+D :发送一个 exit 的信号,退出当前的用户或者是客户端. Ctrl+Z :暂停程序,在进程中维持挂起状态. 引用别人 ...