es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El marcado personalizado de Autodesk Forge Viewer no se restaura en el visor.

Creé una marcación personalizada siguiendo el ejemplo:
https://forge.autodesk.com/blog/implementing-custom-markups

La marcación se crea, resalta y edita. Guardamos y enviamos información sobre la marcación del documento al servidor. Cuando abres un documento, la marcación nativa se restaura perfectamente: se edita y resalta. Pero hay un problema con la marcación personalizada: se muestra en el documento, pero no se puede editar. No son marcaciones para el visor. Me parece que esto se debe a que el visor no conoce el tipo de marcación personalizada (en el ejemplo, this.type = ‘smiley’;).

¿Cómo se puede solucionar esto? ¡Gracias!

Restauramos la marcación de esta manera:

forgeRef.viewer.loadExtension(‘Autodesk.Viewing.MarkupsCore’).then((m: any) => {
setMarkup(m)
const currentMarkup = allMarkupElements.find(item => item.page === activePage)
if (currentMarkup) {
m.show()
m.loadMarkups(currentMarkup.data, ‘Layer1’)
m.viewer.restoreState(currentMarkup.viewerState, undefined, true)
if (!m.enterEditMode(‘Layer1’)) {
console.error(‘enter edit mode returns false’) // eslint-disable-line
}
} else if (!m.enterEditMode()) {
console.error(‘enter edit mode returns false’) // eslint-disable-line
}
m.allowNavigation(true)
})

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar relacionado con el hecho de que el visor no reconoce el tipo de marcado personalizado que se está utilizando (en este caso, “smiley”). Una posible solución podría ser registrar el tipo de marcado personalizado en el visor para asegurarse de que se pueda reconocer y manejar correctamente.

    Para hacer esto, puedes utilizar la API Autodesk.Viewing.Extensions.Markups.Core.MarkupManager para registrar tu tipo de marcado personalizado. Aquí tienes un ejemplo:

    const markupManager = forgeRef.viewer.getExtension("Autodesk.Viewing.MarkupsCore").markupManager;
    markupManager.registerType("smiley", (markupData, layer) => {
      // Define el comportamiento de tu tipo de marcado personalizado aquí
    });
    

    En el código anterior, estamos utilizando el método registerType para registrar un nuevo tipo de marcado llamado “smiley” y proporcionando una función que define su comportamiento.

    Una vez que hayas registrado tu tipo de marcado personalizado, intenta cargar el documento nuevamente y verifica si ahora puedes editar tus marcados personalizados. Si aún tienes problemas, es posible que necesites realizar una depuración más detallada para determinar la causa del problema.

Comments are closed.