Revit二次开发————投影、求交点方法

引言:Revit二次开发中,投影、求交点是很重要的东西,笔者经过多次运用,发现以下两个是笔者常用的,分享给大家。希望诸君多多支持。————笔者有贰法,与君共勉之,云云🤭

 

        /// <summary>
        /// 投影到一个平面
        /// </summary>
        /// <param name=""></param>
        /// <param name="xyz"></param>
        /// <returns></returns>
        public static XYZ GetProjectPoint(Plane plane, XYZ xyz)
        {
            Transform tf = Transform.Identity;
            tf.BasisX = plane.XVec;
            tf.BasisY = plane.YVec;
            tf.BasisZ = plane.Normal;
            tf.Origin = plane.Origin;
            XYZ p = tf.Inverse.OfPoint(xyz);
            p = new XYZ(p.X, p.Y, 0);
            return tf.OfPoint(p);
        }
         /// <summary>
        /// 计算两条线的交点
        /// </summary>
        /// <param name="curve1"></param>
        /// <param name="curve2"></param>
        /// <returns></returns>
        /// 
        public static XYZ IntersectionPoint(Curve curve1, Curve curve2)
        {
            IntersectionResultArray intersectionR = new IntersectionResultArray();
            SetComparisonResult comparisonR;
            comparisonR = curve1.Intersect(curve2, out intersectionR);
            XYZ intersectionResult = null;
            if (SetComparisonResult.Disjoint != comparisonR) // Disjoint无交点 
            {
                try
                {
                    if (!intersectionR.IsEmpty) 
                    {
                        intersectionResult = intersectionR.get_Item(0).XYZPoint;
                    }
                }
                catch
                { }


            }
            return intersectionResult;
        }

技术群:1090519856

  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值