Skip to content

Commit dbf8bfd

Browse files
authored
Update MeasureTool to fallback to default formattings when KoQs not found (#9043)
1 parent 5442460 commit dbf8bfd

3 files changed

Lines changed: 32 additions & 3 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"changes": [
3+
{
4+
"packageName": "@itwin/core-frontend",
5+
"comment": "Update measure tool to fallback to QuantityType",
6+
"type": "none"
7+
}
8+
],
9+
"packageName": "@itwin/core-frontend"
10+
}

core/frontend/src/tools/MeasureTool.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { BeButtonEvent, BeModifierKeys, CoreTools, EventHandled, InputSource } f
2424
import { ToolAssistance, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceSection } from "./ToolAssistance";
2525
import { GraphicType } from "../common/render/GraphicType";
2626
import { FormatterSpec } from "@itwin/core-quantity";
27+
import { QuantityType } from "../quantity-formatting/QuantityFormatter";
2728

2829
function translateBold(key: string) {
2930
return `<b>${CoreTools.translate(`Measure.Labels.${key}`)}:</b> `;
@@ -32,14 +33,32 @@ function translateBold(key: string) {
3233
async function getFormatterSpecByKoQAndPersistenceUnit(koq: string, persistenceUnitName: string): Promise<FormatterSpec | undefined> {
3334
const formatProps = await IModelApp.formatsProvider.getFormat(koq);
3435
if (undefined === formatProps)
35-
return undefined;
36+
return getFormatterSpecByQuantityType(koq);
37+
3638
return IModelApp.quantityFormatter.createFormatterSpec({
3739
persistenceUnitName,
3840
formatProps,
3941
formatName: koq
4042
});
4143
}
4244

45+
function getFormatterSpecByQuantityType(koq: string): FormatterSpec | undefined {
46+
switch (koq) {
47+
case "DefaultToolsUnits.LENGTH":
48+
return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.LengthEngineering);
49+
case "DefaultToolsUnits.ANGLE":
50+
return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Angle);
51+
case "DefaultToolsUnits.AREA":
52+
return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Area);
53+
case "DefaultToolsUnits.VOLUME":
54+
return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Volume);
55+
case "DefaultToolsUnits.LENGTH_COORDINATE":
56+
return IModelApp.quantityFormatter.findFormatterSpecByQuantityType(QuantityType.Coordinate);
57+
default:
58+
return undefined;
59+
}
60+
}
61+
4362
/** @internal */
4463
class MeasureLabel implements CanvasDecoration {
4564
public worldLocation = new Point3d();

test-apps/display-test-app/src/frontend/App.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ import {
1515
} from "@itwin/core-common";
1616
import { EditTools } from "@itwin/editor-frontend";
1717
import {
18-
AccuDrawHintBuilder, AccuDrawViewportUI, AccuSnap, IModelApp, IModelConnection, IpcApp, LocalhostIpcApp, LocalHostIpcAppOpts, RenderSystem, SelectionTool, SnapMode,
19-
TileAdmin, Tool, ToolAdmin,
18+
AccuDrawHintBuilder, AccuDrawViewportUI, AccuSnap, IModelApp, IModelConnection, IpcApp, LocalhostIpcApp, LocalHostIpcAppOpts, RenderSystem, SelectionTool,
19+
SnapMode, TileAdmin, Tool, ToolAdmin,
2020
ViewManager,
2121
} from "@itwin/core-frontend";
2222
import { MobileApp, MobileAppOpts } from "@itwin/core-mobile/lib/cjs/MobileFrontend";

0 commit comments

Comments
 (0)