插件客户端模拟挖方9D代码

0 投票
请超图的老师们看一下代码思路是否正确,进行插件客户端模拟挖坑

var pt = new SuperMap.Pixel(e.get_clientX(), e.get_clientY());
                this._point = this._sceneControl.pixelToGlobe(pt, SuperMap.Web.Realspace.PixelToGlobeMode.TerrainAndModel);

                this._points.add(new SuperMap.Web.Core.Point3D(this._point.x, this._point.y, (this._point.z + 0.05)));

 var layer3Ds_count = scene.get_layer3Ds().get_count();
            var layer3D = scene.get_layer3Ds().get_item(1);
            layer3D.set_isExcavation(true);
            //设置地下深度等信息
            underground = scene.get_underground();
            underground.set_isVisible(true);
            underground.set_depth(500);
            //设置地表透明度信息,值域范围在0-1
            globalImage = scene.get_globalImage();
            globalImage.set_transparency(0);

            var region3D = new SuperMap.Web.Core.GeoRegion3D();
            region3D.addPart(this._points);

            array = "";
            globalImage.clearExcavationRegions();
            excavationRegionValue = 0;
            var style3d = new SuperMap.Web.Core.Style3D();
            style3d.set_altitudeMode(1);
            //style3d.set_bottomAltitude(100);
            style3d.set_extendHeight(-3);
            //style3d.set_lineColor(new SuperMap.Web.Core.Color(85,107,47, 0));
            var topurl = getSuperMapServerUrl() + "/iserver/excavationregion_top.jpg";
            var sideurl = getSuperMapServerUrl() + "/iserver/excavationregion_side.jpg";
            style3d.set_sideTextureFiles([sideurl]);
            style3d.set_topTextureFile(topurl);
            style3d.set_tilingU(5);
            style3d.set_tilingV(1);
            style3d.set_altitudeMode(3);
            //var trackingLayer = scene.get_trackingLayer3D();
            //trackingLayer.set_isVisible(true);

            region3D._innerGeometry.style3D = style3d._innerStyle3D;
            //region3D._innerStyle3D = style3d._innerStyle3D;
            globalImage.addExcavationRegion(region3D, excavationRegionValue++);
6月 10 分类:  70次浏览 | 用户: SuperMap 初出茅庐 (56 分)

1个回答

0 投票
您好,思路没有问题,总之就是获取多个点然后根据复数点构geoRegion3D。

如果您的代码没有正确返回结果,个人建议,使用console.log()设置断点,确认是哪里出的问题。

另外这周晚些时候我也会出个基于9D插件客户端的填挖方demo。
6月 10 用户: 张阳名 登峰造极 (5,347 分)

globalImage.addExcavationRegion(region3D, excavationRegionValue++); 返回undfined 

第一,检查挖方区域是否存在地形数据,还是在地形范围之外;第二,设置文本型的tag

修改文本型后,能挖,但是地形没挖开,地形osgb

var layer3D = scene.get_layer3Ds().get_item(1);
            layer3D.set_isExcavation(true);

设置参与开挖了。

那我先确认下哈,目前是地面被挖开了,但是osgb没有被挖开,对吗?您说的地形osgb,是倾斜生成的osgb三维切片缓存,对吗?
对,地面挖开了。我们是3dmax 导入到桌面中,然后  场景生成osgb 缓存。
3dmax精模不支持开挖,开挖仅针对倾斜摄影生成的osgb缓存。

精模的话,建议通过id显隐的方式,将范围内的模型隐藏掉。

相关流程:桌面获取二维面并发布,然后做空间查询,根据查询返回的id进行显隐。

8C 里面可以。9D 不支持了?下面是以前8C挖的

...