采用鼠标选点进行开敞度分析,第一次选点结果总是错误

0 投票

采用iobject.net 采用鼠标选点进行开敞度分析时,第一次用m_VisibleViewDome.GetViewDomeRatio(ViewDome.ViewDomeType.VISIBLEDOME); 

获取的结果总是负无穷,后面再选点时就不是这样。

请问1.有可能是什么原因造成的,怎么改正。

       2.通过 GetViewDomeRatio获取的结果是通过什么计算的,面积?体积或者是其他

代码如下

 private void SceneControl_MouseUp(object sender, MouseEventArgs e)
        {          
            if (e.Button == MouseButtons.Left && (m_sceneControl.Action == Action3D.CreatePoint) && !double.IsNaN(m_sceneControl.Scene.PixelToGlobe(e.Location).X))
            {
                Point3D point3D = m_sceneControl.Scene.PixelToGlobe(e.Location, PixelToGlobeMode.TerrainAndModel);
               
                    m_VisibleViewDome.ViewerPosition =point3D;
                    //可视距离
                    m_VisibleViewDome.Distance = 200;
                    //开敞度显示模式
                    m_VisibleViewDome.DisplayStyle = ViewDome.DisplayMode.FACELINE;
                    //显示可视区域
                    m_VisibleViewDome.DomeType = ViewDome.ViewDomeType.VISIBLEDOME;
					//显示分析质量
                    m_VisibleViewDome.Quality = AnalysisQuality.Medium;                    
                  
                    //显示面的颜色
                    m_VisibleViewDome.ViewDomeColor =System.Drawing.Color.FromArgb(100, Color.Red);
                    m_VisibleViewDome.ViewDomeLineColor = m_lineFillColor;
                    bool isBuildSuccess = m_VisibleViewDome.Build();                   
                    double  m_viewDomeResult = m_VisibleViewDome.GetViewDomeRatio(ViewDome.ViewDomeType.VISIBLEDOME);
            }
            else if (e.Button == MouseButtons.Right)
            {               
                ResetDrawPointState();
            }
        }

10月 22, 2019 分类:  98次浏览 | 用户: supermap三维小小白 初出茅庐 (44 分)

1个回答

0 投票
您好,你需要把m_VisibleViewDome.GetViewDomeRatio(ViewDome.ViewDomeType.VISIBLEDOME)放在另外一个button里才行,不能放在一个事件里,关于怎么计算的,这是底层写好的,这边只提供接口支持
10月 22, 2019 用户: 邬袁凯 名扬四海 (2,432 分)
...