乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 129|回复: 9

请问如何画一个多边形,并获取该多边形里的图元?

[复制链接]

16

主题

48

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2011-6-14 10:32:00 | 显示全部楼层 |阅读模式
请问如何画一个多边形,并获取该多边形里的图元?
回复

使用道具 举报

16

主题

48

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2011-6-14 14:36:00 | 显示全部楼层
哪位高手贴段代码参考下啊!
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2011-6-15 00:34:00 | 显示全部楼层

  1.     Public Enum PolygonSelectType
  2.         '''
  3.         ''' 圈交(实选)
  4.         '''
  5.         '''
  6.         CrossingPolygon = 1
  7.         '''
  8.         ''' 圈围(范选)
  9.         '''
  10.         '''
  11.         WindowPolygon = 2
  12.     End Enum
  13.     Public Function SelectEntsByPolygon(ByVal objEditor As Editor, ByVal Pts As Point3dCollection, Optional ByVal sFilter As SelectionFilter = Nothing, Optional ByVal SelectType As PolygonSelectType = PolygonSelectType.CrossingPolygon) As ObjectId()
  14.         Dim resSel As PromptSelectionResult = Nothing
  15.         Select Case SelectType
  16.             Case 1
  17.                 If sFilter Is Nothing Then
  18.                     resSel = objEditor.SelectCrossingPolygon(Pts)
  19.                 Else
  20.                     resSel = objEditor.SelectCrossingPolygon(Pts, sFilter)
  21.                 End If
  22.             Case 2
  23.                 If sFilter Is Nothing Then
  24.                     resSel = objEditor.SelectWindowPolygon(Pts)
  25.                 Else
  26.                     resSel = objEditor.SelectWindowPolygon(Pts, sFilter)
  27.                 End If
  28.             Case Else
  29.                 '暂时没有其它情况
  30.         End Select
  31.         If resSel.Value Is Nothing Then
  32.             Return New clsAADS.ObjectId() {}
  33.         Else
  34.             Return (resSel.Value.GetObjectIds())
  35.         End If
  36.     End Function

多边形的顶点坐标转到point3dcollection就不用说了吧
回复

使用道具 举报

16

主题

48

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2011-6-15 08:45:00 | 显示全部楼层
回复
谢谢,请问你有C#的代码么?我现在只要获取到多边形里所有图元的ObjectId后,删除该多边形或刷新图层该怎么做.本人新手希望代码能全点,谢谢
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2011-6-15 11:50:00 | 显示全部楼层
自己找个网站翻译一下好了,C# 我也不会写,不过语法基本还是比较接近的。
http://www.developerfusion.com/tools/convert/vb-to-csharp/
回复

使用道具 举报

16

主题

48

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2011-6-15 13:37:00 | 显示全部楼层
回复
谢谢了!你能把整个代码给我看看么?我对方法里传的值看不明白
回复

使用道具 举报

16

主题

48

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2011-6-17 08:47:00 | 显示全部楼层
哪为高手帮帮忙啊!给个具体点的实例参考下啊
回复

使用道具 举报

7

主题

19

帖子

3

银币

初来乍到

Rank: 1

铜币
47
发表于 2011-6-17 10:29:00 | 显示全部楼层

          public static bool selctText(ObjectId idp, Point3dCollection point3D)
        {
           Document doc = Autodesk.AutoCAD.Applicati**ervices.Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database ;
            bool fa = false;
            using (Transaction tr = doc.TransactionManager.StartTransaction())
            {         
                object obj = tr.GetObject(idp, OpenMode.ForWrite);
                Entity ent = (Entity)tr.GetObject(idp, OpenMode.ForWrite);
                TypedValue[] TypValAr1 = new TypedValue[1];
                TypValAr1.SetValue(new TypedValue((int)DxfCode.Start, "*TEXT"), 0);               
                SelectionFilter acSelFtr1 = new SelectionFilter(TypValAr1);
                PromptSelectionResult acSStext;
                acSStext = doc.Editor.SelectCrossingPolygon(point3D, acSelFtr1);
                if (acSStext.Status == PromptStatus.OK)
                {
                  
                    foreach (ObjectId id in acSStext.Value.GetObjectIds())
                    {
                        Entity entT = (Entity)tr.GetObject(id, OpenMode.ForRead);
                        string Str="";
                        if (entT is DBText)
                        {
                            DBText DBt = (DBText)tr.GetObject(id, OpenMode.ForRead);
                            Str = DBt.TextString;
                        }
                    }
                }
                tr .Commit ();
            }
}
回复

使用道具 举报

84

主题

543

帖子

12

银币

中流砥柱

Rank: 25

铜币
886
发表于 2011-6-17 17:51:00 | 显示全部楼层
不错的例子...
回复

使用道具 举报

16

主题

48

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
112
发表于 2011-6-20 09:13:00 | 显示全部楼层
回复
请问 ObjectId idp, Point3dCollection point3D 是什么值?我是用多段线画的多边形
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 16:21 , Processed in 0.552064 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表