查看: 1272|回复: 0

点击查找3DML属性

[复制链接]

173

主题

237

帖子

8236

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8236
发表于 2019-1-28 21:59:00 | 显示全部楼层 |阅读模式
1、3DML属性不可以直接读取到。
2、第一个步骤,定义点击事件
  if (sgworld == null)
                sgworld = new SGWorld701();
            sgworld.OnLButtonUp += Sgworld_OnLButtonUp;

3、第二个步骤,点击后先获取featureid,之后获取所有的3DMLfeatures,或者屏幕内的,随你喜欢。之后遍历每个feature,直到找到id一致的。
  private bool Sgworld_OnLButtonUp(int Flags, int X, int Y)
        {
            IWorldPointInfo701 worldinfo = sgworld.Window.PixelToWorld(X, Y, WorldPointType.WPT_3DML);
            if (worldinfo == null || worldinfo.ObjectID == "") return false;
            IFeature701 feature = (IFeature701)sgworld.Creator.GetObject(worldinfo.ObjectID);
            if (null == feature) return false;
            string id = feature.ID;

            I3DMLFeatureLayer701 meshlayer = (I3DMLFeatureLayer701)sgworld.Creator.GetObject(sgworld.ProjectTree.FindItem("Paris\\3DML\\Paris 3DML\\public buildings "));

            IFeatures701  features =meshlayer.ExecuteQuery(null);
            foreach (IFeature701 item in features)
            {
                if (item.ID == feature.ID)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (IFeatureAttribute701 f in item.FeatureAttributes)
                    {
                        sb.Append(f.Name.ToString() + ":" + f.Value.ToString() + "---");
                    }

                    MessageBox.Show(sb.ToString());

                }
            }

            return false;
        }

微信截图_20190128215544.png

QQ|手机版|GIS3D 基地 ( 京ICP备16033688号

GMT+8, 2019-6-17 16:33 , Processed in 0.213426 second(s), 31 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表
 
Skyline中文社区-总群
帮主 gis3d 海洪