【问题标题】:How can I make it so Edit2D lines do not resize when viewer is zoomed in and out?我怎样才能使它在查看器放大和缩小时不会调整 Edit2D 线的大小?
【发布时间】:2021-12-21 12:23:03
【问题描述】:

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


我正在使用 edit2d 库来允许绘图。我需要能够为折线工具设置线宽,并使其保持在该宽度,类似于标记在绘制时保持设定大小的方式。 edit2d 折线工具的默认功能是在相机更改时调整线的大小,因此它会根据缩放而增长和缩小。

我尝试设置 edit2DTools.polylineTool.style.isScreenSpace = false; 有效,但是,尝试设置特定大小很困难,因为它最终是小于 1 的小数,并且我找不到校准、页面大小等与允许我在不同的模型上动态设置相同的大小。


我还在 Edit2D Snapper 的代码中发现了这一点,但我无法弄清楚这里发生了什么以在折线工具上复制它。它似乎在做我想做的事。

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

【问题讨论】:

    标签: autodesk-forge autodesk-viewer


    【解决方案1】:

    这段代码似乎对我有用:

    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 代码和我使用的测试 PDFshttps://github.com/adamenagy/Container/blob/master/Edit2dTest.zip

    【讨论】:

    • 这与 isScreenSpace = false 完美配合。谢谢!
    • 补充一点,当我使用不固定的线条样式(比如虚线)时,它是错误的。间距已关闭,无法正常工作。有没有办法解决这个问题? See this example picture
    • 我必须对我提供的代码进行哪些更改才能达到此结果?
    • 感谢您的回复!要设置线条样式,您只需更改工具上的此属性:edit2dExtension.defaultTools.polylineTool.style.lineStyle = 4; 在我将isScreenSpace 切换为false 之前,它一直在工作以具有正确的点线点线样式,这对于上述解决方案是必要的我相信。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多