首页 / 浏览问题 / 组件GIS / 问题详情
iDesktop .net 10i 模型数据集生成缓存和导出文件时异常
53EXP 2021年06月23日

使用产品:iDesktop .net 10i
数据类型: .net插件开发中, 模型数据集导出为osgb异常退出
问题详细描述:
1. 模型数据集是在iDesktop 中,通过对已有的倾斜摄影模型osgb格式数据进行【倾斜摄影】- 【生成配置文件】 - 【保存为模型数据集】操作得到


2. 创建缓存的代码 - 程序异常退出

            Datasource datasource = SuperMap.Desktop.Application.ActiveApplication.Workspace.Datasources[0];
            DatasetVector datasetVector = datasource.Datasets["Config_1"] as DatasetVector;
            Recordset recordset = datasetVector.GetRecordset(false, CursorType.Dynamic);
            SuperMap.Data.Processing.OSGBCacheBuilder builder= new SuperMap.Data.Processing.OSGBCacheBuilder();
            builder.Recordset = recordset;
            builder.CacheName = "test";
            builder.Position = new Point3D(572637, 3219901, 0); ;
            builder.Bounds = datasetVector.Bounds;
            builder.FileType = CacheFileType.OSGB;
            builder.OutputFolder = @"E:\Test";
            builder.Build();

错误提示:程序“[35156] SuperMap Desktop.exe”已退出,返回值为 -1073741819 (0xc0000005) 'Access violation'。

2. 导出文件的代码 - 导出模型不一致

            Datasource datasource = SuperMap.Desktop.Application.ActiveApplication.Workspace.Datasources[0];
            DatasetVector datasetVector = datasource.Datasets["Config_1"] as DatasetVector;
            Recordset recordset = datasetVector.GetRecordset(false, CursorType.Dynamic);
            for (int i = 0; i < recordset.RecordCount; i++)
            {
                GeoModel3D geoModel3D = recordset.GetGeometry() as GeoModel3D;
                Model model = geoModel3D.Model;
                ModelFileSetting modelFileSetting = new ModelFileSetting();
                modelFileSetting.FilePath =Path.Combine( @"C:\Users\Hxxxxxx\Desktop\新建文件夹", $"model_{i}.osgb");
                SuperMap.Realspace.ThreeDDesigner.ModelConvertor.ToFile(model, modelFileSetting);
                recordset.MoveNext();
            }

使用本段代码可以导出模型文件,但将导出的文件又添加到supermap idesktop中显示时,数据不对


实际需求: 将(倾斜/3dmax)模型文件导入到Supermap iDesktop中的数据源中,又通过数据源中的模型数据集导出为原始类型的模型文件

是否不应该通过上面的错误代码来实现这个需求呢?又应该怎么做才对呢? 希望能得到解答 谢谢!

1个回答

为什么要这么操作呢,是有什么实际应用需要这样的操作吗
4,620EXP 2021年06月23日
现在是在做三维模型数据管理,就是要做倾斜摄影/白膜/精模数据的导入和导出
倾斜摄影数据不支持这样的操作哈,倾斜本身属于一张皮,不支持这样的导出
倾斜摄影数据已经导入到数据源中做为模型数据集了,也不支持导出是吗? 那请问应该怎么生成模型缓存呢? 问题中使用的代码会异常退出

还有3dmax的模型可以支持导入和导出吗?
...