乐筑天下

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

C#通过ObjectID获得该实体对象、获取多线段各顶点坐标

[复制链接]

9

主题

26

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2013-7-30 11:20:00 | 显示全部楼层 |阅读模式
下面的实例实现内容:提示用户选择一个多线段实体,然后读取该多线段实体的属性、获取多线段顶点坐标
            //需要访问Database的操作 需首先将该文档进行锁定,操作完成后,在最后进行释放
            DocumentLock dlock = Application.DocumentManager.MdiActiveDocument.LockDocument();
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            Database db=HostApplicationServices.WorkingDatabase;
            try
            {
                using (Transaction tran = db.TransactionManager.StartTransaction())
                {
                    //选择多线段实体
                    PromptEntityOptions EntityOpts = new PromptEntityOptions("请选择一个多线段实体:");
                    PromptEntityResult EntityResult = ed.GetEntity(EntityOpts);
                    //判断是否选择成功
                    if (EntityResult.Status == PromptStatus.OK)
                    {
                        //实体类型,可以进行判断是不是Polyline                        //Entity ent =(Entity)tran.GetObject(EntityResult.ObjectId, OpenMode.ForRead);
                        //Application.ShowAlertDialog(ent.GetType().ToString());
                        //得到该实体
                        Polyline pline = (Polyline)tran.GetObject(EntityResult.ObjectId, OpenMode.ForRead);
                        //多线段是否闭合 pline.Closed
                        //多线段起始点 pline.StartPoint
                        //多线段结束点 pline.EndPoint
                        //多线段的顶点数
                        int VNumber=pline.NumberOfVertices;
                        Point2d pnt;
                        //多线段各顶点坐标
                        for(int i=0;i<VNumber;i++)
                        {
                            pnt=pline.GetPoint2dAt(i);
                            ed.WriteMessage("\n"+pnt.ToString());
                        }
                    }
                    tran.Commit();
                }
            }
            catch(Autodesk..Runtime.Exception e)
            {
                Application.ShowAlertDialog(e.Message);
            }
            dlock.Dispose();
分享了...希望对后来者有用处!
回复

使用道具 举报

4

主题

86

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2013-7-30 13:00:00 | 显示全部楼层
代码有些小问题,你要判断pline不为null
这个没什么难度,最基础的
string isclosed = pline.Closed.ToString();//多线段是否闭合
这句干什么?
tran.Commit();
这句不需要,里面没有修改实体
回复

使用道具 举报

9

主题

26

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
62
发表于 2013-7-30 15:10:00 | 显示全部楼层

非常感谢,受教了...
回复

使用道具 举报

3

主题

40

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
52
发表于 2013-10-8 07:26:00 | 显示全部楼层
开始学习。
回复

使用道具 举报

110

主题

324

帖子

10

银币

中流砥柱

Rank: 25

铜币
764
发表于 2014-7-31 08:04:00 | 显示全部楼层
学习,谢谢分享!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 20:56 , Processed in 1.398906 second(s), 62 queries .

© 2020-2025 乐筑天下

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