SView Help Center
English (US)

自定义视图

Author: sviewngts Last Updated: 2026-09-07 17:56

接口列表

接口名称 说明
视图列表 获取模型当前现有的视图,包括模型内视图和在线视图
创建 创建自定义视图
删除 删除自定义视图
切换 切换至视图保存的场景
重命名 重命名自定义视图
设置默认视图 将视图设置为默认视图
序列化 将视图序列化为Json格式
反序列化 将Json格式视图数据反序列化为视图对象

视图列表

//1、执行获取视图列表命令
let array = new Map();
array.set("fullClassName", "SView.Commands.ShowViewListCommand");//命令对应的类的相关信息
//设置命令参数
let inputParas = new SView.CommandParameters();
let inputPara = new SView.CommandParameter();
//直接加载视图列表还是仅切换模型视图,loadFlag为false,获取视图列表
inputPara.name = "loadFlag";
inputPara.value = false;
inputParas.add(inputPara);
array.set("commandParameters", inputParas);
getCommandsManager().execute("ShowViewList", array);
//2、获取视图列表
let modelViews = shapes.getShapes(M3D.Shapes.ShapeType.SHAPE_MODELVIEW);

创建视图

    创建视图

let array = new Map();
array.set("fullClassName", "SView.Commands.CreateViewCommand");//命令对应的类的相关信息
commandManager.execute("CreateView");

    获取创建后的视图对象

let createViewCmd = commandManager.getCommand("CreateView");
let currentView = createViewCmd.modelViewAction.modelView;

删除视图

let id = currentView.getId() ;
let viewServerId = currentView.getProperty("serverId")+"";
let array = new Map();
//配置文件中已填充情况下fullClassName参数可省略
array.set("fullClassName", "SView.Commands.DeleteViewCommand");
//填充视图信息
let inputParas = new SView.CommandParameters();
let inputPara = new SView.CommandParameter();
inputPara.name = "viewId";
inputPara.value = id;
inputParas.add(inputPara);
inputPara = new SView.CommandParameter();
inputPara.name = "viewServerId";
inputPara.value = viewServerId;
inputParas.add(inputPara);
array.set("commandParameters", inputParas);
commandManager.execute("DeleteView", array);

切换视图

let array = new Map();
array.set("fullClassName", "SView.Commands.ChangeViewCommand");//命令对应的类的相关信息
let inputParas = new SView.CommandParameters();
let inputPara = new SView.CommandParameter()
inputPara.name = "modelViewId";
inputPara.value = modelViewId;
inputParas.add(inputPara);
inputPara = new SView.CommandParameter()
inputPara.name = "loadFlag";
inputPara.value = false;
inputParas.add(inputPara);
inputPara = new SView.CommandParameter()
inputPara.name = "isEditMode";
inputPara.value = isEditMode || false;
inputParas.add(inputPara);
array.set("commandParameters", inputParas);
commandManager.execute("ChangeView",array);

重命名视图

let targetModelView = *** ;
let id = targetModelView.getId();
let viewServerId = targetModelView.getProperty("serverId")+“”;
let viewName = targetModelView.getName();
let array = new Map();
array.set("fullClassName", "SView.Commands.RenameViewCommand");//命令对应的类的相关信息
let inputParas = new SView.CommandParameters();
let inputPara = new SView.CommandParameter();
inputPara.name = "viewId";
inputPara.value = id;
inputParas.add(inputPara);
inputPara = new SView.CommandParameter();
inputPara.name = "viewServerId";
inputPara.value = viewServerId;
inputParas.add(inputPara);
inputPara = new SView.CommandParameter();
inputPara.name = "viewName";
inputPara.value = viewName;
inputParas.add(inputPara);
array.set("commandParameters", inputParas);
commandManager.execute("RenameView", array);

设置默认视图

let array = new Map();
array.set("fullClassName", "SView.Commands.SetDefaultViewCommand");//命令对应的类的相关信息
let inputParas = new SView.CommandParameters();
let inputPara = new SView.CommandParameter();
inputPara.name = "viewId";
inputPara.value = id;
inputParas.add(inputPara);
inputPara = new SView.CommandParameter();
inputPara.name = "viewServerId";
inputPara.value = currentView.getProperty("serverId")+“”;
inputParas.add(inputPara);
inputPara = new SView.CommandParameter();
inputPara.name = "isActivated";
inputPara.value = isActivated;
inputParas.add(inputPara);
array.set("commandParameters", inputParas);
frame.getCommandsManager().execute("SetDefaultView", array);

视图序列化

//将视图信息以及场景信息序列化为json格式
let contentStr = M3D.Reader.ModelViewFactory.toJson(modelView);
//将视图中的实例数据以及附加数据序列化为json格式
let subContentStr = M3D.Reader.ModelViewFactory.toServerJson(modelView,scene);

视图反序列化

//将json数据反序列化为视图对象
let modelView = M3D.Reader.ModelViewFactory.fromJsonByServer(contentStr,subContentStr,scene);
//将视图加入到场景中
shapes.addShape(modelView);