终于打通了在AE中从Multipatch建立到带纹理保存到GDB这一流程



  通常(几乎所有的博文)是构造一个3D容器—— IGraphicsContainer3D来接收我们在sceneControl中生成的Multipatch,如果不能保存下来则显得太不优雅,所以得考虑新建一个图层保存所生成的MP。不可行的几条弯路:

弯路①:保存到IFeatureLayer中。MP是必须要有Z值的,而IFeatureLayer不能接受带Z值的Geometry(这两句是提示的错误,不是我随口瞎说的)。

弯路②:MP保存到shp,shp保存到GDB。纹理会丢失,不解释。

正道:
                IFeatureLayer mpFLayer = new FeatureLayerClass();
                IFeatureClass mpFClass;              
                while (pDataset != null)
                {
                
                    mpFClass = pDataset as IFeatureClass;//获取FeatureClass

                    IFeatureCursor pFeatCur;
                    IFeatureBuffer pFeatBuf;
                    pFeatCur = mpFClass.Insert(true);
                    pFeatBuf = mpFClass.CreateFeatureBuffer();
                    pFeatBuf.Shape = geometry as IGeometry;
                    pFeatCur.InsertFeature(pFeatBuf);
                    pFeatCur.Flush();

                    mpFLayer.FeatureClass = mpFClass;
                    pDataset = FeatureEnumDataset.Next();
                }
                mpFLayer.Name = "Success";
                axSceneControl1.Scene.AddLayer(mpFLayer);


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值