AXSceneControl汽车沿着pollyline行驶

                   
           axSceneControl汽车沿着pollyline行驶

ILayer layer = axSceneControl1.SceneGraph.Scene.get_Layer(5);
            IFeatureLayer featurelayer = (IFeatureLayer)layer;
            IFeatureClass featureclass = featurelayer.FeatureClass;
            IFeature feature = featureclass.GetFeature(0);
            IPolyline polyline = (IPolyline )feature.Shape;
            double d = polyline.Length;
            IPoint point1 = new PointClass();
            IPoint point2 = new PointClass();
            for (int i = 2; i <= (int)d;i++ )
            {
                polyline.QueryPoint(esriSegmentExtension.esriNoExtension, i, false, point1);
                polyline.QueryPoint(esriSegmentExtension.esriExtendAtFrom , i-150, false, point2);
                point2 .Z =13;
                point2.X= point2.X +-50;
                ICamera camera = axSceneControl1.SceneViewer.Camera;
                IPoint point3=new PointClass ();
                point3.X = point1.X;
                point3.Y = point1.Y;
                point3.Z =13;
                camera.Target = point3;
                camera.Observer = point2;
                IScene pscene = axSceneControl1.SceneGraph.Scene;
                IMarker3DSymbol pmark3dsymbol = new Marker3DSymbolClass();
                pmark3dsymbol.CreateFromFile("E:\\3dmax\\汽车.3DS");
                IMarkerSymbol marksy = (IMarkerSymbol)pmark3dsymbol;
                marksy.Size = 20;
                marksy.Angle = 90;
                IElement pelement = new MarkerElementClass();
                IMarkerElement pmarkelement = (IMarkerElement)pelement;
                pmarkelement.Symbol = (IMarkerSymbol)marksy;
                pelement.Geometry = point1;
                IGraphicsLayer player = axSceneControl1.SceneGraph.Scene.BasicGraphicsLayer;
                IGraphicsContainer3D pgraphiccontainer3d = (IGraphicsContainer3D)player;
                pgraphiccontainer3d.DeleteAllElements();
                pgraphiccontainer3d.AddElement((IElement)pmarkelement);
                axSceneControl1.SceneGraph.RefreshViewers();
            }
用3DS文件填充点,移动点,使汽车行驶,并改变camera.

posted @ 2008-04-02 08:37 GIS云中飞鹏 阅读(602) 评论(2)  编辑 收藏 所属分类: ArcGIS Engine开发

  回复  引用    
#1楼 2008-05-28 16:07 | 一个初学者 [未注册用户]
您好,为什么我的程序执行到这一个步时
IPolyline polyline = (IPolyline )feature.Shape;

出现这个错误呢:

无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“ESRI.ArcGIS.Geometry.IPolyline”。此操作失败的原因是对 IID 为“{F2485894-4CBD-11D1-834E-0000F8775BE9}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。

盼望您的回答。
  回复  引用    
#2楼 2008-06-21 22:45 | 啊 [未注册用户]
你的feature必须是线型的;