博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模型数据处理之实例化处理
阅读量:4162 次
发布时间:2019-05-26

本文共 1876 字,大约阅读时间需要 6 分钟。

作者:翔翔

  上一篇博客说的是移除重复点和重复面,下面就来介绍如何实例化处理。何为实例化?实例化有什么作用呢?

  实例化:在面向对象的编程语言中,new一个类出来,这个就叫实例化。而本文的实例化和这个类似,new出来的这个类被无限复用。超图中的实例化:一个重复的对象只存储一次,然后将该对象重复使用多次。减少了存储空间;在场景中渲染时,内存也只需要存储一个对象,与之复用的就只需要更改位置和旋转缩放等状态即可。
  在SuperMap iDesktop中,找到实例化处理的按钮然后选择一个对象即可。
在这里插入图片描述

实例化处理

  实例化话即可在对象属性的窗口中查看共用了多少次,如下图所示:

在这里插入图片描述

实例化处理结果
  
实现的代码如下:
//实例化存储需要用到实体管理器 ModelEntityManager  虽然实体管理器提供的追加Model的功能,但是Model没有Name属性,不能用于实例化    //GeoModel3D、Model实际上都是壳,真正的数据是骨架Skeleton    ModelEntityManager em = new ModelEntityManager(dv);    string filename = Path.GetFileNameWithoutExtension(filesetting.FilePath);    //定义字典,模型文件名称,对应的骨架名称集合;公用的对象直接取骨架名称构建Model即可    Dictionary
> m_ModelAndSkeletons = new Dictionary
>(); //模型获取骨架,存储到实体管理器中ModelEntityManager if (!m_ModelAndSkeletons.Keys.Contains(filename)) { m_ModelAndSkeletons[filename] = new List
(); } int skeletoncount = resultModelRemove.GetSkeletonCount(-1);//-1代表精细层,如果有lod 获取lod数量 再获取每个lod层对应的骨架 for (int i = 0; i < skeletoncount; i++) { SkeletonID skeletonID = new SkeletonID(-1, i); Skeleton skeleton = resultModelRemove.GetSkeleton(skeletonID); Skeleton newskeleton = em.Append(skeleton); m_ModelAndSkeletons[filename].Add(newskeleton.Name); newskeleton.Dispose(); skeleton.Dispose(); } resultModelRemove.Dispose(); //所有骨架存储完后,em存储一下 em.Save(); //实例化对象,公用的对象 Model _model = new Model(); foreach (string skeletonName in m_ModelAndSkeletons[filename]) { _model.AddSkeleton(em, skeletonName); } //新建geomodel3d最后保存到数据集中去 GeoModel3D model3d = new GeoModel3D(); //这是模型的位置 model3d.Position = new Point3D(115, 30, 1); model3d.IsLonLat = true; model3d.Model = _model; //添加到记录集中,保存更新 recordset.AddNew(model3d); model3d.Dispose(); recordset.Batch.Update(); recordset.Dispose();

      以上就是实例化的代码,如有不对还请批正。

    转载请注明出处:

    你可能感兴趣的文章
    实验5-7 程序调试入门
    查看>>
    实验5-8 综合练习
    查看>>
    第2章实验补充C语言中如何计算补码
    查看>>
    深入入门正则表达式(java) - 命名捕获
    查看>>
    使用bash解析xml
    查看>>
    android系统提供的常用命令行工具
    查看>>
    【Python基础2】python字符串方法及格式设置
    查看>>
    【Python】random生成随机数
    查看>>
    【Python基础3】数字类型与常用运算
    查看>>
    【Python基础4】for循环、while循环与if分支
    查看>>
    【Python基础6】格式化字符串
    查看>>
    【Python基础7】字典
    查看>>
    【Python基础8】函数参数
    查看>>
    【Python基础9】浅谈深浅拷贝及变量赋值
    查看>>
    Jenkins定制一个具有筛选功能的列表视图
    查看>>
    【Python基础10】探索模块
    查看>>
    【Python】将txt文件转换为html
    查看>>
    [Linux]Shell脚本实现按照模块信息拆分文件内容
    查看>>
    idea添加gradle模块报错The project is already registered
    查看>>
    在C++中如何实现模板函数的外部调用
    查看>>