首页 / 浏览问题 / 组件GIS / 问题详情
插件开发中,如何实现在场景中编辑、重置模型位置?
7EXP 2021年12月15日

在idesktop 10i上可以修改场景中从模型数据集加载的模型的位置,并且在点击确认之前可以通过重置按钮重置模型位置。我尝试使用超图的.net SDK实现这样的功能,但是我找不到如何在不修改数据集的情况下直接修改模型位置,只能通过修改数据集然后刷新场景和图层的方式来实现。

我想请教一下有没有什么函数可以直接修改场景中的模型位置而不需要修改数据集?

1个回答

您好,如果只是问不通过数据集的方式来修改并显示几何对象的话。

可以了解使用一下跟踪图层,修改单Geometry空间信息、几何信息或风格信息,把单Geometry加到跟踪图层中是可以即时生效的。

所以可以考虑开启编辑时就在跟踪图层来完成业务,确认保存时将最后的Geometry去修改数据集。

希望可以帮助到您!
于丁
1
10,513EXP 2021年12月15日
谢谢您的回答!

我尝试过使用跟踪图层的方式进行新增操作,但是如果使用跟踪图层,编辑时原本的模型和使用的模型是同时存在的,这样看上去效果不好。我试过将选择集的样式设置为隐藏,但是这样的话模型实际上还是存在的,会影响到GetHeight()函数的计算结果。

请问有什么方法可以实现编辑时将原本的模型去掉,确认或取消保存时再将模型加上去的效果吗?
你在编辑时用 GetHeight() 是做什么?

你如果要去掉就是要修改数据集的,至于取消或者保存后的显隐返回实现要你自己代码逻辑实现。
我想要实现的编辑功能不是根据经纬度或投影坐标进行定位的,在编辑时我需要使用输入的属性和GetHeight()计算修改后的模型的位置。

如果只能通过修改数据集的方式来实现的话,我决定使用这种方式来实现编辑操作:开启编辑时移除数据集中的模型并刷新图层,接着使用跟踪层完成编辑操作,完成或取消时再重新设置数据集中的模型。

谢谢您的帮助!
我们的桌面大多功能能支持撤回、恢复、回退、重置等,其实是工作空间有一个中间内存数据源的,像编辑这种功能时,是把目标数据集复制到内存数据源中,修改编辑时操作的其实都是内存数据源里的数据集,确认编辑 确认保存时才将其写入原数据集。

当然你这里业务没这么复杂,重置的实现可以只是在编辑前将你移除的模型复制保存一个,重置时直接调这个。
...