Когда 2D-чертеж считывает сохраненную разметку 2D, чертеж теряет цвет - PullRequest
0 голосов
/ 07 декабря 2018

2018 年 12 月 7 日 13: 48: 15

Я пытаюсь ввести данные в консоли: let a = NOP_VIEWER.getState ().

, а затем: NOP_VIEWER.restoreState (a).

результат тот же, поэтому я думаю, что вопрос может быть в функции getState.


Использовать расширение 'Autodesk.Viewing.MarkupsCore' для рисования 2d, прочитайте сохраненные наценкиДанные, а затем нарисовать потерянный цвет. Я пробовал более трех рисовать, но результаты были одинаковыми.И рисование не будет восстановлено в исходной форме, даже при выходе из разметки.

function loadMarkup() {
  model_viewer.loadExtension('Autodesk.Viewing.MarkupsCore').then((markupsExt) => {
    markup = markupsExt
    model_viewer.addEventListener(Autodesk.Viewing.Extensions.Markups.Core.EVENT_EDITMODE_CHANGED, function (event) {
      console.log(event)
    })
    markup.enterEditMode()
  })
}

function saveMarkup() {
  // 将刚刚产生的标注涂丫转换成字串
  const markupsPersist = markup.generateData()
  // 当前画面的状态 (zoom, direction, sections)
  const viewerStatePersist = model_viewer.getState()
  markup.leaveEditMode()
  markup.hide()
  console.log(markupsPersist, viewerStatePersist)
  Cookies.set('markupsPersist', markupsPersist)
  Cookies.set('viewerStatePersist', viewerStatePersist)
  // model_viewer.restoreState(viewerStatePersist)
  // setTimeout(() => {
  //   markup.show()
  //   markup.loadMarkups(markupsPersist, 'aaa')
  // }, 3000)
}
function loadMarkupHistory() {
  let svg = Cookies.get('markupsPersist')
  let view = Cookies.get('viewerStatePersist')
  model_viewer.restoreState(JSON.parse(view))
  setTimeout(() => {
    model_viewer.loadExtension('Autodesk.Viewing.MarkupsCore').then((markupsExt) => {
      markup = markupsExt
      markup.enterEditMode()
      markup.leaveEditMode()
      markup.loadMarkups(svg, 'aaa')
    })
  }, 500)
}

исходное изображение рисования: screenshot1

после loadMarkupHistory () image: screenshot2 , screenshot3

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

К сожалению, я не смог повторить проблему.Мне удалось сохранить и загрузить пометки с помощью вашего f2d, выполнив следующие шаги:

  • Нарисуйте пометки:

enter image description here

  • Сохранение и обновление:

enter image description here

  • Перезагрузка и все хорошо:

enter image description here

Обязательно используйте последнюю версию Viewer (v6 +) и повторите попытку:

<link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/style.min.css?v=v6.0" type="text/css">
<script language="JavaScript" src="https://developer.api.autodesk.com/modelderivative/v2/viewers/viewer3D.min.js?v=v6.0"></script>
0 голосов
/ 25 декабря 2018

цвет был скрыт, потому что у объекта viewerState есть свойство: isolated.установка изолированного в пустой массив решит проблему

0 голосов
/ 08 декабря 2018

Итак, используя этот пример веб-сайта (содержащего 2D-чертеж): https://wallabyway.github.io/offline-pdf-markup/

Я создаю некоторую разметку, используя кнопку «>», и перемещаю / увеличиваю камеру, чтобы создать новый вид..

Затем в консоли разработчика Chrome я набираю следующее, чтобы зафиксировать состояние просмотра:

_vsdata = NOP_VIEWER.getState();

, а затем записать строку вывода _markupdata в отдельную строку.с помощью текстового редактора:

markup = NOP_VIEWER.getExtension("Autodesk.Viewing.MarkupsCore"); _markupdata = markup.generateData();

Затем я закрываю браузер, снова открываю образец веб-страницы, снова открываю консоль разработчика и набираю ...

_vsdata = {"seedURN":"pdfs/qcad1.pdf","objectSet":[{"id":[],"isolated":["0"],"allLayers":true,"hidden":[],"idType":"lmv"}],"viewport":{"name":"","eye":[715.1987553432215,1157.394913771758,952.2144059810873],"target":[715.1987553432215,1157.395865986087,0.00007739370581180048],"up":[0,0.9999999999995001,0.0000010000000005565904],"worldUpVector":[0,0,1],"pivotPoint":[2516.6435313443767,530.4773949133468,0],"distanceToOrbit":952.2137790630921,"aspectRatio":1.9121887287024901,"projection":"orthographic","isOrthographic":true,"orthographicHeight":952.2143285878576},"renderOptions":{"environment":"Simple Grey","ambientOcclusion":{"enabled":false,"radius":12,"intensity":1},"toneMap":{"method":0,"exposure":0,"lightMultiplier":0},"appearance":{"ghostHidden":true,"ambientShadow":true,"antiAliasing":false,"progressiveDisplay":true,"swapBlackAndWhite":false,"displayLines":true,"displayPoints":false}}}

_markupdata = `<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" layer-order-id="markups-svg" style="position:absolute; left:0; top:0; transform:scale(1,-1); -ms-transform:scale(1,-1); -webkit-transform:scale(1,-1); -moz-transform:scale(1,-1); -o-transform:scale(1,-1); transformOrigin:0, 0; -ms-transformOrigin:0, 0; -webkit-transformOrigin:0, 0; -moz-transformOrigin:0, 0; -o-transformOrigin:0, 0; " width="1459" height="763" viewBox="93.25242169278158 715.903268001178 735.2677612304688 384.51632690468136" pointer-events="painted" cursor="crosshair"><metadata><markup_document xmlns="http://www.w3.org/1999/xhtml" data-model-version="4"></markup_document></metadata><g cursor="inherit" pointer-events="stroke"><metadata><markup_element xmlns="http://www.w3.org/1999/xhtml" stroke-width="2.621231979030199" stroke-color="#ff0000" stroke-opacity="1" fill-color="#ff0000" fill-opacity="0" type="rectangle" position="710.4914295972688 1042.3945255173116" size="277.6138818125107 167.36150603104852" rotation="0"></markup_element></metadata><path id="markup" d="M -137.49632491674026 -82.37013702600916 l 274.9926498334805 0 l 0 164.74027405201832 l -274.9926498334805 0 z" stroke-width="2.621231979030199" stroke="rgba(255,0,0,1)" fill="none" transform="translate( 710.4914295972688 , 1042.3945255173116 ) rotate( 0 )"/></g><g cursor="inherit" pointer-events="stroke"><metadata><markup_element xmlns="http://www.w3.org/1999/xhtml" stroke-width="2.621231979030199" stroke-color="#00ff00" stroke-opacity="1" fill-color="#ff0000" fill-opacity="0" type="rectangle" position="605.2689024399756 809.3865951844264" size="223.75523371235658 167.81643100820293" rotation="0"></markup_element></metadata><path id="markup" d="M -110.5670008666632 -82.59759951458636 l 221.1340017333264 0 l 0 165.19519902917273 l -221.1340017333264 0 z" stroke-width="2.621231979030199" stroke="rgba(0,255,0,1)" fill="none" transform="translate( 605.2689024399756 , 809.3865951844264 ) rotate( 0 )"/></g></svg>`

Теперь я восстанавливаю свое состояние просмотра:

NOP_VIEWER.restoreState(_vsdata);

Теперь я восстанавливаю свою разметку:

markup = NOP_VIEWER.getExtension("Autodesk.Viewing.MarkupsCore");
markup.enterEditMode(); markup.leaveEditMode();
markup.loadMarkups(_markupdata, 'aaa')

В конце вы должны получить ту же камеруПозиция просмотра и та же разметка (с цветами разметки), что и изначально создаваемая, как на этом скриншоте.

Примечание: два красных и зеленых цвета разметки и увеличенное / перемещенное положение камеры.

Это работает для вас?

markuprestoreandviewstate

...