Dynamo For Revit: CurveByPoints

前言

本文介绍如何通过参考点创建线,注意,这个只有在族文件中才能够创建。
在这里插入图片描述

内容

节点接口

从这个节点的接口出发,知道它需要输入的参数是:

  1. 一系列的参考点
  2. 输出的是否是参考线
    Dynamo For Revit: CurveByPoints_第1张图片

生成参照点

如何去创建参考点呢?

  1. 直接通过坐标或者通过坐标得到点来生成参考点的坐标点: ReferencePoint.ByCoordinatesReferencePoint.ByPointReferencePoint.ByPointVectorDistance
  2. 通过线上的点生成坐标点:ReferencePoint.ByLengthOnCurveReferenceReferencePoint.ByParameterOnCurveReference
  3. 通过面上的点生成坐标点:ReferencePoint.ByParametersOnFaceReference

Dynamo For Revit: CurveByPoints_第2张图片

生成线

通过选中 Edge 和 Face 以及自己输入坐标来创建 ReferencePoint,再通过 CurveByPoints.ByReferencePoints 来创建参照线。
Dynamo For Revit: CurveByPoints_第3张图片
Dynamo 中效果图:
Dynamo For Revit: CurveByPoints_第4张图片
Revit 中的效果图(隐藏了其它元素):
Dynamo For Revit: CurveByPoints_第5张图片

参照点的属性

ReferencePoint.XReferencePoint.YReferencePoint.Z 可以得到参照点的三个坐标值。
Dynamo For Revit: CurveByPoints_第6张图片
ReferencePoint.XYPlane、ReferencePoint.XZPlane 和 ReferencePoint.YZPlane 生成的三个平面并不是一个坐标系的三个平面,有两个面是平行的,不知道是bug还是就是这样设计的。
Dynamo For Revit: CurveByPoints_第7张图片
从代码上看,应该是一个坐标系,为何最终结果不是,难道不是欧拉坐标系?!需要后续研究一下!
代码:GitHub\DynamoRevit\src\Libraries\RevitNodes\Elements\ReferencePoint.cs

        /// 
        /// Gets XY plane of the specified ReferencePoint
        /// 
        public Plane XYPlane
        {
     
            get
            {
     
                var cs = InternalReferencePoint.GetCoordinateSystem();
                var xy = Autodesk.Revit.DB.Plane.CreateByNormalAndOrigin(cs.BasisX, cs.BasisY);
                return xy.ToPlane();
            }
        }
        /// 
        /// Gets YZ plane of the specified ReferencePoint
        /// 
        public Plane YZPlane
        {
     
            get
            {
     
                var cs = InternalReferencePoint.GetCoordinateSystem();
                var yz = Autodesk.Revit.DB.Plane.CreateByNormalAndOrigin(cs.BasisY, cs.BasisZ);
                return yz.ToPlane();
            }
        }
        /// 
        /// Gets XZ plane of the specified ReferencePoint
        /// 
        public Plane XZPlane
        {
     
            get
            {
     
                var cs = InternalReferencePoint.GetCoordinateSystem();
                var xz = Autodesk.Revit.DB.Plane.CreateByNormalAndOrigin(cs.BasisX, cs.BasisZ);
                return xz.ToPlane();
            }
        }

        #endregion

你可能感兴趣的:(Dynamo,For,Revit)