点
计算两点之间的距离
XYZ.DistanceTo(XYZ)
取得单位向量
XYZ.Normalize()
线
线型分为6中,常用Line 和 Arc ,所以经常用as 强制转换格式
Curve是抽象图元,不显示在视图中,ModeLine和DetailCurve才是模型类图元;
获取线段上某一点
XYZ start = curve.GetEndPoint(0)//获取端点
XYZ p1=curve.evaluate(0.8,true)//获取一定位置的点
获得交点
XYZ p = new XYZ();
IntersectionResultArray resultArray = new IntersectionResultArray();
SetComparisonResult result = line1.Intersect(line2, out resultArray);
if (result == SetComparisonResult.Overlap)
p = resultArray.get_Item(0).XYZPoint;
其中SetComparisonResult的枚举形式查找API调整使用
求垂足和垂足距离
XYZ projectPoint=line.project(p).XYZPoint;
double distance=line.Projecet(p).distance;
面
点选面的选取:选择面计算面积
从实体提取面:从实体提取面
线面交点:线与面的交点
体
体在RevitAPI里成为Solid,也是一个抽象的集合概念,代表从构件中提取的实体或者使用代码创建出来的实体
如何提取所有的solid构件:提取solid from Element
如何用代码创建实体,并将抽象化solid实体转化成Revit可见的构件实体
参照代码:内建体量内容后续补充
坐标转化
新建一个相对坐标系
Transform transform = Transform.Identity;
transform.Origin = origin;
transform.BasisX = basisX;
transform.BasisY = basisY;
//如果两个方向已经确定,第三个方向一般用向量叉积计算,避免出错
transform.BasisZ = (transform.BasisX).CrossProduct(transform.BasisY);
求绝对坐标在相对坐标中坐标值
XYZ p = new XYZ(1, 2, 3);
XYZ ptransform = transform.Inverse.OfPoint(p);
求相对坐标系的点到绝对坐标系
XYZ ptransform = new XYZ(1, 2, 3);
XYZ p = transform.OfPoint(p);
实例:求点面距离
代码:远距淡显