返回介绍

响应事件,增加实体求交

发布于 2023-08-09 23:10:33 字数 2351 浏览 0 评论 0 收藏 0

如果需要捕捉两个实体的交点,需要响应自定义实体求交事件:CustomEntity_intersectWith

下面c#代码响应求交事件,然后得到自定义实体,计算出交点返回:

private void axMxDrawX1_CustomEntity_intersectWith(object sender, _DMxDrawXEvents_CustomEntity_intersectWithEvent e)
        {
            // 得到自定义实体。
            MxDrawEntity pThis = (MxDrawEntity)e.pCustomEntity;
            // 得到另一个求交的实体。
            MxDrawEntity pOther = (MxDrawEntity)e.pOhterEntity;
            if (pThis.ObjectName != "MxDrawXCustomEntity" || pOther.ObjectName != "MxDrawXCustomEntity")
                return;
            MxDrawCustomEntity pEnt1 = (MxDrawCustomEntity)pThis;
            MxDrawCustomEntity pEnt2 = (MxDrawCustomEntity)pOther;
            
            // 判断自定义有没有我们需要的属性。
            if (!pEnt1.IsHave("Point1"))
                return;
            if (!pEnt1.IsHave("Point2"))
                return;

            if (!pEnt2.IsHave("Point1"))
                return;
            if (!pEnt2.IsHave("Point2"))
                return;

            // 取自定义实体的端点坐标。
            MxDrawPoint pt11 = pEnt1.GetPoint("Point1");
            MxDrawPoint pt12 = pEnt1.GetPoint("Point2");
            MxDrawPoint pt21 = pEnt2.GetPoint("Point1");
            MxDrawPoint pt22 = pEnt2.GetPoint("Point2");
            // 创建两个临时的直线,用来求交点。
            MxDrawLine line1 = new MxDrawLine();
            line1.StartPoint = pt11;
            line1.EndPoint = pt12;
            MxDrawLine line2 = new MxDrawLine();
            line2.StartPoint = pt21;
            line2.EndPoint = pt22;
            // 返回求到的交点。
            MxDrawPoints pts = line1.IntersectWith(line2, MCAD_McExtendOption.mcExtendNone);
            if(pts.Count > 0 )
            {
                MxDrawResbuf ret = (MxDrawResbuf)axMxDrawX1.NewResbuf();
                
                for (Int32 i = 0; i < pts.Count; i++)
                {
                 
       
                    ret.AddPoint(pts.Item(i));
                }
                // 告诉控件,求到了交点。
                e.pOk = 1;
                axMxDrawX1.SetEventRetEx(ret);
            }
        }

ce2.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文