cooolseee 发表于 2014-7-1 22:25:20

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

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 ,请教

sxpd 发表于 2014-7-2 09:53:08

用函数重载 参数换成Line

cooolseee 发表于 2014-7-2 20:57:03

sxpd 发表于 2014-7-2 09:53 static/image/common/back.gif
用函数重载 参数换成Line

你好,我也是刚开始学习C#,对一些东西还不能灵活运用,能具体针对此问题教教我不,谢谢

雪山飞狐_lzh 发表于 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);

      }

cooolseee 发表于 2014-7-3 09:25:43

雪山飞狐_lzh 发表于 2014-7-2 23:50 static/image/common/back.gif
在类中加个同名函数,改变参数类型或个数 这个叫重载函数 每本C#书都有讲的,,,
public static PromptSe ...

版主好, SelectOnLine这个函数式我写的,我用别的函数调用此函数时,提示选择直线,最终得到的是Entity对象,不知道怎样变成Line3d对象,不能正确调用此函数。

ivde 发表于 2014-7-3 09:57:47

Line3d ln = new Line3d((Line)ent.StartPoint, (Line)ent.EndPoint);

雪山飞狐_lzh 发表于 2014-7-3 10:17:18

SelectOnLine(ed,(Line)ent);
函数重载调用时会自动判断参数类型

cooolseee 发表于 2014-7-3 10:40:07

雪山飞狐_lzh 发表于 2014-7-2 23:50 static/image/common/back.gif
在类中加个同名函数,改变参数类型或个数 这个叫重载函数 每本C#书都有讲的,,,
public static PromptSe ...


      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)函数了。
      }

cooolseee 发表于 2014-7-3 10:45:48

雪山飞狐_lzh 发表于 2014-7-3 10:17 static/image/common/back.gif
SelectOnLine(ed,(Line)ent);
函数重载调用时会自动判断参数类型

我试试,谢谢飞狐版主。刚开始学习,以后还请版主多多赐教。

cooolseee 发表于 2014-7-3 11:26:34

雪山飞狐_lzh 发表于 2014-7-3 10:17 static/image/common/back.gif
SelectOnLine(ed,(Line)ent);
函数重载调用时会自动判断参数类型

谢谢飞狐版主,我把Autodesk.AutoCAD.DatabaseServices和 Autodesk.AutoCAD.Geometry命名空间没搞清楚,我以为LINE和LINE3D都是在Autodesk.AutoCAD.Geometry空间,没想到LINE是在Autodesk.AutoCAD.DatabaseServices空间,而LINE3D在Autodesk.AutoCAD.Geometry空间。我的功能实现了,再次感谢版主。
搞定一个难题(我自己的)有点窃喜。
页: [1] 2
查看完整版本: 我想用一直线选择在直线上的实体,怎么实现?