我怎样才能使 Edit2D 线在查看器放大和缩小时不调整大小?

How can I make it so Edit2D lines do not resize when viewer is zoomed in and out?

长话短说:我想根据校准尺寸将 Edit2D 多段线工具的线宽设置为 6",并且无论相机变焦如何,它在查看器中都保持该尺寸。


我正在使用 edit2d 库来进行绘图。我需要能够为多段线工具设置线宽,并让它保持在该宽度,类似于标记在绘制时保持设定大小的方式。 edit2d 折线工具的默认功能是根据相机变化调整线的大小,因此它会根据缩放比例增长和收缩。

我尝试设置 edit2DTools.polylineTool.style.isScreenSpace = false; 有效,但是,尝试设置特定大小很困难,因为它最终是小于 1 的小数,而且我无法从校准、页面大小中找到相关性等,让我可以在不同型号上动态设置相同的尺寸。


我也在 E​​dit2D Snapper 的代码中找到了这个,但我无法弄清楚这里发生了什么,无法在折线工具上复制它。好像在做我想做的事

任何帮助或想法都将不胜感激!

这段代码似乎对我有用:

async function setLineWidth(viewer) {
  let mt = await viewer.loadExtension("Autodesk.Measure");
  if (!mt.sharedMeasureConfig.calibrationFactor) {
    console.log("Has not been calibrated yet");
    return;
  }

  let edit2d = viewer.getExtension('Autodesk.Edit2D');

  let pt1 = {x:0, y:0, z:0}, pt2 = {x:6, y:0, z:0};
  viewer.model.pageToModel(pt1, pt2, 0 /*viewport id*/, true /*reverse*/);
  let style = edit2d.defaultTools.polylineTool.style;
  style.lineWidth = (pt2.x - pt1.x) / mt.calibration.scaleFactor;
}

这是一个展示它的实际效果的视频:https://youtu.be/DIaKugvQdm4

首先可以看到polylineToollineWidth不是你想要的,但是设置好后6应该在图中,我可以把它设置成相同的宽度,一切都很好。

这是一个 zip 文件,其中 html 包括 JavaScript 代码和测试 PDFs 我使用了:https://github.com/adamenagy/Container/blob/master/Edit2dTest.zip