E4 从不活动的视角关闭一个部分
E4 close a part from an innactive Perspective
我有一个具有两个视角的 e4 应用程序:
- 操作
- Configuration -> 包含(除其他外)配置已打开的零件堆栈。每个配置在一个部分。
加载新模型时,将关闭所有配置部分。如果在配置透视图处于活动状态时加载新模型,这会很好地工作。
但是,如果我在 Configuration 透视图中打开一些配置。切换到 Operations 透视图并加载新模型。
我在日志中看到调用了关闭部件的代码,一切似乎都很好。但是,当我切换回配置透视图时,部件仍然可见并处于打开状态。
有人能告诉我如何确保零件靠近,而不管哪个是活动视角吗?
我找到了 "workaround" 来解决我的问题。
我抛出了一个事件来检测模型加载,并将其用于 "close"/隐藏部件:
@Inject @Optional
void modelLoadedHandler(@UIEventTopic(STUConstants.UI_TOPIC_CONFIG_LOADED) Object nothing) {
viewer.setInput(sleConfigService);
//Close open config parts
MPartStack stack = (MPartStack) modelService
.find(STUConstants.PART_STACK_ID_CONFIG_VIEW,
application);
List<MStackElement> parts = new ArrayList<>(stack.getChildren());
MPart mpart;
for (MStackElement element : parts) {
mpart = (MPart) element;
log.error("Removing part {} visible {}", mpart.getElementId(), mpart.isVisible());
partService.hidePart(mpart, true);
}
// Adding this make it work regardless of which perspective is
// active.
stack.getChildren().clear();
}
添加 stack.getChildren().clear();
成功了。我不确定这是否是处理此问题的正确方法,因为我希望 PartStack
应该在我删除部分时自动清空。
我有一个具有两个视角的 e4 应用程序:
- 操作
- Configuration -> 包含(除其他外)配置已打开的零件堆栈。每个配置在一个部分。
加载新模型时,将关闭所有配置部分。如果在配置透视图处于活动状态时加载新模型,这会很好地工作。
但是,如果我在 Configuration 透视图中打开一些配置。切换到 Operations 透视图并加载新模型。
我在日志中看到调用了关闭部件的代码,一切似乎都很好。但是,当我切换回配置透视图时,部件仍然可见并处于打开状态。
有人能告诉我如何确保零件靠近,而不管哪个是活动视角吗?
我找到了 "workaround" 来解决我的问题。
我抛出了一个事件来检测模型加载,并将其用于 "close"/隐藏部件:
@Inject @Optional
void modelLoadedHandler(@UIEventTopic(STUConstants.UI_TOPIC_CONFIG_LOADED) Object nothing) {
viewer.setInput(sleConfigService);
//Close open config parts
MPartStack stack = (MPartStack) modelService
.find(STUConstants.PART_STACK_ID_CONFIG_VIEW,
application);
List<MStackElement> parts = new ArrayList<>(stack.getChildren());
MPart mpart;
for (MStackElement element : parts) {
mpart = (MPart) element;
log.error("Removing part {} visible {}", mpart.getElementId(), mpart.isVisible());
partService.hidePart(mpart, true);
}
// Adding this make it work regardless of which perspective is
// active.
stack.getChildren().clear();
}
添加 stack.getChildren().clear();
成功了。我不确定这是否是处理此问题的正确方法,因为我希望 PartStack
应该在我删除部分时自动清空。