数据集查到模型后 模型飞行定位后怎么使模型处于选中状态 选中时模型风格为红色

0 投票
sceneCtrl3D.Scene.Fly(camera, 0);

GeoStyle3D style3d = new GeoStyle3D();

style3d.FillForeColor =Color.Red;
Selection3D select = sceneCtrl3D.Scene.Layers[0].Selection;
select.Style = style3d;
select.Add(1);
select.UpdateData();

我用数据集查到模型 飞行定位到模型  后设置选中状态不管用 没有反应
8月 27 分类:  55次浏览 | 用户: lk (1 分)
重新分类 8月 27 用户:华红霞

1个回答

0 投票
您好,这是我的实现代码,你把顺序换下试试,先selection3d.Add,再赋予风格

Selection3D selection3d = sceneControl1.Scene.Layers[0].Selection;
 selection3d.Add(1);
 selection3d.Style.FillForeColor = Color.Red;
 selection3d.UpdateData();
8月 27 用户: 邬袁凯 名扬四海 (1,455 分)
不对呢 没有反应 选不上
您好,我这边测试是可以的哈,飞行过去就是红色的选中状态,你检查下场景对应的第一个图层的数据集是不是存在smid为1的对象
你可以把你飞行到选中的代码让我参考着看看吗  我怎么能通过数据集取到对应的图层呢?
这是我的代码,你把数据集加入到场景里面就对应一个图层呀,然后你找到这个数据集,看下有没有smid为1的对象,因为你添加的是1

 Camera camera = new Camera( 116.44628459892,39.9063043228597,5);
  sceneControl1.Scene.Fly(camera, 0);
   Selection3D selection3d = sceneControl1.Scene.Layers[0].Selection;
   selection3d.Add(1);
   selection3d.Style.FillForeColor = Color.Red;
   selection3d.UpdateData();
//构建查询条件
QueryParameter queryParam = new QueryParameter();
queryParam.AttributeFilter = string.Format("NAME='{0}'", selectBuildingName);
queryParam.CursorType = CursorType.Static;
//查询
Recordset recordsetResult = pDataSet3D.Query(queryParam);

sceneCtrl3D.Scene.Fly(camera, 0);
Selection3D select = sceneCtrl3D.Scene.Layers[0].Selection;
select.Add(recordsetResult.GetID());
select.Style.FillForeColor = Color.Red;
select.UpdateData();

那个1只是测试 我现在改成了这种   获取的是对应记录的ID  应该是有的呀
你那边要是没有数据集可以看,我这边给你说个方法测试下,你先选中模型,然后获取该图层的选择集selection3D,通过selection3D[0]可以知道对应的smid值,然后再用这个smid值测试就行了
有数据集的 看得到是有1 的  我就是先取得数据集 然后通过建筑物名称找到对应的模型 超图里面看的到数据集的 有SMID为1的
你那边有没有向日葵,发个远程码,我这边远程看一下呢
远程已解决,图层选择集对应错误的问题,重新指定图层解决
...