首页 / 浏览问题 / 组件GIS / 问题详情
sketchup三维模型导入supermap?
2EXP 2017年03月11日

Sketchup生成的dea或kmz格式的三维模型如何导入supermap中呀,crying

1个回答

你好,KMZ可以用ImportSettingKMZ 类导入,dea可以用ImportSettingModelOSG 类导入
5,985EXP 2017年03月13日

能否提供些实现的代码呀,我编写的有点问题indecision

你可以先说一下哪儿有问题,顺便把相关代码贴上来,还有你是用.net组件还是java组件还是C++组件

我用的是.net组件,c#编程的,红字部分报错

 public DatasetVector importdata3D(Datasource m_datasource)
        {
            DataImport m_dataimport = new DataImport();
            ImportSettingKMZ kmz = new ImportSettingKMZ();
            kmz.ImportMode = ImportMode.Overwrite;
            string path = OpenFile();
            kmz.SourceFilePath = path;

            kmz.TargetDatasource = m_datasource;

            ImportDataInfos datainfo = kmz.GetTargetDataInfos("");
            ImportDataInfoKMZ info = datainfo[0] as ImportDataInfoKMZ;
            string name = System.IO.Path.GetFileName(path);
            string name1 = name.Substring(0, name.IndexOf("."));
            info.TargetName = name;
            kmz.SetTargetDataInfos(datainfo);
            m_dataimport.ImportSettings.Add(kmz);
            m_dataimport.Run();
            Layer3DDataset importResult = m_datasource.Datasets[name1] as Layer3DDataset;
            return importResult;

        }

具体报什么错,把错误信息贴出来我看一下
错误    11    无法通过引用转换、装箱转换、取消装箱转换、包装转换或 null 类型转换将类型“SuperMap.Data.Dataset”转换为“SuperMap.Realspace.Layer3DDataset”    F:\2017\17-研一下\AE_学习\Supermap_demo01\Supermap_demo01\Tools\DataFile.cs    130    43    Supermap_demo01

你好,你可以先导入成Dataset试试看能成功不

另外请问一下你的KMZ文件是谷歌的是吧
DataImport m_dataimport = new DataImport();
            string path = @"C:\Users\Administrator\Desktop\park.kmz";
            ImportSettingKMZ kmz = new ImportSettingKMZ(path,_workspace.Datasources[0],true);
            kmz.ImportMode = ImportMode.Overwrite;

            ImportDataInfos datainfo = kmz.GetTargetDataInfos("");
            ImportDataInfoKMZ info =datainfo[0] as ImportDataInfoKMZ;
            string name = System.IO.Path.GetFileName(path);
            string name1 = name.Substring(0, name.IndexOf("."));
            info.TargetName = name1;
            kmz.SetTargetDataInfos(datainfo);
            m_dataimport.ImportSettings.Add(kmz);
            m_dataimport.Run();

这是我写的,成功导入进去了
我的kmz文件是sketchup生成的三维模型导出的格式
那就应该没问题,你先试试看吧,我这边是能导入的

嗯嗯,谢谢老师了smiley

老师你是怎么将导入的kmz文件添加到scene中的呀?
scene.layers.add,然后你选择合适的重载方法
嗯嗯,关键是 scene.layers.add 方法输入的参数的类型是什么呀,使用哪个重载方法?
因为你是把KMZ导入成数据集了,所以用Layer3Ds.Add 方法 (Dataset, Layer3DSetting, Boolean)这个方法

<!--StartFragment --><!--StartFragment -->

image


为什么datainfo的count一直为0,导入失败?

ImportDataInfos datainfo = kmz.GetTargetDataInfos("");
 ImportDataInfoKMZ info = datainfo[0] as ImportDataInfoKMZ;

你好,我之前给了你相关代码,你的KMZ文件成功导入成数据集了吗,还有 kmz.GetTargetDataInfos("")这个方法是你自己写的吗,功能是什么,把代码一起贴出来看一下。

...