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

Posted

技术标签:

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

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


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

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


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

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

【问题讨论】:

【参考方案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 代码和我使用的测试 PDFs: https://github.com/adamenagy/Container/blob/master/Edit2dTest.zip

【讨论】:

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

以上是关于我怎样才能使它在查看器放大和缩小时不会调整 Edit2D 线的大小?的主要内容,如果未能解决你的问题,请参考以下文章

放大和缩小时的Mapkit注释类型?

Resize MKAnnotationView Image 当地图放大和缩小时?

缩放动画在放大和缩小时打破边界半径

在放大和缩小时在imageview上移动对象

在浏览器上执行放大和缩小时工具提示未正确显示

react-native-maps :如何在放大和缩小时获取动态 latitudeDelta 和 longitudeDelta 值