Files
speckle-server/packages/frontend-2/components/global/icon/MeasurePointToPoint.vue
T
Alexandru Popovici 0ef0a13979 Pro Measurement Tools (#4452)
* feat(viewer-lib): WIP on area measurement

* feat(viewer-lib): WIP on area measurement. Basics are working. Needs more bling

* feat(viewer-lib): Implemented polygon triangulation for measured area

* chore(shared): Updated MeasurementType

* Add Area control to measure panel

* feat(viewer-lib): Real time updates of the fill polygon and area value

* feat(viewer-lib): Added pole of innacessibility as area label anchor using the polylabel libraryh

* feat(viewer-lib): Fixed fill polygon material

* feat(viewer-lib): Changed the surface normal indicator from the faulty disc to a outlined rectangle. Looks and works much better now

* fix(viewer-lib): Measurements get clipped by sections planes

* faet(viewer-lib): Measurements can now optionally define their own snapping method. Area measurement snaps to first point in screen space. Generic vertex snap still applies if enabled

* fix(viewer-lib): Forgot to project the measured point

* feat(viewer-lib): Double click auto-finishes the area measurmenet by instantly joining with the first point. Right clikc removes current area measurement point so you can 'undo'

* fix(viewer-lib: Fixed a stupid bug relatedto text because somebody thought that making it 'async' would be sooooo cool...

* fix(frontend): Prevent zoom on double click when using area measurement

* chore(viewer-lib): Refined and fomralized a bit now that the general idea of a measurement has got more complex

* chore(viewer-lib): Moved state switching a bit

* chore(viewer-lib): Replaced the old disc normal indicator with the new one and made it standard. Added an option to the gizmo's style that determines the pixels size of the normal indicator

* chore(viewer-lib): Documented the area measurement tool

* chore(viewer-lib): Some updates:
- Implemented proper bounds getter for area measurement
- Got rid of the static vector buffers in Measurement and replaced them with consts where needed
- Reduced the min click timing from 250ms to 150ms
- Other small adjustments

* feat(viewer-lib): Added the option to chain measurements

* chore(frontend-2): Added toggle for measurement chaining

* chore(viewer-lib): Perpendicular measurement chaining now align on the same line as requested

* feat(viewer-lib): Implemented point (coordinate) measurement:
- Added support for billboard offseting in NDC in the shader via vec2 offset uniform. Not a dream come true, but required mostly because of how troika works
- SpeckleText background now follows text anchoring
- Implemented new POINT measurement type

* chore(viewer-lib): Separated label position calculation. We now update only the label transform each frame, instead of updating the entire label redunantly

* chore(viewer-lib): Offsets are now constants. Removed redundant vector and matrix creation

* chore(frontend-2): Placeholder radio button for point measurement type. Fixed compile errors

* fix(viewer-lib): Fixes WEB-3105. Export all measurement types

* updated icons

* Update description

---------

Co-authored-by: andrewwallacespeckle <andrew@speckle.systems>
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-05-26 12:10:19 +03:00

75 lines
1.7 KiB
Vue

<template>
<svg
width="36"
height="36"
viewBox="0 0 36 36"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M3.5 25.97V5L12.5 12.86V33.5L3.5 25.97Z"
stroke="#C4C4C4"
stroke-linejoin="round"
/>
<path
d="M3.5 5L24.5 3.5"
stroke="#C4C4C4"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M3.5 26L24.5 24.5"
stroke="#C4C4C4"
stroke-linecap="round"
stroke-linejoin="round"
stroke-dasharray="2 2"
/>
<path
d="M12.5 33.5L33.5 32"
stroke="#C4C4C4"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M12.5 13.25L33.5 11.75"
stroke="#C4C4C4"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M24.5 3.5L33.5 11.35V32"
stroke="#C4C4C4"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M24.5 3.5V24.5"
stroke="#C4C4C4"
stroke-linecap="round"
stroke-linejoin="round"
stroke-dasharray="2 2"
/>
<path
d="M24.5 24.5L33.5 32"
stroke="#C4C4C4"
stroke-linecap="round"
stroke-linejoin="round"
stroke-dasharray="2 2"
/>
<path
d="M3.25 28.5C4.49264 28.5 5.5 27.4926 5.5 26.25C5.5 25.0074 4.49264 24 3.25 24C2.00736 24 1 25.0074 1 26.25C1 27.4926 2.00736 28.5 3.25 28.5Z"
fill="#136CFF"
/>
<path
d="M3.25 26.25L33.25 11.25"
stroke="#136CFF"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M33.25 13.5C34.4926 13.5 35.5 12.4926 35.5 11.25C35.5 10.0074 34.4926 9 33.25 9C32.0074 9 31 10.0074 31 11.25C31 12.4926 32.0074 13.5 33.25 13.5Z"
fill="#136CFF"
/>
</svg>
</template>