明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4192|回复: 15

[选集] 我想用一直线选择在直线上的实体,怎么实现?

[复制链接]
发表于 2014-7-1 22:25:20 | 显示全部楼层 |阅读模式
[code=csharp][/code]public static PromptSelectionResult SelectOnLine(this Editor ed, Line3d line)
        {
            Point3d p1 = line.StartPoint;
            Point3d p2 = line.EndPoint;
            Point3d[] ps = { p1, p1, p2, p2 };
            Point3dCollection pts = new Point3dCollection(ps);
            return ed.SelectCrossingPolygon(pts);

        }
在选择的时候,选择了直线,不知道怎样把Entity类型变成Line3d ,请教
发表于 2014-7-2 09:53:08 来自手机 | 显示全部楼层
用函数重载 参数换成Line
 楼主| 发表于 2014-7-2 20:57:03 | 显示全部楼层
sxpd 发表于 2014-7-2 09:53
用函数重载 参数换成Line

你好,我也是刚开始学习C#,对一些东西还不能灵活运用,能具体针对此问题教教我不,谢谢
发表于 2014-7-2 23:50:29 | 显示全部楼层
在类中加个同名函数,改变参数类型或个数 这个叫重载函数 每本C#书都有讲的,,,
public static PromptSelectionResult SelectOnLine(this Editor ed, Line line)
        {
            Point3d p1 = line.StartPoint;
            Point3d p2 = line.EndPoint;
            Point3d[] ps = { p1, p1, p2, p2 };
            Point3dCollection pts = new Point3dCollection(ps);
            return ed.SelectCrossingPolygon(pts);

        }
 楼主| 发表于 2014-7-3 09:25:43 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-7-2 23:50
在类中加个同名函数,改变参数类型或个数 这个叫重载函数 每本C#书都有讲的,,,
public static PromptSe ...

版主好, SelectOnLine这个函数式我写的,我用别的函数调用此函数时,提示选择直线,最终得到的是Entity对象,不知道怎样变成Line3d对象,不能正确调用此函数。
发表于 2014-7-3 09:57:47 | 显示全部楼层
Line3d ln = new Line3d((Line)ent.StartPoint, (Line)ent.EndPoint);
发表于 2014-7-3 10:17:18 来自手机 | 显示全部楼层
SelectOnLine(ed,(Line)ent);
函数重载调用时会自动判断参数类型
 楼主| 发表于 2014-7-3 10:40:07 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-7-2 23:50
在类中加个同名函数,改变参数类型或个数 这个叫重载函数 每本C#书都有讲的,,,
public static PromptSe ...

[CommandMethod("LLA")]
        public static void 选择1()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            PromptEntityResult ent = ed.GetEntity("\n 请选择直线");
            ObjectId id = ent.ObjectId;
            //Line3d line = (Line3d)id.GetObject(OpenMode.ForRead);
            //上一行是我想要的效果,不知道怎么实现?如果能实现,我就可以调用SelectOnLine(line)函数了。
        }
 楼主| 发表于 2014-7-3 10:45:48 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-7-3 10:17
SelectOnLine(ed,(Line)ent);
函数重载调用时会自动判断参数类型

我试试,谢谢飞狐版主。刚开始学习,以后还请版主多多赐教。
 楼主| 发表于 2014-7-3 11:26:34 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-7-3 10:17
SelectOnLine(ed,(Line)ent);
函数重载调用时会自动判断参数类型

谢谢飞狐版主,我把Autodesk.AutoCAD.DatabaseServices和 Autodesk.AutoCAD.Geometry命名空间没搞清楚,我以为LINE和LINE3D都是在Autodesk.AutoCAD.Geometry空间,没想到LINE是在Autodesk.AutoCAD.DatabaseServices空间,而LINE3D在Autodesk.AutoCAD.Geometry空间。我的功能实现了,再次感谢版主。
搞定一个难题(我自己的)有点窃喜。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:35 , Processed in 0.200735 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表