首页 / 浏览问题 / 组件GIS / 问题详情
桌面端的规则建模如何用组件开发实现
35EXP 2022年05月25日
使用产品:SuperMap iObjects.Net 10.2.1

问题描述:超图桌面端的“三维地理设计”中的“规则建模”功能,通过设置底部高程和拉伸高度字段,可以实现二维面数据的拉伸,得到立体建筑。现在我想要使用组件开发实现这个功能,iObjects.Net有没有对应的接口可以实现这个功能。我已有的数据的二维面数据,具有底部高程字段和要拉伸的高度字段。

1个回答

您好,SuperMap iObjects .NET 组件中提供了对应的规则建模的接口,如:线性拉伸,建议您使用 ModelBuilder3D 类 LinearExtrude 接口;旋转拉伸,建议您使用 ModelBuilder3D 类 RotateExtrude 接口。

详情使用建议您参考 SuperMap iObjects .NET 组件安装目录\Help目录下的离线帮助文档,检索规则建模功能中的具体算法名称(如:线性拉伸等),或者参考 SuperMap iObjects .NET 在线帮助文档

希望可以帮到您。

2,258EXP 2022年05月26日
请问示例代码中是否有该接口的相关示例代码,帮助文档中没有示例代码,不太会用

您好,关于接口的使用,组件的帮助文档中描述得非常详细哟,例如:ModelBuilder3D.LinearExtrude 接口,LinearExtrude 是 ModelBuilder3D 类的静态方法,不需要实例化就可以通过类直接调用。

LinearExtrude 方法有 4 个参数:Geometry geometry, bool bLonLat, LinearExtrudeParameter extParam, TextureMapParameter uvwParam。

  • Geometry geometry:指定进行线性拉伸的面对象,可以从数据集(Dataset)的记录集(Recordset)中获取;
  • bool bLonLat:是否是经纬度;
  • LinearExtrudeParameter extParam:设置线性拉伸参数,包括拉伸高度、是否构建LOD等,详情可参考帮助文档中的 LinearExtrudeParameter 类描述;
  • TextureMapParameter uvwParam:贴图设置,详情可参考帮助文档中的 TextureMapParameter 类描述。

ModelBuilder3D.LinearExtrude 方法的返回结果就是根据上述参数构建出来的 GeoModel3D 对象。

如果您刚开始开发或者是第一次进行组件开发,可以考虑使用我们免费提供的资源进行学习。如917书院的视频教程、完整组件包中help文件夹的中文接口文档、完整组件包samlpecode示例程序(如果示例代码中没有对应接口的使用示例,可以类比其他示例代码,实现组件包的使用流程类似)。

请问得到的三维模型,要调用什么接口添加到三维场景中呢,而且数据量较大,需要考虑速度问题

您好,直接添加三维模型到三维场景中展示的话,有以下几种方式:

  1. 将三维模型(数据量较小)直接添加到三维场景(Scene)的追踪图层(TrackingLayer)中显示;
  2. 通过 ModelTools.GeoModel3DsToKML 方法将 GeoModel3D 模型导出成文件后,再将模型文件通过 Scene.Layers.Add 方法添加到三维场景中。

如果数据量较大的话,建议您先通过上诉方式2将三维模型数据添加到三维场景中,然后使用 SceneCacheBuilder 类生成三维场景缓存,最后直接加载三维场景缓存,这样可以解决性能问题。SceneCacheBuilder 类的详细使用建议参考 SuperMap iObjects .NET帮助文档。

...