@thatopen/services 0.3.11 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/revit.d.ts +9 -0
- package/dist/cli/lib/revit-addin.d.ts +20 -0
- package/dist/cli.js +101 -0
- package/dist/cloud/LasToPotree.d.ts +59 -0
- package/dist/cloud/SplatToFq.d.ts +38 -0
- package/dist/cloud/index.d.ts +2 -0
- package/docs/builtin/paths.json +86 -86
- package/docs/cloud/GaussianSplatConverter.md +43 -0
- package/docs/cloud/PointCloudConverter.md +53 -0
- package/docs/revit-collab-quickstart.md +151 -0
- package/package.json +95 -95
- package/src/built-in/ClashesManager/example.ts +283 -283
- package/src/built-in/UIManager/src/clashes-panel/example.ts +160 -160
- package/src/built-in/UIManager/src/models-list/example.ts +122 -118
- package/src/cli/templates/app/package.json +33 -33
- package/src/cli/templates/app/src/setups/camera-tools.ts +0 -63
- package/src/cli/templates/app/src/setups/camera-views.ts +0 -201
- package/src/cli/templates/app/src/setups/card-header.ts +0 -35
- package/src/cli/templates/app/src/setups/clipper-tool.ts +0 -773
- package/src/cli/templates/app/src/setups/clipper.ts +0 -75
- package/src/cli/templates/app/src/setups/cloud-runner.ts +0 -13
- package/src/cli/templates/app/src/setups/exploded-view.ts +0 -246
- package/src/cli/templates/app/src/setups/helper-panel.ts +0 -88
- package/src/cli/templates/app/src/setups/hider.ts +0 -98
- package/src/cli/templates/app/src/setups/index.ts +0 -23
- package/src/cli/templates/app/src/setups/inspection.ts +0 -136
- package/src/cli/templates/app/src/setups/measurement-panel.ts +0 -188
- package/src/cli/templates/app/src/setups/measurement-tool.ts +0 -588
- package/src/cli/templates/app/src/setups/measurements.ts +0 -133
- package/src/cli/templates/app/src/setups/navigation-gizmo.ts +0 -316
- package/src/cli/templates/app/src/setups/plans-panel.ts +0 -619
- package/src/cli/templates/app/src/setups/right-sidebar.ts +0 -178
- package/src/cli/templates/app/src/setups/styles-panel.ts +0 -110
- package/src/cli/templates/app/src/setups/styles.ts +0 -375
- package/src/cli/templates/app/src/setups/tool-mode-manager.ts +0 -156
- package/src/cli/templates/app/src/setups/tool-mode.ts +0 -23
- package/src/cli/templates/app/src/setups/toolbar.ts +0 -229
- package/src/cli/templates/app/src/setups/ui-manager.ts +0 -27
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
import * as OBC from "@thatopen/components";
|
|
2
|
-
import * as BUI from "@thatopen/ui";
|
|
3
|
-
import type {
|
|
4
|
-
MeasurementTool,
|
|
5
|
-
MeasureMode,
|
|
6
|
-
SnapKind,
|
|
7
|
-
} from "./measurement-tool";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* MEASUREMENT panel — a docked side-panel (a layout alongside
|
|
11
|
-
* Explorer/Files/Graphics/Clipping) for length / area / angle measurements.
|
|
12
|
-
*
|
|
13
|
-
* Sections:
|
|
14
|
-
* - Measure — exclusive mode buttons (Off / Length / Area / Angle); pick one,
|
|
15
|
-
* then double-click surfaces in the viewport (Area: Enter to close).
|
|
16
|
-
* - Snapping — vertices / edges / faces toggles (precise picks).
|
|
17
|
-
* - Measurements — show/hide all, clear all, and a list of every measurement
|
|
18
|
-
* (type + value + units) with delete-per-row.
|
|
19
|
-
*
|
|
20
|
-
* Vanilla BUI, app chrome (native panel header, muted bands, 1px contrast-20
|
|
21
|
-
* hairlines, #3C3C41 scrollbar, library toggle switches + buttons). Factory
|
|
22
|
-
* returns the element WITHOUT self-mounting. (A simple row list is used for the
|
|
23
|
-
* measurements, matching files-panel / clipper-panel, so each row can carry a
|
|
24
|
-
* delete button.)
|
|
25
|
-
*/
|
|
26
|
-
const MODES: { mode: MeasureMode; label: string; icon: string }[] = [
|
|
27
|
-
{ mode: "none", label: "Off", icon: "mdi:cursor-default" },
|
|
28
|
-
{ mode: "length", label: "Length", icon: "mdi:ruler" },
|
|
29
|
-
{ mode: "area", label: "Area", icon: "mdi:vector-square" },
|
|
30
|
-
{ mode: "angle", label: "Angle", icon: "mdi:angle-acute" },
|
|
31
|
-
];
|
|
32
|
-
|
|
33
|
-
const SNAPS: { kind: SnapKind; label: string }[] = [
|
|
34
|
-
{ kind: "point", label: "Vertices" },
|
|
35
|
-
{ kind: "line", label: "Edges" },
|
|
36
|
-
{ kind: "face", label: "Faces" },
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
export const measurementPanel = (
|
|
40
|
-
_components: OBC.Components,
|
|
41
|
-
tool: MeasurementTool,
|
|
42
|
-
) => {
|
|
43
|
-
const [panel, update] = BUI.Component.create<BUI.Panel, { tick: number }>(
|
|
44
|
-
(state) => {
|
|
45
|
-
const refresh = () => update({ tick: state.tick + 1 });
|
|
46
|
-
|
|
47
|
-
const mode = tool.getMode();
|
|
48
|
-
const rows = tool.rows();
|
|
49
|
-
const snaps = tool.getSnaps();
|
|
50
|
-
const visible = tool.isVisible();
|
|
51
|
-
|
|
52
|
-
const modeButtons = MODES.map(
|
|
53
|
-
(m) => BUI.html`
|
|
54
|
-
<bim-button
|
|
55
|
-
class="m-mode"
|
|
56
|
-
label=${m.label}
|
|
57
|
-
icon=${m.icon}
|
|
58
|
-
?active=${mode === m.mode}
|
|
59
|
-
@click=${() => {
|
|
60
|
-
tool.setMode(m.mode);
|
|
61
|
-
refresh();
|
|
62
|
-
}}
|
|
63
|
-
></bim-button>
|
|
64
|
-
`,
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const snapRows = SNAPS.map(
|
|
68
|
-
(s) => BUI.html`
|
|
69
|
-
<div class="m-row">
|
|
70
|
-
<span class="m-k">${s.label}</span>
|
|
71
|
-
<span class="m-v">
|
|
72
|
-
<bim-checkbox class="m-toggle" toggle ?checked=${snaps[s.kind]}
|
|
73
|
-
@change=${(e: Event) => {
|
|
74
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
75
|
-
tool.setSnap(s.kind, !!(e.target as any).checked);
|
|
76
|
-
refresh();
|
|
77
|
-
}}></bim-checkbox>
|
|
78
|
-
</span>
|
|
79
|
-
</div>
|
|
80
|
-
`,
|
|
81
|
-
);
|
|
82
|
-
|
|
83
|
-
const measurementRows =
|
|
84
|
-
rows.length === 0
|
|
85
|
-
? BUI.html`<div class="m-empty">No measurements. Pick a mode above, then double-click surfaces.</div>`
|
|
86
|
-
: rows.map(
|
|
87
|
-
(r) => BUI.html`
|
|
88
|
-
<div class="m-row">
|
|
89
|
-
<span class="m-k m-type">${r.type}</span>
|
|
90
|
-
<span class="m-v">
|
|
91
|
-
<span class="m-val">${r.text}</span>
|
|
92
|
-
<bim-button class="m-del" icon="mdi:trash-can-outline"
|
|
93
|
-
@click=${() => {
|
|
94
|
-
r.remove();
|
|
95
|
-
refresh();
|
|
96
|
-
}}></bim-button>
|
|
97
|
-
</span>
|
|
98
|
-
</div>
|
|
99
|
-
`,
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
return BUI.html`
|
|
103
|
-
<bim-panel label="Measure" icon="mdi:ruler"
|
|
104
|
-
style="width: 100%; height: 100%; pointer-events: auto;">
|
|
105
|
-
<style>
|
|
106
|
-
.m-vp::-webkit-scrollbar { width: 0.4rem; height: 0.4rem; }
|
|
107
|
-
.m-vp::-webkit-scrollbar-thumb { border-radius: 0.25rem; background-color: var(--bim-scrollbar--c, #3C3C41); }
|
|
108
|
-
.m-vp::-webkit-scrollbar-track { background-color: var(--bim-scrollbar--bgc, var(--bim-ui_bg-contrast-10)); }
|
|
109
|
-
|
|
110
|
-
.m-band { box-sizing: border-box; padding: 0.4rem 0.4rem 0.4rem 1.1rem;
|
|
111
|
-
display: flex; align-items: center; gap: 0.4rem;
|
|
112
|
-
font-size: 0.76rem; font-weight: 500; letter-spacing: 0.01em;
|
|
113
|
-
color: var(--bim-ui_bg-contrast-70, #a7a7ab);
|
|
114
|
-
background: var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1));
|
|
115
|
-
border-top: 1px solid var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1));
|
|
116
|
-
border-bottom: 1px solid var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1)); }
|
|
117
|
-
.m-band-ico { flex: 0 0 auto; font-size: 0.9rem; color: var(--bim-ui_bg-contrast-70, #a7a7ab); }
|
|
118
|
-
.m-band:first-child { border-top: none; }
|
|
119
|
-
|
|
120
|
-
.m-modes { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem;
|
|
121
|
-
padding: 0.5rem 0.4rem 0.5rem 1.1rem; }
|
|
122
|
-
.m-modes bim-button { width: 100%; }
|
|
123
|
-
|
|
124
|
-
.m-row { box-sizing: border-box; min-height: 32px; display: flex;
|
|
125
|
-
align-items: center; justify-content: space-between; gap: 0.6rem;
|
|
126
|
-
padding: 0.35rem 0.4rem 0.35rem 1.1rem; font-size: 0.78rem;
|
|
127
|
-
color: var(--bim-ui_bg-contrast-100, #e3e3e3);
|
|
128
|
-
border-bottom: 1px solid var(--bim-ui_bg-contrast-20, rgba(255,255,255,0.1)); }
|
|
129
|
-
.m-k { opacity: 0.6; flex: 0 1 auto; min-width: 0; white-space: nowrap;
|
|
130
|
-
overflow: hidden; text-overflow: ellipsis; }
|
|
131
|
-
.m-type { opacity: 0.85; }
|
|
132
|
-
.m-v { flex: 1 1 auto; min-width: 0; display: flex; align-items: center;
|
|
133
|
-
justify-content: flex-end; gap: 0.5rem; }
|
|
134
|
-
.m-val { font-variant-numeric: tabular-nums; }
|
|
135
|
-
.m-row bim-checkbox.m-toggle { flex: 0 0 2rem; width: 2rem; }
|
|
136
|
-
.m-row bim-button.m-del { flex: 0 0 auto; --bim-button--bgc: transparent; }
|
|
137
|
-
|
|
138
|
-
.m-empty { padding: 0.6rem 0.4rem 0.6rem 1.1rem; opacity: 0.6;
|
|
139
|
-
font-size: 0.78rem; line-height: 1.3; white-space: normal; }
|
|
140
|
-
|
|
141
|
-
.m-actions { display: flex; flex-direction: column; gap: 0.4rem;
|
|
142
|
-
padding: 0.5rem 0.4rem 0.5rem 1.1rem; }
|
|
143
|
-
.m-actions bim-button { width: 100%; }
|
|
144
|
-
</style>
|
|
145
|
-
<div style="display: flex; flex-direction: column; height: 100%; width: 100%;">
|
|
146
|
-
<div style="flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; padding: 0 0.4rem 0.4rem 1.1rem;">
|
|
147
|
-
<div class="m-vp" style="flex: 1 1 auto; min-height: 0; overflow-y: auto;
|
|
148
|
-
margin-left: -1.1rem; margin-right: -0.4rem;">
|
|
149
|
-
|
|
150
|
-
<div class="m-modes">${modeButtons}</div>
|
|
151
|
-
|
|
152
|
-
<div class="m-band"><bim-icon class="m-band-ico" icon="mdi:magnet"></bim-icon>Snapping</div>
|
|
153
|
-
${snapRows}
|
|
154
|
-
|
|
155
|
-
<div class="m-band"><bim-icon class="m-band-ico" icon="mdi:format-list-bulleted"></bim-icon>Measurements</div>
|
|
156
|
-
<div class="m-row">
|
|
157
|
-
<span class="m-k">Show all</span>
|
|
158
|
-
<span class="m-v">
|
|
159
|
-
<bim-checkbox class="m-toggle" toggle ?checked=${visible}
|
|
160
|
-
@change=${(e: Event) => {
|
|
161
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
162
|
-
tool.setVisible(!!(e.target as any).checked);
|
|
163
|
-
refresh();
|
|
164
|
-
}}></bim-checkbox>
|
|
165
|
-
</span>
|
|
166
|
-
</div>
|
|
167
|
-
<div class="m-actions">
|
|
168
|
-
<bim-button label="Clear all" icon="mdi:trash-can-outline" ?disabled=${rows.length === 0}
|
|
169
|
-
@click=${() => {
|
|
170
|
-
tool.clearAll();
|
|
171
|
-
refresh();
|
|
172
|
-
}}></bim-button>
|
|
173
|
-
</div>
|
|
174
|
-
${measurementRows}
|
|
175
|
-
</div>
|
|
176
|
-
</div>
|
|
177
|
-
</div>
|
|
178
|
-
</bim-panel>
|
|
179
|
-
`;
|
|
180
|
-
},
|
|
181
|
-
{ tick: 0 },
|
|
182
|
-
);
|
|
183
|
-
|
|
184
|
-
tool.onChanged.add(() => update({ tick: 0 }));
|
|
185
|
-
tool.onModeChanged.add(() => update({ tick: 0 }));
|
|
186
|
-
|
|
187
|
-
return panel;
|
|
188
|
-
};
|