复位功能
复位按钮点击事件
复位按钮点击事件,用户点击复位按钮时触发。
//复位按钮点击事件
//buttonClickFunc为全局方法
buttonClickFunc('resetButton', MainBottomMenu);
复位命令
基本复位功能仅需执行复位命令即可commandManager.execute("Restore");,复位命令中根据默认显示模式配置决定是切换至默认视图还是执行复位操作,复位命令中,在执行之前还需要执行一些其他操作。
1.停止动画播放:
//停止动画播放
viewer.getAnimationPlayer().stopPlayer();
//停止动画音频
M3D.Animation.SoundPlayer.instance().pause();
2.退出持续旋转:
scene.getCurrentViewPort().getInput().getWorkingInputHandler().reset();
3.重置爆炸:
let explosiveCommand = commandManager.getCommand(SView.Commands.CommandNames.EXPLOSIONCOMMAND);
if (explosiveCommand) {
explosiveCommand.reset();
}
复位场景
复位场景包括复位模型、复位视口、清空选中、隐藏剖切、复位拖拽器等逻辑,可以执行如下代码:
scene.restoreView();
复位后若需要复位其他附加数据可参考如下代码:
//复位批注
let annotations = shapes.getShapes(M3D.Shapes.ShapeType.ANNOTATION_NOTE);
for (let value of annotations) {
if (value) {
value.setVisible(value.isVisible(true));
}
}
//复位手势批注
let GestureNotes = shapes.getShapes(M3D.Shapes.ShapeType.THREED_GESTURE_NOTE);
for (let value of GestureNotes) {
if (value) {
value.setVisible(value.isVisible(true));
}
}
//复位测量
let measures = shapes.getShapes(M3D.Shapes.ShapeType.MEASURE_BASE);
for (let value of measures) {
if (value) {
value.setVisible(value.isVisible(true));
}
}
//复位pmi
let pmis = shapes.getShapes(M3D.Shapes.ShapeType.PMI);
let isShow = M3D.Config.ViewPortParameters.getInstance().getBoolParameter(M3D.Config.isShowPMIs);
if (isShow) {
for (let value of pmis) {
value.setVisible(value.isVisible(true));
}
} else {
for (let value of pmis) {
value.setVisible(false);
}
}
//复位看板
let modelBoards = shapes.getShapes(M3D.Shapes.ShapeType.MODELBOARD);
for (let value of modelBoards) {
if (value) {
value.setVisible(value.isVisible(true));
}
}
//复位基本几何点、线、折线
let points = shapes.getShapes(M3D.Shapes.ShapeType.POINT);
for (let value of points) {
if (value) {
value.setVisible(value.isVisible(true));
}
}
let lines = shapes.getShapes(M3D.Shapes.ShapeType.LINE);
for (let value of lines) {
if (value) {
value.setVisible(value.isVisible(true));
}
}
let polylines = shapes.getShapes(M3D.Shapes.ShapeType.POLYLINE);
for (let value of polylines) {
if (value) {
value.setVisible(value.isVisible(true));
}
}
复位至默认视图
切换默认视图需要先找到默认视图、再执行切换视图动作。可参考如下代码:
let defaultModelView;
let modelViewArray = scene.getShapes().getShapes(M3D.Shapes.ShapeType.SHAPE_MODELVIEW);
if (modelViewArray.length > 0) {
for (let modelview of modelViewArray) {
if (modelview.getProperty("isServerView") === "1") {//在线视图
var isInitView = modelview.getIsInitView();//是否是默认视图
if (isInitView) {
//在线视图有默认的,则设置默认视图,模型视图不再判断
defaultModelView = modelview;
}
} else {//模型视图
if (!defaultModelView || defaultModelView.getProperty("isServerView") === "0") {
//如果在线视图已经存在默认视图,则取消模型视图的默认视图
var isInitView = modelview.getIsInitView();//是否是默认视图
if (isInitView) {//模型视图有默认的,则设置默认视图id
defaultModelView = modelview;
}
}
}
}
}
if (defaultModelView) {//存在默认视图,则切换默认视图
let showModelViewAction = new SView.Actions.ShowModelViewAction();
showModelViewAction.setScene(scene);
showModelViewAction.setLoadFlag(false);
showModelViewAction.setModelViewObjID(defaultModelView.getObjectId());
showModelViewAction.execute();
}