我怎样才能使它在查看器放大和缩小时不会调整 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
正如您首先看到的polylineTool
的lineWidth
不是您想要的,但是在设置了 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 线的大小?的主要内容,如果未能解决你的问题,请参考以下文章
Resize MKAnnotationView Image 当地图放大和缩小时?
react-native-maps :如何在放大和缩小时获取动态 latitudeDelta 和 longitudeDelta 值