#viewer #forge
#просмотрщик #forge
Вопрос:
По какой-то причине я всегда получаю false для viewer.isLayerVisible (layerNode). Я следовал этому руководству https://forge.autodesk.com/blog/toggle-sheet-layer-visibility У меня есть обработчик событий на LAYER_VISIBILITY_CHANGED_EVENT, вот мой фрагмент кода в typescript:
viewer.addEventListener(Autodesk.Viewing.LAYER_VISIBILITY_CHANGED_EVENT, (e) => {
var root = viewer.model["myData"].layersRoot; //getLayersRoot() is not a function for some reason
var overlayLayer = viewer["getSelectedLayer"]();
if (viewer["layerRoot"] != undefined) {
var layerNode = root.children.filter((e) => { return e.name === overlayLayer })
var isLayerVisible = viewer.isLayerVisible(layerNode);
//show layer
if (isLayerVisible) {
viewer.impl.addOverlay("Edit2D", viewer["savedPoints"].overlayLayer)
}
//hide layer
else {
viewer.impl.removeOverlayScene("Edit2D")
}
}
});
После выключения некоторых слоев из диспетчера слоев я также получаю viewer.areAllVisible() как true .
Версия Forge viewer — 7.*
У вас есть какие-либо советы? Спасибо!
Ответ №1:
Я обнаружил, что вы можете получить доступ к видимым и видимым слоям из свойства indexToLayer viewer
var visibleLayers = Array.from(viewer.impl.layers.indexToLayer.filter(e => e != null amp;amp; e.visible));