Есть ли способ показать разметку в средстве просмотра вне режима редактирования?

#autodesk-forge #autodesk-viewer

Вопрос:

Я ищу способ отображения накруток, когда они не находятся в режиме редактирования. Я хочу иметь возможность рисовать накладки в окне просмотра, в то же время имея возможность использовать edit2D. Каждый раз, когда я звоню leaveEditMode() в расширение пометок, пометки исчезают. Если бы был просто способ, чтобы они всегда отображались, даже если они не находятся в режиме редактирования, это сделало бы свое дело. Я видел кое-что о режиме просмотра, но enterViewMode (), должно быть, устарел, так как я не могу его найти.

Другим вариантом было бы оставить режим редактирования включенным в расширении разметки, а также одновременно использовать инструменты edit2D, изменив, какой слой/холст для рисования находится сверху? Хотя я понятия не имею, возможно ли это и как это сделать.

Любые идеи были бы полезны!

Комментарии:

1. Это звучит не столько как вопрос о программировании, сколько как «как использовать autodesk forge»? Вы спрашивали, где, по словам autodesk, можно найти поддержку сообщества?

2. Это их основная поддержка сообщества. Кроме того, я пытаюсь необычно вести себя с расширениями зрителя (что обычно поощряется ими) и спрашиваю, какие возможности существуют у кого-то, кто знает внутреннюю работу своего зрителя (команда forge).

3. такая странная вещь для приложения: «пожалуйста, спросите о stackoverflow», но эй, если это то, что они говорят, надеюсь, они действительно смотрят на свои собственные теги.

4. Я согласен, ха-ха. Но это на 100% то, что они делают. Они довольно хорошо отвечают, хотя это круто.

Ответ №1:

Ладно, я придумал способ, я не уверен, каковы будут последствия выкупа, но, похоже, он работает. Вот отредактированный фрагмент кода, который я быстро собрал для тестирования, и, похоже, он работает. В основном я делаю противоположное тому, что enterEditMode() и leaveEditMode() так делаю. В основном markupsExtension.editModeSvgLayerNode содержит данные svg для всех наценок. Когда leaveEditMode() вызывается, он очищается markupsExtension.svg . Поэтому я просто добавляю его обратно после того, как он вызван вручную. Я также очищаю его перед повторным входом, потому что он делает это сам по себе, и это может помешать.

 if (buttonName === 'markup') {
    let markupsExtension = this.viewer.getExtension('Autodesk.Viewing.MarkupsCore');
    if (this.selectedButton === buttonName) {
        // Exit markups
        markupsExtension.leaveEditMode();

        // Shows the markup after leaving
        if (markupsExtension.editModeSvgLayerNode.svg) { 
            markupsExtension.svg.appendChild(markupsExtension.editModeSvgLayerNode.svg);
        }
    }
    else {
        this.selectedButton = buttonName;

        // Remove the svg set we added so it can redraw it in "enterEditMode()"
        if (markupsExtension.editModeSvgLayerNode amp;amp; markupsExtension.editModeSvgLayerNode.svg.parentNode) {
            markupsExtension.svg.removeChild(markupsExtension.editModeSvgLayerNode.svg);
        }
        markupsExtension.enterEditMode();
    }
}