EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 569|回复: 2
打印 上一主题 下一主题

[技术探索] civil 3D提取指定坐标点高程

[复制链接]

1

主题

3

帖子

21

积分

BIM书童

Rank: 1

积分
21
跳转到指定楼层
楼主
发表于 2016-6-7 15:22:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学BIM软件,大家有搞二次开发的多多交流

这个程序作用是加载后输入一个x,y坐标,程序自动将所有曲面该x,y坐标处的高程提取出来。

不知道如何添加附件。

[CommandMethod("GetElevation")]
        public void GetElevation()
        {
            Autodesk.AutoCAD.EditorInput.Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;

            CivilDocument doc=Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument;
            double xCoordinate = 0.00;
            double yCoordinate = 0.00;
            PromptDoubleOptions xValue = new PromptDoubleOptions("输入X坐标");
            PromptDoubleResult getXCoordinate = ed.GetDouble(xValue);
            PromptDoubleOptions yValue = new PromptDoubleOptions("输入Y坐标");
            PromptDoubleResult getYCoordinate = ed.GetDouble(yValue);

            xCoordinate = Convert.ToDouble(getXCoordinate.ToString().Remove(0, 7).TrimEnd(')'));
            yCoordinate = Convert.ToDouble(getYCoordinate.ToString().Remove(0, 7).TrimEnd(')'));
            using (Transaction ts = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction())
            {
                ObjectIdCollection surfaceIds = doc.GetSurfaceIds();
                foreach (ObjectId surfaceId in surfaceIds)
                {
                    Autodesk.Civil.DatabaseServices.Entity oSurface = surfaceId.GetObject(OpenMode.ForRead) as Autodesk.Civil.DatabaseServices.Entity;
                    Autodesk.Civil.DatabaseServices.Surface surface = surfaceId.GetObject(OpenMode.ForRead) as Autodesk.Civil.DatabaseServices.Surface;


                    double zCoordinate = surface.FindElevationAtXY(xCoordinate,yCoordinate);
                    ed.WriteMessage("\n曲面名称:{0};   \t坐标点XY处高程为:{1}", oSurface.Name, zCoordinate.ToString("#.0000"));
                }
                ts.Commit();
            }
                     
        }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
初学者,个人公众号:010101,PDMS,BIM软件二次开发讨论,欢迎关注。
3F
发表于 2016-6-27 09:31:05 | 只看该作者
HAO~~   好!~~
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-16 18:37

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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