使用产品: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中的数据源中,又通过数据源中的模型数据集导出为原始类型的模型文件
是否不应该通过上面的错误代码来实现这个需求呢?又应该怎么做才对呢? 希望能得到解答 谢谢!