首页 / 浏览问题 / 三维GIS / 问题详情
三维开发,加载场景代码不能通过编译
11EXP 2018年04月08日

 先非常谢谢社区工作人员能够及时认真的回答我们初学者在社区中的提问,谢谢你们。

我的这段代码目的是加载指定路径下工作空间的三维场景,由于对场景的理解还不到位,我用supermap打开后看到我文件中的场景名,如图1,据此我在代码里写了加载场景的语句,代码里已经注释,但由于这句话编译器总是不能成功执行程序,如果我删去这句话,我的程序可以成功运行,但看不到我所建立的三维模型场景(图2),只有空的地球球面,我想在运行程序中看到我模型场景,求大神指教。

                             图1                                                                                图2

private SceneControl myscenecl;
private Workspace mywokspace;

       public  Form1()
        {
            InitializeComponent();
            InitSkinGallery();
            SuperMap.Data.Environment.IsSceneAntialias = true;
            SuperMap.Data.Environment.SceneAntialiasValue = 4;

            WorkspaceConnectionInfo info = new WorkspaceConnectionInfo(@"C:\Users\K550JK\Desktop\超图毕设\毕业设计\test5\data\BJFUcj.smwu");
            mywokspace = new Workspace();         
            mywokspace.Open(info);
            
            myscenecl =new SceneControl ();           
            myscenecl.Dock =DockStyle .Fill ;
            splitContainerControl.Panel2.Controls.Add(myscenecl); 
            myscenecl.Scene.Workspace = mywokspace;
            myscenecl.Scene.Open("BJFU");//这句是想要打开工作空间中的场景,但是编译不通过,不知道这样写是否正确

            myscenecl.Action = Action3D.Pan;
            myscenecl.Scene.Refresh();

            Camera camera = myscenecl.Scene.Camera;
            camera .Altitude =26;
            camera.Latitude = 36;
            camera.Longitude = 109;
            camera.Tilt = 50;
            myscenecl.Scene.Fly(camera,1);
        }

1个回答

您好,看代码应该没什么问题,不妨你调试看看工作空间是否成功打开了,查看返回的布尔值是true还是false
5,985EXP 2018年04月09日
false

试了,是true,我的场景名是否有问题,这个数据是我自己从skp转出的dae,然后在supermap里加载的模型数据,场景名我重命名了,代码里我写的是用supermap8c桌面端打开后显示的场景名。

检查一下打开后的Workspace.Scenes .count是否为0,是的话,说明打开的工作空间哪儿出了问题,否的话,再查看打开的工作空间中所包含的场景名称是什么。
...