@thatopen/components 3.4.0 → 3.4.2
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/README.md +85 -81
- package/dist/index.cjs +1254 -61805
- package/dist/index.d.ts +339 -563
- package/dist/index.min.cjs +2 -17
- package/dist/index.min.mjs +2 -17
- package/dist/index.mjs +1148 -61700
- package/package.json +60 -60
package/dist/index.d.ts
CHANGED
|
@@ -80,10 +80,7 @@ export declare type AngleAnnotationEvent =
|
|
|
80
80
|
type: "ESCAPE";
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
-
/**
|
|
84
|
-
* Global drawing system that manages angle dimension annotations across all
|
|
85
|
-
* {@link TechnicalDrawing} instances.
|
|
86
|
-
*/
|
|
83
|
+
/** Global drawing system that manages angle dimension annotations across all {@link TechnicalDrawing} instances. */
|
|
87
84
|
export declare class AngleAnnotations extends AnnotationSystem<AngleAnnotationSystem> implements Transitionable<AngleAnnotationState, AngleAnnotationEvent>, Disposable_2 {
|
|
88
85
|
enabled: boolean;
|
|
89
86
|
readonly _item: AngleAnnotation;
|
|
@@ -157,17 +154,10 @@ declare interface AngleAnnotationSystem {
|
|
|
157
154
|
handle: "pointA" | "vertex" | "pointB";
|
|
158
155
|
}
|
|
159
156
|
|
|
160
|
-
/**
|
|
161
|
-
* Pure state transition function for the angle dimension tool.
|
|
162
|
-
* Returns the **same state reference** when no transition applies.
|
|
163
|
-
*/
|
|
157
|
+
/** Pure state transition function for the angle dimension tool. */
|
|
164
158
|
export declare function angleDimensionMachine(state: AngleAnnotationState, event: AngleAnnotationEvent): AngleAnnotationState;
|
|
165
159
|
|
|
166
|
-
/**
|
|
167
|
-
* A single annotation entry stored in {@link DrawingAnnotations}.
|
|
168
|
-
* Bundles the owning system, the annotation data, and its Three.js group
|
|
169
|
-
* so that any lookup by UUID gives full access to all three.
|
|
170
|
-
*/
|
|
160
|
+
/** A single annotation entry stored in {@link DrawingAnnotations}, bundling the owning system, the annotation data, and its Three.js group. */
|
|
171
161
|
export declare interface AnnotationEntry {
|
|
172
162
|
/** The system that created and owns this annotation. */
|
|
173
163
|
system: AnnotationSystem<any>;
|
|
@@ -178,13 +168,8 @@ export declare interface AnnotationEntry {
|
|
|
178
168
|
}
|
|
179
169
|
|
|
180
170
|
/**
|
|
181
|
-
* Abstract base for all annotation sub-systems operating on a
|
|
182
|
-
* {@link
|
|
183
|
-
* preview geometry, and automatic style-reactivity so subclasses only need to
|
|
184
|
-
* implement geometry construction and handle-picking.
|
|
185
|
-
*
|
|
186
|
-
* @typeParam TSystem - A {@link DrawingSystemDescriptor} that declares the item,
|
|
187
|
-
* data, style, and handle types for this specific system.
|
|
171
|
+
* Abstract base for all annotation sub-systems operating on a {@link TechnicalDrawing}.
|
|
172
|
+
* @typeParam TSystem - A {@link DrawingSystemDescriptor} that declares the item, data, style, and handle types for this specific system.
|
|
188
173
|
*/
|
|
189
174
|
declare abstract class AnnotationSystem<TSystem extends DrawingSystemDescriptor> {
|
|
190
175
|
protected readonly _components: Components;
|
|
@@ -262,10 +247,7 @@ declare abstract class AnnotationSystem<TSystem extends DrawingSystemDescriptor>
|
|
|
262
247
|
export { AnnotationSystem }
|
|
263
248
|
export { AnnotationSystem as DrawingSystem }
|
|
264
249
|
|
|
265
|
-
/**
|
|
266
|
-
* Closed arrowhead tick — two wing lines plus a base line connecting them,
|
|
267
|
-
* forming a triangle outline (tip → wing1, tip → wing2, wing1 → wing2).
|
|
268
|
-
*/
|
|
250
|
+
/** Closed arrowhead tick — two wing lines plus a base line connecting them. */
|
|
269
251
|
export declare const ArrowTick: LineTickBuilder;
|
|
270
252
|
|
|
271
253
|
/**
|
|
@@ -301,13 +283,7 @@ export declare class AsyncEvent<T> {
|
|
|
301
283
|
private handlers;
|
|
302
284
|
}
|
|
303
285
|
|
|
304
|
-
/**
|
|
305
|
-
* Minimal interface for a translate-only gizmo that can be configured and
|
|
306
|
-
* attached to one of the helper's control handles.
|
|
307
|
-
*
|
|
308
|
-
* Satisfied by `THREE.TransformControls` without a direct import, keeping
|
|
309
|
-
* this class free of DOM dependencies.
|
|
310
|
-
*/
|
|
286
|
+
/** Minimal interface for a translate-only gizmo that can be configured and attached to one of the helper's control handles. */
|
|
311
287
|
export declare interface AxisGizmoLike {
|
|
312
288
|
attach(object: THREE.Object3D): void;
|
|
313
289
|
setSpace(space: "world" | "local"): void;
|
|
@@ -338,10 +314,7 @@ export declare abstract class Base {
|
|
|
338
314
|
isSerializable: () => this is Serializable<any, Record<string, any>>;
|
|
339
315
|
}
|
|
340
316
|
|
|
341
|
-
/**
|
|
342
|
-
* Minimum style contract shared by every annotation system.
|
|
343
|
-
* All per-system style interfaces must extend this.
|
|
344
|
-
*/
|
|
317
|
+
/** Minimum style contract shared by every annotation system. */
|
|
345
318
|
export declare interface BaseAnnotationStyle {
|
|
346
319
|
/** Line and text color as a hex number (e.g. `0xff0000`). */
|
|
347
320
|
color: number;
|
|
@@ -837,32 +810,7 @@ export declare interface BCFViewpoint {
|
|
|
837
810
|
bitmaps?: ViewpointBitmap[];
|
|
838
811
|
}
|
|
839
812
|
|
|
840
|
-
/**
|
|
841
|
-
* Global drawing system that manages block insertions across all
|
|
842
|
-
* {@link TechnicalDrawing} instances.
|
|
843
|
-
*
|
|
844
|
-
* A **block** is a named, reusable geometry definition (e.g. a furniture symbol
|
|
845
|
-
* or a detail imported from a DXF). Multiple insertions of the same block share
|
|
846
|
-
* the same `THREE.BufferGeometry`, so only the transform (position, rotation,
|
|
847
|
-
* scale) differs per instance.
|
|
848
|
-
*
|
|
849
|
-
* Register via {@link TechnicalDrawings.use}:
|
|
850
|
-
* ```ts
|
|
851
|
-
* const blocks = techDrawings.use(BlockAnnotations);
|
|
852
|
-
* ```
|
|
853
|
-
*
|
|
854
|
-
* Typical workflow:
|
|
855
|
-
* ```ts
|
|
856
|
-
* // 1. Project external geometry to drawing space
|
|
857
|
-
* const projected = TechnicalDrawing.toDrawingSpace(ifcLines, drawing);
|
|
858
|
-
*
|
|
859
|
-
* // 2. Register the block definition (global — do this once)
|
|
860
|
-
* blocks.define("CHAIR", { lines: projected.geometry });
|
|
861
|
-
*
|
|
862
|
-
* // 3. Insert on any drawing
|
|
863
|
-
* blocks.add(drawing, { blockName: "CHAIR", position, rotation: 0, scale: 1, style: "default" });
|
|
864
|
-
* ```
|
|
865
|
-
*/
|
|
813
|
+
/** Global drawing system that manages block insertions across all {@link TechnicalDrawing} instances. */
|
|
866
814
|
export declare class BlockAnnotations extends AnnotationSystem<BlockAnnotationsSystem> implements Disposable_2 {
|
|
867
815
|
enabled: boolean;
|
|
868
816
|
readonly _item: BlockInsertion;
|
|
@@ -872,6 +820,29 @@ export declare class BlockAnnotations extends AnnotationSystem<BlockAnnotationsS
|
|
|
872
820
|
* Register via {@link define}. Geometry is shared across all drawings and insertions.
|
|
873
821
|
*/
|
|
874
822
|
readonly definitions: FRAGS.DataMap<string, BlockDefinition>;
|
|
823
|
+
/**
|
|
824
|
+
* A **block** is a named, reusable geometry definition (e.g. a furniture symbol
|
|
825
|
+
* or a detail imported from a DXF). Multiple insertions of the same block share
|
|
826
|
+
* the same `THREE.BufferGeometry`, so only the transform (position, rotation,
|
|
827
|
+
* scale) differs per instance.
|
|
828
|
+
*
|
|
829
|
+
* Register via {@link TechnicalDrawings.use}:
|
|
830
|
+
* ```ts
|
|
831
|
+
* const blocks = techDrawings.use(BlockAnnotations);
|
|
832
|
+
* ```
|
|
833
|
+
*
|
|
834
|
+
* Typical workflow:
|
|
835
|
+
* ```ts
|
|
836
|
+
* // 1. Project external geometry to drawing space
|
|
837
|
+
* const projected = TechnicalDrawing.toDrawingSpace(ifcLines, drawing);
|
|
838
|
+
*
|
|
839
|
+
* // 2. Register the block definition (global — do this once)
|
|
840
|
+
* blocks.define("CHAIR", { lines: projected.geometry });
|
|
841
|
+
*
|
|
842
|
+
* // 3. Insert on any drawing
|
|
843
|
+
* blocks.add(drawing, { blockName: "CHAIR", position, rotation: 0, scale: 1, style: "default" });
|
|
844
|
+
* ```
|
|
845
|
+
*/
|
|
875
846
|
constructor(components: Components);
|
|
876
847
|
pickHandle(_drawing: TechnicalDrawing, _ray: THREE.Ray, _threshold?: number): {
|
|
877
848
|
uuid: string;
|
|
@@ -902,14 +873,7 @@ declare interface BlockAnnotationsSystem {
|
|
|
902
873
|
handle: "position" | "rotation" | "scale";
|
|
903
874
|
}
|
|
904
875
|
|
|
905
|
-
/**
|
|
906
|
-
* The geometry content of a named block.
|
|
907
|
-
* At least one of `lines` or `mesh` must be provided.
|
|
908
|
-
*
|
|
909
|
-
* - `lines` — `BufferGeometry` rendered as `LineSegments` (wire outlines).
|
|
910
|
-
* - `mesh` — `BufferGeometry` rendered as a filled `THREE.Mesh` (e.g. hatches
|
|
911
|
-
* or solid fills imported from DXF `SOLID`/`HATCH` entities).
|
|
912
|
-
*/
|
|
876
|
+
/** The geometry content of a named block. At least one of `lines` or `mesh` must be provided. */
|
|
913
877
|
export declare interface BlockDefinition {
|
|
914
878
|
/** Line geometry for `LineSegments`. */
|
|
915
879
|
lines?: THREE.BufferGeometry;
|
|
@@ -917,10 +881,7 @@ export declare interface BlockDefinition {
|
|
|
917
881
|
mesh?: THREE.BufferGeometry;
|
|
918
882
|
}
|
|
919
883
|
|
|
920
|
-
/**
|
|
921
|
-
* A single placed instance of a named block definition.
|
|
922
|
-
* All coordinates are in drawing local space (XZ plane, Y = 0).
|
|
923
|
-
*/
|
|
884
|
+
/** A single placed instance of a named block definition. */
|
|
924
885
|
export declare interface BlockInsertion {
|
|
925
886
|
/** Unique identifier for this insertion. */
|
|
926
887
|
uuid: string;
|
|
@@ -939,11 +900,7 @@ export declare interface BlockInsertion {
|
|
|
939
900
|
/** Editable fields of {@link BlockInsertion} — everything except the `uuid`. */
|
|
940
901
|
export declare type BlockInsertionData = Omit<BlockInsertion, "uuid">;
|
|
941
902
|
|
|
942
|
-
/**
|
|
943
|
-
* Style for a {@link BlockAnnotations} system.
|
|
944
|
-
* `textOffset` and `fontSize` are unused for blocks but required by
|
|
945
|
-
* {@link BaseAnnotationStyle} — set them to `0` in the default style.
|
|
946
|
-
*/
|
|
903
|
+
/** Style for a {@link BlockAnnotations} system. */
|
|
947
904
|
export declare interface BlockStyle extends BaseAnnotationStyle {
|
|
948
905
|
}
|
|
949
906
|
|
|
@@ -1019,43 +976,19 @@ export declare class BoundingBoxer extends Component implements Disposable_2 {
|
|
|
1019
976
|
*/
|
|
1020
977
|
export declare function buildAnglePositions(dim: AngleAnnotation, style: AngleAnnotationStyle): number[];
|
|
1021
978
|
|
|
1022
|
-
/**
|
|
1023
|
-
* Builds vertex positions for the live preview during `positioningArc`.
|
|
1024
|
-
* Uses the cursor distance from the vertex as the arc radius.
|
|
1025
|
-
*/
|
|
979
|
+
/** Builds vertex positions for the live preview during `positioningArc`. */
|
|
1026
980
|
export declare function buildAnglePreviewPositions(pointA: THREE.Vector3, vertex: THREE.Vector3, pointB: THREE.Vector3, cursor: THREE.Vector3 | null, style: AngleAnnotationStyle, flipped?: boolean): number[];
|
|
1027
981
|
|
|
1028
|
-
/**
|
|
1029
|
-
* Builds the flat vertex positions for a committed callout annotation:
|
|
1030
|
-
* enclosure outline + attachment-to-elbow line + elbow-to-extensionEnd line
|
|
1031
|
-
* + optional tick at `extensionEnd`.
|
|
1032
|
-
*/
|
|
982
|
+
/** Builds the flat vertex positions for a committed callout annotation. */
|
|
1033
983
|
export declare function buildCalloutPositions(ann: CalloutAnnotation, style: CalloutAnnotationStyle): number[];
|
|
1034
984
|
|
|
1035
|
-
/**
|
|
1036
|
-
* Builds vertex positions for the live preview during interactive placement.
|
|
1037
|
-
* During `awaitingRadius`, `cursor` is treated as the SE corner of the enclosure
|
|
1038
|
-
* so halfW/halfH are derived live from the delta to `center`.
|
|
1039
|
-
*/
|
|
985
|
+
/** Builds vertex positions for the live preview during interactive placement. */
|
|
1040
986
|
export declare function buildCalloutPreviewPositions(kind: "awaitingRadius" | "awaitingElbow" | "awaitingExtension", center: THREE.Vector3, halfW: number, halfH: number, elbow: THREE.Vector3 | null, cursor: THREE.Vector3 | null, style: CalloutAnnotationStyle): number[];
|
|
1041
987
|
|
|
1042
|
-
/**
|
|
1043
|
-
* Builds the flat vertex positions (x,y,z triplets) for a single committed
|
|
1044
|
-
* linear dimension. The result can be passed directly to a
|
|
1045
|
-
* `THREE.BufferAttribute`.
|
|
1046
|
-
*
|
|
1047
|
-
* The geometry lives in drawing local space (XZ plane, Y = 0) and consists of:
|
|
1048
|
-
* - Extension line from pointA
|
|
1049
|
-
* - Extension line from pointB
|
|
1050
|
-
* - Dimension line connecting both extension line ends
|
|
1051
|
-
* - Tick geometry at each end of the dimension line (from `style.tick`)
|
|
1052
|
-
*/
|
|
988
|
+
/** Builds the flat vertex positions (x,y,z triplets) for a single committed linear dimension. */
|
|
1053
989
|
export declare function buildDimensionPositions(dim: LinearAnnotation, style: LinearAnnotationStyle): number[];
|
|
1054
990
|
|
|
1055
|
-
/**
|
|
1056
|
-
* Builds an array of {@link LinearAnnotation}s from consecutive point pairs,
|
|
1057
|
-
* all sharing the same perpendicular offset.
|
|
1058
|
-
*/
|
|
991
|
+
/** Builds an array of {@link LinearAnnotation}s from consecutive point pairs, all sharing the same perpendicular offset. */
|
|
1059
992
|
export declare function buildDimensions(points: THREE.Vector3[], offset: number): LinearAnnotation[];
|
|
1060
993
|
|
|
1061
994
|
/**
|
|
@@ -1068,31 +1001,16 @@ export declare function buildLeaderPositions(ann: LeaderAnnotation, style: Leade
|
|
|
1068
1001
|
*/
|
|
1069
1002
|
export declare function buildLeaderPreviewPositions(kind: "placingElbow" | "placingExtension", arrowTip: THREE.Vector3, elbow: THREE.Vector3 | null, cursor: THREE.Vector3 | null, style: LeaderAnnotationStyle): number[];
|
|
1070
1003
|
|
|
1071
|
-
/**
|
|
1072
|
-
* Builds the flat vertex positions for a live dimension preview.
|
|
1073
|
-
*
|
|
1074
|
-
* During `placingPoints`: lines connecting all placed points plus a line
|
|
1075
|
-
* to the cursor.
|
|
1076
|
-
* During `positioningOffset`: a full dimension preview using the cursor as
|
|
1077
|
-
* the offset reference, rendered with the active style's tick.
|
|
1078
|
-
*/
|
|
1004
|
+
/** Builds the flat vertex positions for a live dimension preview. */
|
|
1079
1005
|
export declare function buildPreviewPositions(kind: "placingPoints" | "positioningOffset", points: THREE.Vector3[], cursor: THREE.Vector3 | null, style: LinearAnnotationStyle): number[];
|
|
1080
1006
|
|
|
1081
1007
|
/**
|
|
1082
1008
|
* Builds the `LineSegments` position array for a committed slope annotation.
|
|
1083
|
-
*
|
|
1084
|
-
* The geometry consists of:
|
|
1085
|
-
* - **Shaft**: tail → tip
|
|
1086
|
-
* - **Tick**: geometry produced by `style.tick` at the downhill tip
|
|
1087
|
-
*
|
|
1088
1009
|
* @returns A flat `Float32Array` of XYZ triplets (vertex pairs for `LineSegments`).
|
|
1089
1010
|
*/
|
|
1090
1011
|
export declare function buildSlopePositions(ann: SlopeAnnotation, style: SlopeAnnotationStyle): Float32Array;
|
|
1091
1012
|
|
|
1092
|
-
/**
|
|
1093
|
-
* The committed data for a single callout annotation.
|
|
1094
|
-
* All coordinates are in drawing local space (XZ plane, Y = 0).
|
|
1095
|
-
*/
|
|
1013
|
+
/** The committed data for a single callout annotation. */
|
|
1096
1014
|
export declare interface CalloutAnnotation {
|
|
1097
1015
|
/** Unique identifier. */
|
|
1098
1016
|
uuid: string;
|
|
@@ -1141,16 +1059,10 @@ export declare type CalloutAnnotationEvent =
|
|
|
1141
1059
|
type: "ESCAPE";
|
|
1142
1060
|
};
|
|
1143
1061
|
|
|
1144
|
-
/**
|
|
1145
|
-
* Pure state transition function for the callout annotation tool.
|
|
1146
|
-
* Returns the **same state reference** when no transition applies.
|
|
1147
|
-
*/
|
|
1062
|
+
/** Pure state transition function for the callout annotation tool. */
|
|
1148
1063
|
export declare function calloutAnnotationMachine(state: CalloutAnnotationState, event: CalloutAnnotationEvent): CalloutAnnotationState;
|
|
1149
1064
|
|
|
1150
|
-
/**
|
|
1151
|
-
* Global drawing system that manages callout annotations across all
|
|
1152
|
-
* {@link TechnicalDrawing} instances.
|
|
1153
|
-
*/
|
|
1065
|
+
/** Global drawing system that manages callout annotations across all {@link TechnicalDrawing} instances. */
|
|
1154
1066
|
export declare class CalloutAnnotations extends AnnotationSystem<CalloutAnnotationSystem> implements Transitionable<CalloutAnnotationState, CalloutAnnotationEvent>, Disposable_2 {
|
|
1155
1067
|
enabled: boolean;
|
|
1156
1068
|
readonly _item: CalloutAnnotation;
|
|
@@ -1257,11 +1169,7 @@ export declare interface CameraControllable {
|
|
|
1257
1169
|
*/
|
|
1258
1170
|
export declare type CameraProjection = "Perspective" | "Orthographic";
|
|
1259
1171
|
|
|
1260
|
-
/**
|
|
1261
|
-
* Elliptical enclosure — an ellipse approximated with line segments centred on
|
|
1262
|
-
* `center`, with semi-axis `halfW` on X and `halfH` on Z.
|
|
1263
|
-
* When `halfW === halfH` the result is a circle.
|
|
1264
|
-
*/
|
|
1172
|
+
/** Elliptical enclosure — an ellipse approximated with line segments centred on `center`. */
|
|
1265
1173
|
export declare const CircleEnclosure: EnclosureBuilder;
|
|
1266
1174
|
|
|
1267
1175
|
/**
|
|
@@ -1615,10 +1523,7 @@ declare type ClipperConfigType = {
|
|
|
1615
1523
|
size: NumberSettingControl;
|
|
1616
1524
|
};
|
|
1617
1525
|
|
|
1618
|
-
/**
|
|
1619
|
-
* Revision-cloud enclosure — a bumpy rectangle centred on `center`.
|
|
1620
|
-
* Width = 2 × halfW, height = 2 × halfH.
|
|
1621
|
-
*/
|
|
1526
|
+
/** Revision-cloud enclosure — a bumpy rectangle centred on `center`. */
|
|
1622
1527
|
export declare const CloudEnclosure: EnclosureBuilder;
|
|
1623
1528
|
|
|
1624
1529
|
export declare interface ColorSettingsControl {
|
|
@@ -1763,45 +1668,21 @@ export declare class Components implements Disposable_2 {
|
|
|
1763
1668
|
}
|
|
1764
1669
|
|
|
1765
1670
|
/**
|
|
1766
|
-
* Computes a local-to-world transformation matrix that maps a technical
|
|
1767
|
-
* drawing's local coordinate system onto a target plane in 3D world space.
|
|
1768
|
-
*
|
|
1769
|
-
* Given three point pairs — each pair being a point on the drawing (local
|
|
1770
|
-
* space) and its corresponding point in the 3D world — the function returns
|
|
1771
|
-
* the `THREE.Matrix4` that, when applied to the drawing's container, will
|
|
1772
|
-
* align the drawing to the target plane.
|
|
1773
|
-
*
|
|
1774
|
-
* The transformation encodes **translation**, **rotation**, and **uniform
|
|
1775
|
-
* scale** (derived from the ratio of world vs drawing distances between the
|
|
1776
|
-
* first pair of points, which handles unit mismatches such as mm vs m).
|
|
1777
|
-
*
|
|
1671
|
+
* Computes a local-to-world transformation matrix that maps a technical drawing's local coordinate system onto a target plane in 3D world space.
|
|
1778
1672
|
* @throws If either set of points is collinear (cannot define a plane).
|
|
1779
1673
|
* @throws If either set contains a degenerate first pair (zero distance).
|
|
1780
|
-
*
|
|
1781
1674
|
* @param drawingPoints - Three non-collinear points in drawing local space.
|
|
1782
1675
|
* @param worldPoints - Three corresponding non-collinear points in world space.
|
|
1783
1676
|
*/
|
|
1784
1677
|
export declare function computeAlignmentMatrix(drawingPoints: THREE.Vector3[], worldPoints: THREE.Vector3[]): THREE.Matrix4;
|
|
1785
1678
|
|
|
1786
|
-
/**
|
|
1787
|
-
* Returns the angle in radians between the two rays defined by the dimension.
|
|
1788
|
-
* Result is in [0, π].
|
|
1789
|
-
*/
|
|
1679
|
+
/** Returns the angle in radians between the two rays defined by the dimension. */
|
|
1790
1680
|
export declare function computeAngle(dim: AngleAnnotation): number;
|
|
1791
1681
|
|
|
1792
|
-
/**
|
|
1793
|
-
* Returns the angle (in radians, in the XZ plane) of the bisector ray between
|
|
1794
|
-
* the two measured rays. Useful for positioning the text label.
|
|
1795
|
-
*/
|
|
1682
|
+
/** Returns the angle (in radians, in the XZ plane) of the bisector ray between the two measured rays. */
|
|
1796
1683
|
export declare function computeBisectorAngle(dim: AngleAnnotation): number;
|
|
1797
1684
|
|
|
1798
|
-
/**
|
|
1799
|
-
* Computes the signed offset from a cursor position to the measurement axis
|
|
1800
|
-
* defined by the first and last points.
|
|
1801
|
-
*
|
|
1802
|
-
* The offset is measured perpendicular to the `(points[0] → points[last])`
|
|
1803
|
-
* direction, which is the direction along the measured lines (lineDir).
|
|
1804
|
-
*/
|
|
1685
|
+
/** Computes the signed offset from a cursor position to the measurement axis defined by the first and last points. */
|
|
1805
1686
|
export declare function computeOffset(points: THREE.Vector3[], cursor: THREE.Vector3): number;
|
|
1806
1687
|
|
|
1807
1688
|
/**
|
|
@@ -2083,21 +1964,10 @@ export declare class DataSet<T> extends Set<T> {
|
|
|
2083
1964
|
dispose(): void;
|
|
2084
1965
|
}
|
|
2085
1966
|
|
|
2086
|
-
/**
|
|
2087
|
-
* Diagonal slash tick (architectural style).
|
|
2088
|
-
* A single line crossing the dimension endpoint at 45° relative to the
|
|
2089
|
-
* dimension line direction.
|
|
2090
|
-
*/
|
|
1967
|
+
/** Diagonal slash tick (architectural style). */
|
|
2091
1968
|
export declare const DiagonalTick: LineTickBuilder;
|
|
2092
1969
|
|
|
2093
|
-
/**
|
|
2094
|
-
* Defines how a measured value (in drawing-space metres) is converted to a
|
|
2095
|
-
* display string. Pass one of the {@link Units} presets or build your own.
|
|
2096
|
-
*
|
|
2097
|
-
* ```ts
|
|
2098
|
-
* dims.styles.get("default")!.unit = OBC.Units.cm;
|
|
2099
|
-
* ```
|
|
2100
|
-
*/
|
|
1970
|
+
/** Defines how a measured value (in drawing-space metres) is converted to a display string. */
|
|
2101
1971
|
export declare interface DimensionUnit {
|
|
2102
1972
|
/** Multiplier applied to the raw metre value before display. */
|
|
2103
1973
|
factor: number;
|
|
@@ -2242,31 +2112,27 @@ export declare interface DocumentReference {
|
|
|
2242
2112
|
description?: string;
|
|
2243
2113
|
}
|
|
2244
2114
|
|
|
2245
|
-
/**
|
|
2246
|
-
* Dot tick — a small circle drawn with line segments at the endpoint.
|
|
2247
|
-
* Standard ISO tick for radius and diameter dimensions.
|
|
2248
|
-
* The circle is centred on the endpoint and independent of line direction.
|
|
2249
|
-
*/
|
|
2115
|
+
/** Dot tick — a small circle drawn with line segments at the endpoint. */
|
|
2250
2116
|
export declare const DotTick: LineTickBuilder;
|
|
2251
2117
|
|
|
2252
|
-
/**
|
|
2253
|
-
* Flat annotation store for a {@link TechnicalDrawing}, keyed by UUID.
|
|
2254
|
-
*
|
|
2255
|
-
* Each entry bundles the owning system, the data, and the Three.js group —
|
|
2256
|
-
* so a single `drawing.annotations.get(uuid)` gives full access to all three.
|
|
2257
|
-
*
|
|
2258
|
-
* Systems write here when they create or update annotations; consumers read
|
|
2259
|
-
* from here or subscribe to system-level events (`onCommit`, `onDelete`).
|
|
2260
|
-
*
|
|
2261
|
-
* ```ts
|
|
2262
|
-
* // Get everything for a known UUID
|
|
2263
|
-
* const { system, data, three } = drawing.annotations.get(uuid)!;
|
|
2264
|
-
*
|
|
2265
|
-
* // Iterate all annotations owned by a specific system
|
|
2266
|
-
* for (const [uuid, dim] of drawing.annotations.getBySystem(dims)) { ... }
|
|
2267
|
-
* ```
|
|
2268
|
-
*/
|
|
2118
|
+
/** Flat annotation store for a {@link TechnicalDrawing}, keyed by UUID. */
|
|
2269
2119
|
export declare class DrawingAnnotations extends FRAGS.DataMap<string, AnnotationEntry> {
|
|
2120
|
+
/**
|
|
2121
|
+
* Each entry bundles the owning system, the data, and the Three.js group —
|
|
2122
|
+
* so a single `drawing.annotations.get(uuid)` gives full access to all three.
|
|
2123
|
+
*
|
|
2124
|
+
* Systems write here when they create or update annotations; consumers read
|
|
2125
|
+
* from here or subscribe to system-level events (`onCommit`, `onDelete`).
|
|
2126
|
+
*
|
|
2127
|
+
* ```ts
|
|
2128
|
+
* // Get everything for a known UUID
|
|
2129
|
+
* const { system, data, three } = drawing.annotations.get(uuid)!;
|
|
2130
|
+
*
|
|
2131
|
+
* // Iterate all annotations owned by a specific system
|
|
2132
|
+
* for (const [uuid, dim] of drawing.annotations.getBySystem(dims)) { ... }
|
|
2133
|
+
* ```
|
|
2134
|
+
*/
|
|
2135
|
+
constructor();
|
|
2270
2136
|
/**
|
|
2271
2137
|
* Returns a snapshot map of `uuid → item` for all annotations owned by
|
|
2272
2138
|
* `system` on this drawing. Filters the flat store by system identity.
|
|
@@ -2285,10 +2151,7 @@ export declare class DrawingAnnotations extends FRAGS.DataMap<string, Annotation
|
|
|
2285
2151
|
}): Map<string, T>;
|
|
2286
2152
|
}
|
|
2287
2153
|
|
|
2288
|
-
/**
|
|
2289
|
-
* Result of a successful raycast against a {@link TechnicalDrawing}.
|
|
2290
|
-
* The `point` is in the drawing's **local coordinate space** (XZ plane, Y = 0).
|
|
2291
|
-
*/
|
|
2154
|
+
/** Result of a successful raycast against a {@link TechnicalDrawing}. */
|
|
2292
2155
|
export declare interface DrawingIntersection {
|
|
2293
2156
|
/** Hit position in drawing local space (X right, Z down-screen, Y = 0). */
|
|
2294
2157
|
point: THREE.Vector3;
|
|
@@ -2306,10 +2169,7 @@ export declare interface DrawingIntersection {
|
|
|
2306
2169
|
line: THREE.Line3 | null;
|
|
2307
2170
|
}
|
|
2308
2171
|
|
|
2309
|
-
/**
|
|
2310
|
-
* A named organizational layer on a {@link TechnicalDrawing}.
|
|
2311
|
-
* Mirrors the layer concept in CAD applications (AutoCAD, DXF, etc.).
|
|
2312
|
-
*/
|
|
2172
|
+
/** A named organizational layer on a {@link TechnicalDrawing}. */
|
|
2313
2173
|
export declare interface DrawingLayer {
|
|
2314
2174
|
/** Unique name identifying this layer. */
|
|
2315
2175
|
name: string;
|
|
@@ -2328,28 +2188,27 @@ export declare interface DrawingLayer {
|
|
|
2328
2188
|
material: THREE.LineBasicMaterial;
|
|
2329
2189
|
}
|
|
2330
2190
|
|
|
2331
|
-
/**
|
|
2332
|
-
* Manages the named layers of a {@link TechnicalDrawing}.
|
|
2333
|
-
*
|
|
2334
|
-
* Accessible via `drawing.layers`. Each layer owns a `THREE.LineBasicMaterial`
|
|
2335
|
-
* that is shared across all projection `LineSegments` assigned to it —
|
|
2336
|
-
* mutating the material (e.g. via {@link setColor}) is reflected on every line
|
|
2337
|
-
* immediately without any scene traversal. Annotation systems always use their
|
|
2338
|
-
* own style material and are not affected by layer materials.
|
|
2339
|
-
*
|
|
2340
|
-
* Extends `DataMap<string, DrawingLayer>` so consumers get reactive events
|
|
2341
|
-
* (`onItemSet`, `onItemDeleted`, …) directly on `drawing.layers`.
|
|
2342
|
-
*
|
|
2343
|
-
* Layer `"0"` always exists and cannot be removed.
|
|
2344
|
-
*
|
|
2345
|
-
* ```ts
|
|
2346
|
-
* drawing.layers.create("walls", { material: new THREE.LineBasicMaterial({ color: 0x333333 }) });
|
|
2347
|
-
* drawing.layers.setColor("walls", 0x888888);
|
|
2348
|
-
* drawing.layers.setVisibility("walls", false);
|
|
2349
|
-
* ```
|
|
2350
|
-
*/
|
|
2191
|
+
/** Manages the named layers of a {@link TechnicalDrawing}. */
|
|
2351
2192
|
export declare class DrawingLayers extends FRAGS.DataMap<string, DrawingLayer> {
|
|
2352
2193
|
private readonly _container;
|
|
2194
|
+
/**
|
|
2195
|
+
* Accessible via `drawing.layers`. Each layer owns a `THREE.LineBasicMaterial`
|
|
2196
|
+
* that is shared across all projection `LineSegments` assigned to it —
|
|
2197
|
+
* mutating the material (e.g. via {@link setColor}) is reflected on every line
|
|
2198
|
+
* immediately without any scene traversal. Annotation systems always use their
|
|
2199
|
+
* own style material and are not affected by layer materials.
|
|
2200
|
+
*
|
|
2201
|
+
* Extends `DataMap<string, DrawingLayer>` so consumers get reactive events
|
|
2202
|
+
* (`onItemSet`, `onItemDeleted`, …) directly on `drawing.layers`.
|
|
2203
|
+
*
|
|
2204
|
+
* Layer `"0"` always exists and cannot be removed.
|
|
2205
|
+
*
|
|
2206
|
+
* ```ts
|
|
2207
|
+
* drawing.layers.create("walls", { material: new THREE.LineBasicMaterial({ color: 0x333333 }) });
|
|
2208
|
+
* drawing.layers.setColor("walls", 0x888888);
|
|
2209
|
+
* drawing.layers.setVisibility("walls", false);
|
|
2210
|
+
* ```
|
|
2211
|
+
*/
|
|
2353
2212
|
constructor(container: THREE.Group);
|
|
2354
2213
|
/**
|
|
2355
2214
|
* Creates a new layer. If a layer with the same name already exists, returns
|
|
@@ -2421,20 +2280,7 @@ declare interface DrawingProjectionSource {
|
|
|
2421
2280
|
far: number;
|
|
2422
2281
|
}
|
|
2423
2282
|
|
|
2424
|
-
/**
|
|
2425
|
-
* "Type bag" descriptor that fully parameterises an annotation system.
|
|
2426
|
-
* Each system declares a concrete interface extending this.
|
|
2427
|
-
*
|
|
2428
|
-
* ```ts
|
|
2429
|
-
* interface LinearAnnotationSystem extends DrawingSystemDescriptor {
|
|
2430
|
-
* item: LinearAnnotation;
|
|
2431
|
-
* data: LinearAnnotationData;
|
|
2432
|
-
* style: LinearAnnotationStyle;
|
|
2433
|
-
* handle: "pointA" | "pointB" | "offset";
|
|
2434
|
-
* }
|
|
2435
|
-
* class LinearAnnotations extends AnnotationSystem<LinearAnnotationSystem> { ... }
|
|
2436
|
-
* ```
|
|
2437
|
-
*/
|
|
2283
|
+
/** "Type bag" descriptor that fully parameterises an annotation system. */
|
|
2438
2284
|
export declare interface DrawingSystemDescriptor {
|
|
2439
2285
|
item: {
|
|
2440
2286
|
uuid: string;
|
|
@@ -2445,21 +2291,7 @@ export declare interface DrawingSystemDescriptor {
|
|
|
2445
2291
|
handle: string;
|
|
2446
2292
|
}
|
|
2447
2293
|
|
|
2448
|
-
/**
|
|
2449
|
-
* Represents a framed orthographic window into a {@link TechnicalDrawing}.
|
|
2450
|
-
*
|
|
2451
|
-
* The viewport lives in the drawing's local coordinate system (XZ plane, Y = 0).
|
|
2452
|
-
* Its {@link camera} must be added as a child of the drawing's container so that
|
|
2453
|
-
* any world-space transform applied to the container automatically moves the camera.
|
|
2454
|
-
*
|
|
2455
|
-
* The camera uses **layer 1** exclusively, so only geometry explicitly assigned
|
|
2456
|
-
* to layer 1 (projection lines, dimensions) is visible in paper-space renders.
|
|
2457
|
-
*
|
|
2458
|
-
* Local coordinate convention:
|
|
2459
|
-
* - X right → world +X
|
|
2460
|
-
* - Y up (screen) → world -Z
|
|
2461
|
-
* - Normal (out of plane) → world +Y
|
|
2462
|
-
*/
|
|
2294
|
+
/** Represents a framed orthographic window into a {@link TechnicalDrawing}. */
|
|
2463
2295
|
export declare class DrawingViewport {
|
|
2464
2296
|
/** Unique identifier for this viewport instance. */
|
|
2465
2297
|
readonly uuid: string;
|
|
@@ -2527,6 +2359,19 @@ export declare class DrawingViewport {
|
|
|
2527
2359
|
get localYAxis(): THREE.Vector3;
|
|
2528
2360
|
/** Drawing plane normal (world +Y). */
|
|
2529
2361
|
get normal(): THREE.Vector3;
|
|
2362
|
+
/**
|
|
2363
|
+
* The viewport lives in the drawing's local coordinate system (XZ plane, Y = 0).
|
|
2364
|
+
* Its {@link camera} must be added as a child of the drawing's container so that
|
|
2365
|
+
* any world-space transform applied to the container automatically moves the camera.
|
|
2366
|
+
*
|
|
2367
|
+
* The camera uses **layer 1** exclusively, so only geometry explicitly assigned
|
|
2368
|
+
* to layer 1 (projection lines, dimensions) is visible in paper-space renders.
|
|
2369
|
+
*
|
|
2370
|
+
* Local coordinate convention:
|
|
2371
|
+
* - X right → world +X
|
|
2372
|
+
* - Y up (screen) → world -Z
|
|
2373
|
+
* - Normal (out of plane) → world +Y
|
|
2374
|
+
*/
|
|
2530
2375
|
constructor(config: DrawingViewportConfig);
|
|
2531
2376
|
/* Excluded from this release type: setContainer */
|
|
2532
2377
|
/**
|
|
@@ -2567,44 +2412,7 @@ export declare interface DrawingViewportConfig {
|
|
|
2567
2412
|
name?: string;
|
|
2568
2413
|
}
|
|
2569
2414
|
|
|
2570
|
-
/**
|
|
2571
|
-
* Visualises the bounds of a `DrawingViewport` as a rectangle in the 3D scene.
|
|
2572
|
-
*
|
|
2573
|
-
* Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
|
|
2574
|
-
* the result is a plain `THREE.Group` you can add wherever you like in the scene
|
|
2575
|
-
* graph. It renders on **layer 0**, so it is visible to the perspective camera
|
|
2576
|
-
* but invisible to the viewport's own orthographic camera (which only renders
|
|
2577
|
-
* layer 1).
|
|
2578
|
-
*
|
|
2579
|
-
* Typically you do not construct this directly — use
|
|
2580
|
-
* `DrawingViewport.helperVisible = true` instead, which attaches the helper to
|
|
2581
|
-
* the drawing container automatically.
|
|
2582
|
-
*
|
|
2583
|
-
* When {@link editable} is `true`, two kinds of interaction are enabled:
|
|
2584
|
-
*
|
|
2585
|
-
* - **Resize** — hover one of the eight handle spheres (corners + edge midpoints)
|
|
2586
|
-
* and drag to resize the viewport in that direction.
|
|
2587
|
-
* - **Move** — hover the border rectangle itself and drag to translate the
|
|
2588
|
-
* entire viewport while keeping its width and height constant.
|
|
2589
|
-
*
|
|
2590
|
-
* In both cases the border and the hovered element turn orange as visual
|
|
2591
|
-
* feedback, and {@link isDragging} becomes `true` for the duration of the drag.
|
|
2592
|
-
*
|
|
2593
|
-
* The class contains no browser API references and is safe in Node.js
|
|
2594
|
-
* environments; the consumer forwards events:
|
|
2595
|
-
*
|
|
2596
|
-
* ```ts
|
|
2597
|
-
* container.addEventListener("mousemove", (e) => {
|
|
2598
|
-
* raycaster.setFromCamera(getNDC(e), camera);
|
|
2599
|
-
* viewport.helper.onPointerMove(raycaster.ray);
|
|
2600
|
-
* });
|
|
2601
|
-
* container.addEventListener("mousedown", (e) => {
|
|
2602
|
-
* raycaster.setFromCamera(getNDC(e), camera);
|
|
2603
|
-
* viewport.helper.onPointerDown(raycaster.ray);
|
|
2604
|
-
* });
|
|
2605
|
-
* container.addEventListener("mouseup", () => viewport.helper.onPointerUp());
|
|
2606
|
-
* ```
|
|
2607
|
-
*/
|
|
2415
|
+
/** Visualises the bounds of a `DrawingViewport` as a rectangle in the 3D scene. */
|
|
2608
2416
|
export declare class DrawingViewportHelper extends THREE.Group {
|
|
2609
2417
|
private readonly _viewport;
|
|
2610
2418
|
private readonly _border;
|
|
@@ -2637,6 +2445,42 @@ export declare class DrawingViewportHelper extends THREE.Group {
|
|
|
2637
2445
|
set movable(value: boolean);
|
|
2638
2446
|
/** `true` while either a resize or a move drag is in progress. */
|
|
2639
2447
|
get isDragging(): boolean;
|
|
2448
|
+
/**
|
|
2449
|
+
* Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
|
|
2450
|
+
* the result is a plain `THREE.Group` you can add wherever you like in the scene
|
|
2451
|
+
* graph. It renders on **layer 0**, so it is visible to the perspective camera
|
|
2452
|
+
* but invisible to the viewport's own orthographic camera (which only renders
|
|
2453
|
+
* layer 1).
|
|
2454
|
+
*
|
|
2455
|
+
* Typically you do not construct this directly — use
|
|
2456
|
+
* `DrawingViewport.helperVisible = true` instead, which attaches the helper to
|
|
2457
|
+
* the drawing container automatically.
|
|
2458
|
+
*
|
|
2459
|
+
* When {@link editable} is `true`, two kinds of interaction are enabled:
|
|
2460
|
+
*
|
|
2461
|
+
* - **Resize** — hover one of the eight handle spheres (corners + edge midpoints)
|
|
2462
|
+
* and drag to resize the viewport in that direction.
|
|
2463
|
+
* - **Move** — hover the border rectangle itself and drag to translate the
|
|
2464
|
+
* entire viewport while keeping its width and height constant.
|
|
2465
|
+
*
|
|
2466
|
+
* In both cases the border and the hovered element turn orange as visual
|
|
2467
|
+
* feedback, and {@link isDragging} becomes `true` for the duration of the drag.
|
|
2468
|
+
*
|
|
2469
|
+
* The class contains no browser API references and is safe in Node.js
|
|
2470
|
+
* environments; the consumer forwards events:
|
|
2471
|
+
*
|
|
2472
|
+
* ```ts
|
|
2473
|
+
* container.addEventListener("mousemove", (e) => {
|
|
2474
|
+
* raycaster.setFromCamera(getNDC(e), camera);
|
|
2475
|
+
* viewport.helper.onPointerMove(raycaster.ray);
|
|
2476
|
+
* });
|
|
2477
|
+
* container.addEventListener("mousedown", (e) => {
|
|
2478
|
+
* raycaster.setFromCamera(getNDC(e), camera);
|
|
2479
|
+
* viewport.helper.onPointerDown(raycaster.ray);
|
|
2480
|
+
* });
|
|
2481
|
+
* container.addEventListener("mouseup", () => viewport.helper.onPointerUp());
|
|
2482
|
+
* ```
|
|
2483
|
+
*/
|
|
2640
2484
|
constructor(viewport: ViewportBoundsController);
|
|
2641
2485
|
/**
|
|
2642
2486
|
* Rebuilds the border geometry and repositions all handles to match the
|
|
@@ -2678,19 +2522,18 @@ export declare class DrawingViewportHelper extends THREE.Group {
|
|
|
2678
2522
|
private _setBorderHover;
|
|
2679
2523
|
}
|
|
2680
2524
|
|
|
2681
|
-
/**
|
|
2682
|
-
* Manages the viewports of a {@link TechnicalDrawing}.
|
|
2683
|
-
*
|
|
2684
|
-
* Accessible via `drawing.viewports`. Extends `DataMap` so consumers get
|
|
2685
|
-
* reactive events (`onItemSet`, `onBeforeDelete`, …) for free.
|
|
2686
|
-
*
|
|
2687
|
-
* ```ts
|
|
2688
|
-
* const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
|
|
2689
|
-
* drawing.viewports.delete(vp.uuid); // disposes and removes
|
|
2690
|
-
* ```
|
|
2691
|
-
*/
|
|
2525
|
+
/** Manages the viewports of a {@link TechnicalDrawing}. */
|
|
2692
2526
|
export declare class DrawingViewports extends FRAGS.DataMap<string, DrawingViewport> {
|
|
2693
2527
|
private readonly _container;
|
|
2528
|
+
/**
|
|
2529
|
+
* Accessible via `drawing.viewports`. Extends `DataMap` so consumers get
|
|
2530
|
+
* reactive events (`onItemSet`, `onBeforeDelete`, …) for free.
|
|
2531
|
+
*
|
|
2532
|
+
* ```ts
|
|
2533
|
+
* const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
|
|
2534
|
+
* drawing.viewports.delete(vp.uuid); // disposes and removes
|
|
2535
|
+
* ```
|
|
2536
|
+
*/
|
|
2694
2537
|
constructor(container: THREE.Group);
|
|
2695
2538
|
/**
|
|
2696
2539
|
* Creates a new {@link DrawingViewport}, adds its camera to the drawing
|
|
@@ -2708,16 +2551,7 @@ export declare interface DxfDrawingEntry {
|
|
|
2708
2551
|
viewports: DxfViewportEntry[];
|
|
2709
2552
|
}
|
|
2710
2553
|
|
|
2711
|
-
/**
|
|
2712
|
-
* Serializes {@link TechnicalDrawing} content to DXF format (AC1015 / AutoCAD R2000).
|
|
2713
|
-
*
|
|
2714
|
-
* Used through {@link DxfManager}:
|
|
2715
|
-
* ```ts
|
|
2716
|
-
* const dxf = components.get(OBC.DxfManager).exporter.export([
|
|
2717
|
-
* { drawing, viewports: [{ viewport, x: 10, y: 10 }] },
|
|
2718
|
-
* ], { widthMm: 420, heightMm: 297, margin: 10 });
|
|
2719
|
-
* ```
|
|
2720
|
-
*/
|
|
2554
|
+
/** Serializes {@link TechnicalDrawing} content to DXF format (AC1015 / AutoCAD R2000). */
|
|
2721
2555
|
export declare class DxfExporter {
|
|
2722
2556
|
private readonly _components;
|
|
2723
2557
|
/** Decimal places used when formatting measurement text in DXF. */
|
|
@@ -2737,6 +2571,14 @@ export declare class DxfExporter {
|
|
|
2737
2571
|
private _paperSlot;
|
|
2738
2572
|
private readonly _annotationLayers;
|
|
2739
2573
|
private readonly _systemExporters;
|
|
2574
|
+
/**
|
|
2575
|
+
* Used through {@link DxfManager}:
|
|
2576
|
+
* ```ts
|
|
2577
|
+
* const dxf = components.get(OBC.DxfManager).exporter.export([
|
|
2578
|
+
* { drawing, viewports: [{ viewport, x: 10, y: 10 }] },
|
|
2579
|
+
* ], { widthMm: 420, heightMm: 297, margin: 10 });
|
|
2580
|
+
* ```
|
|
2581
|
+
*/
|
|
2740
2582
|
constructor(_components: Components);
|
|
2741
2583
|
/**
|
|
2742
2584
|
* Registers a custom DXF exporter for a {@link DrawingSystem} subclass.
|
|
@@ -2809,19 +2651,18 @@ export declare class DxfExporter {
|
|
|
2809
2651
|
private _makeContext;
|
|
2810
2652
|
}
|
|
2811
2653
|
|
|
2812
|
-
/**
|
|
2813
|
-
* Manages DXF import and export for technical drawings.
|
|
2814
|
-
*
|
|
2815
|
-
* ```ts
|
|
2816
|
-
* const manager = components.get(OBC.DxfManager);
|
|
2817
|
-
* const dxf = manager.exporter.export([{ drawing, viewports: [{ viewport }] }]);
|
|
2818
|
-
* ```
|
|
2819
|
-
*/
|
|
2654
|
+
/** Manages DXF import and export for technical drawings. */
|
|
2820
2655
|
export declare class DxfManager extends Component {
|
|
2821
2656
|
static readonly uuid: "e9a2c3d4-5f67-4b89-a012-1c3d5e7f9b2a";
|
|
2822
2657
|
enabled: boolean;
|
|
2823
2658
|
/** Handles DXF serialisation of {@link TechnicalDrawing} content. */
|
|
2824
2659
|
readonly exporter: DxfExporter;
|
|
2660
|
+
/**
|
|
2661
|
+
* ```ts
|
|
2662
|
+
* const manager = components.get(OBC.DxfManager);
|
|
2663
|
+
* const dxf = manager.exporter.export([{ drawing, viewports: [{ viewport }] }]);
|
|
2664
|
+
* ```
|
|
2665
|
+
*/
|
|
2825
2666
|
constructor(components: Components);
|
|
2826
2667
|
}
|
|
2827
2668
|
|
|
@@ -2867,10 +2708,7 @@ export declare interface DxfWriteContext {
|
|
|
2867
2708
|
textAngle(dx: number, dz: number): number;
|
|
2868
2709
|
}
|
|
2869
2710
|
|
|
2870
|
-
/**
|
|
2871
|
-
* Result of an edge projection, containing visible/hidden geometries
|
|
2872
|
-
* and a mapping from group indices to model item identifiers.
|
|
2873
|
-
*/
|
|
2711
|
+
/** Result of an edge projection, containing visible/hidden geometries and a mapping from group indices to model item identifiers. */
|
|
2874
2712
|
export declare interface EdgeProjectionResult {
|
|
2875
2713
|
/** Line segment geometry for visible edges. Has a `group` vertex attribute with group indices. */
|
|
2876
2714
|
visible: THREE.BufferGeometry;
|
|
@@ -2883,11 +2721,7 @@ export declare interface EdgeProjectionResult {
|
|
|
2883
2721
|
}>;
|
|
2884
2722
|
}
|
|
2885
2723
|
|
|
2886
|
-
/**
|
|
2887
|
-
* Component that generates 2D edge projections from fragment model items.
|
|
2888
|
-
* It takes a ModelIdMap, converts items to meshes, and runs them through
|
|
2889
|
-
* the three-edge-projection library to produce visible/hidden line segment geometries.
|
|
2890
|
-
*/
|
|
2724
|
+
/** Component that generates 2D edge projections from fragment model items. */
|
|
2891
2725
|
export declare class EdgeProjector extends Component implements Disposable_2 {
|
|
2892
2726
|
static readonly uuid: "f2e76c3a-8b1d-4d5e-9a3f-7c6b2d4e8f1a";
|
|
2893
2727
|
enabled: boolean;
|
|
@@ -2942,14 +2776,7 @@ export declare class EdgeProjector extends Component implements Disposable_2 {
|
|
|
2942
2776
|
dispose(): void;
|
|
2943
2777
|
}
|
|
2944
2778
|
|
|
2945
|
-
/**
|
|
2946
|
-
* Defines a closed shape (cloud, rectangle, circle, etc.) that forms the
|
|
2947
|
-
* body of a callout annotation.
|
|
2948
|
-
*
|
|
2949
|
-
* `buildGeometry` returns flat XYZ triplet pairs suitable for `THREE.LineSegments`.
|
|
2950
|
-
* `getAttachmentPoint` returns the point on the enclosure boundary in the
|
|
2951
|
-
* given direction — needed because non-circular shapes have non-radial boundaries.
|
|
2952
|
-
*/
|
|
2779
|
+
/** Defines a closed shape (cloud, rectangle, circle, etc.) that forms the body of a callout annotation. */
|
|
2953
2780
|
export declare type EnclosureBuilder = {
|
|
2954
2781
|
/** Returns flat XYZ line-segment pairs forming the enclosure outline. */
|
|
2955
2782
|
buildGeometry: (center: THREE.Vector3, halfW: number, halfH: number) => number[];
|
|
@@ -3202,24 +3029,13 @@ export declare class FastModelPickers extends Component implements Disposable_2
|
|
|
3202
3029
|
dispose(): void;
|
|
3203
3030
|
}
|
|
3204
3031
|
|
|
3205
|
-
/**
|
|
3206
|
-
* Filled arrowhead tick (solid triangle, requires a `THREE.Mesh`).
|
|
3207
|
-
* Use this as `meshTick` on a style — pair with `NoTick` as `tick` if you
|
|
3208
|
-
* want only the filled shape and no line arrowhead.
|
|
3209
|
-
*/
|
|
3032
|
+
/** Filled arrowhead tick (solid triangle, requires a `THREE.Mesh`). */
|
|
3210
3033
|
export declare const FilledArrowTick: MeshTickBuilder;
|
|
3211
3034
|
|
|
3212
|
-
/**
|
|
3213
|
-
* Filled circle tick (solid disc, requires a `THREE.Mesh`).
|
|
3214
|
-
* The disc is centred on the endpoint and approximated with 16 triangles.
|
|
3215
|
-
*/
|
|
3035
|
+
/** Filled circle tick (solid disc, requires a `THREE.Mesh`). */
|
|
3216
3036
|
export declare const FilledCircleTick: MeshTickBuilder;
|
|
3217
3037
|
|
|
3218
|
-
/**
|
|
3219
|
-
* Filled square tick (solid square, requires a `THREE.Mesh`).
|
|
3220
|
-
* The square is centred on the endpoint and oriented along the dimension line.
|
|
3221
|
-
* Common in structural and steel drawings.
|
|
3222
|
-
*/
|
|
3038
|
+
/** Filled square tick (solid square, requires a `THREE.Mesh`). */
|
|
3223
3039
|
export declare const FilledSquareTick: MeshTickBuilder;
|
|
3224
3040
|
|
|
3225
3041
|
/**
|
|
@@ -3309,9 +3125,21 @@ export declare class FirstPersonMode implements NavigationMode {
|
|
|
3309
3125
|
export declare function formatSlope(slope: number, format: SlopeFormat): string;
|
|
3310
3126
|
|
|
3311
3127
|
/**
|
|
3312
|
-
* Component to load, delete and manage [fragments](https://github.com/ThatOpen/engine_fragment) efficiently. 📕 [Tutorial](https://docs.thatopen.com/Tutorials/Components/Core/FragmentsManager). 📘 [API](https://docs.thatopen.com/api/@thatopen/components/classes/FragmentsManager).
|
|
3128
|
+
* Component to load, delete and manage [fragments](https://github.com/ThatOpen/engine_fragment) efficiently. 📕 [Tutorial](https://docs.thatopen.com/Tutorials/Components/Core/FragmentsManager). 📘 [API](https://docs.thatopen.com/api/@thatopen/components/classes/FragmentsManager). Before calling {@link FragmentsManager.init}, you need a URL for the fragments worker. The recommended way to get it is {@link FragmentsManager.getWorker}, which fetches the version-matched worker from unpkg.
|
|
3313
3129
|
*/
|
|
3314
3130
|
export declare class FragmentsManager extends Component implements Disposable_2 {
|
|
3131
|
+
/**
|
|
3132
|
+
* Returns a blob URL for the fragments worker matching the installed
|
|
3133
|
+
* `@thatopen/fragments` version. Delegates to {@link FRAGS.FragmentsModels.getWorker}.
|
|
3134
|
+
* This is the recommended way to obtain the URL passed to {@link FragmentsManager.init}.
|
|
3135
|
+
*
|
|
3136
|
+
* @example
|
|
3137
|
+
* ```ts
|
|
3138
|
+
* const fragments = components.get(OBC.FragmentsManager);
|
|
3139
|
+
* fragments.init(await OBC.FragmentsManager.getWorker());
|
|
3140
|
+
* ```
|
|
3141
|
+
*/
|
|
3142
|
+
static getWorker(): Promise<string>;
|
|
3315
3143
|
/**
|
|
3316
3144
|
* A unique identifier for the component.
|
|
3317
3145
|
* This UUID is used to register the component within the Components system.
|
|
@@ -3340,6 +3168,13 @@ export declare class FragmentsManager extends Component implements Disposable_2
|
|
|
3340
3168
|
constructor(components: Components);
|
|
3341
3169
|
/** {@link Disposable.dispose} */
|
|
3342
3170
|
dispose(): void;
|
|
3171
|
+
/**
|
|
3172
|
+
* Initializes the fragments core with the given worker URL.
|
|
3173
|
+
* The recommended way to obtain the URL is {@link FragmentsManager.getWorker}:
|
|
3174
|
+
* ```ts
|
|
3175
|
+
* fragments.init(await OBC.FragmentsManager.getWorker());
|
|
3176
|
+
* ```
|
|
3177
|
+
*/
|
|
3343
3178
|
init(workerURL: string, options?: {
|
|
3344
3179
|
classicWorker?: boolean;
|
|
3345
3180
|
}): void;
|
|
@@ -3395,20 +3230,13 @@ export declare class FragmentsManager extends Component implements Disposable_2
|
|
|
3395
3230
|
applyBaseCoordinateSystem(object: THREE.Object3D | THREE.Vector3, originalCoordinateSystem?: THREE.Matrix4): THREE.Matrix4;
|
|
3396
3231
|
}
|
|
3397
3232
|
|
|
3398
|
-
/**
|
|
3399
|
-
* Returns the tip position and inward tangent direction for each tick endpoint
|
|
3400
|
-
* of an angle dimension arc. Used by {@link AngleDimensions} to build
|
|
3401
|
-
* `meshTick` geometry.
|
|
3402
|
-
*/
|
|
3233
|
+
/** Returns the tip position and inward tangent direction for each tick endpoint of an angle dimension arc. */
|
|
3403
3234
|
export declare function getAngleTickEndpoints(dim: AngleAnnotation): Array<{
|
|
3404
3235
|
tip: THREE.Vector3;
|
|
3405
3236
|
dir: THREE.Vector3;
|
|
3406
3237
|
}>;
|
|
3407
3238
|
|
|
3408
|
-
/**
|
|
3409
|
-
* Returns the tip position and inward direction for each tick endpoint of a
|
|
3410
|
-
* linear dimension. Used by {@link LinearDimensions} to build `meshTick` geometry.
|
|
3411
|
-
*/
|
|
3239
|
+
/** Returns the tip position and inward direction for each tick endpoint of a linear dimension. */
|
|
3412
3240
|
export declare function getDimensionTickEndpoints(dim: LinearAnnotation): Array<{
|
|
3413
3241
|
tip: THREE.Vector3;
|
|
3414
3242
|
dir: THREE.Vector3;
|
|
@@ -4065,10 +3893,7 @@ export declare class ItemsFinder extends Component implements Serializable<Seria
|
|
|
4065
3893
|
};
|
|
4066
3894
|
}
|
|
4067
3895
|
|
|
4068
|
-
/**
|
|
4069
|
-
* The committed data for a single leader annotation.
|
|
4070
|
-
* Stored in drawing local space (XZ plane, Y = 0).
|
|
4071
|
-
*/
|
|
3896
|
+
/** The committed data for a single leader annotation. */
|
|
4072
3897
|
export declare interface LeaderAnnotation {
|
|
4073
3898
|
/** Unique identifier. */
|
|
4074
3899
|
uuid: string;
|
|
@@ -4112,16 +3937,10 @@ export declare type LeaderAnnotationEvent =
|
|
|
4112
3937
|
type: "ESCAPE";
|
|
4113
3938
|
};
|
|
4114
3939
|
|
|
4115
|
-
/**
|
|
4116
|
-
* Pure state transition function for the leader annotation tool.
|
|
4117
|
-
* Returns the **same state reference** when no transition applies.
|
|
4118
|
-
*/
|
|
3940
|
+
/** Pure state transition function for the leader annotation tool. */
|
|
4119
3941
|
export declare function leaderAnnotationMachine(state: LeaderAnnotationState, event: LeaderAnnotationEvent): LeaderAnnotationState;
|
|
4120
3942
|
|
|
4121
|
-
/**
|
|
4122
|
-
* Global drawing system that manages leader (arrow + text) annotations across
|
|
4123
|
-
* all {@link TechnicalDrawing} instances.
|
|
4124
|
-
*/
|
|
3943
|
+
/** Global drawing system that manages leader (arrow + text) annotations across all {@link TechnicalDrawing} instances. */
|
|
4125
3944
|
export declare class LeaderAnnotations extends AnnotationSystem<LeaderAnnotationSystem> implements Transitionable<LeaderAnnotationState, LeaderAnnotationEvent>, Disposable_2 {
|
|
4126
3945
|
enabled: boolean;
|
|
4127
3946
|
readonly _item: LeaderAnnotation;
|
|
@@ -4212,10 +4031,7 @@ declare interface LeaderAnnotationSystem {
|
|
|
4212
4031
|
handle: "elbow" | "extensionEnd";
|
|
4213
4032
|
}
|
|
4214
4033
|
|
|
4215
|
-
/**
|
|
4216
|
-
* The committed data for a single linear annotation.
|
|
4217
|
-
* Stored in drawing local space (XZ plane, Y = 0).
|
|
4218
|
-
*/
|
|
4034
|
+
/** The committed data for a single linear annotation. */
|
|
4219
4035
|
export declare interface LinearAnnotation {
|
|
4220
4036
|
/** Unique identifier. */
|
|
4221
4037
|
uuid: string;
|
|
@@ -4279,10 +4095,7 @@ export declare type LinearAnnotationEvent =
|
|
|
4279
4095
|
type: "ESCAPE";
|
|
4280
4096
|
};
|
|
4281
4097
|
|
|
4282
|
-
/**
|
|
4283
|
-
* Global drawing system that manages linear dimension annotations across all
|
|
4284
|
-
* {@link TechnicalDrawing} instances.
|
|
4285
|
-
*/
|
|
4098
|
+
/** Global drawing system that manages linear dimension annotations across all {@link TechnicalDrawing} instances. */
|
|
4286
4099
|
export declare class LinearAnnotations extends AnnotationSystem<LinearAnnotationSystem> implements Transitionable<LinearAnnotationState, LinearAnnotationEvent>, Disposable_2 {
|
|
4287
4100
|
enabled: boolean;
|
|
4288
4101
|
readonly _item: LinearAnnotation;
|
|
@@ -4367,20 +4180,11 @@ declare interface LinearAnnotationSystem {
|
|
|
4367
4180
|
handle: "pointA" | "pointB" | "offset";
|
|
4368
4181
|
}
|
|
4369
4182
|
|
|
4370
|
-
/**
|
|
4371
|
-
* Pure state transition function for the linear dimension tool.
|
|
4372
|
-
*
|
|
4373
|
-
* Given the current state and an incoming event, returns the next state.
|
|
4374
|
-
* Returns the **same state reference** when no transition applies (caller can
|
|
4375
|
-
* skip re-renders with a `===` check).
|
|
4376
|
-
*/
|
|
4183
|
+
/** Pure state transition function for the linear dimension tool. */
|
|
4377
4184
|
export declare function linearDimensionMachine(state: LinearAnnotationState, event: LinearAnnotationEvent): LinearAnnotationState;
|
|
4378
4185
|
|
|
4379
4186
|
/**
|
|
4380
|
-
* A function that produces tick mark geometry at one endpoint of a dimension
|
|
4381
|
-
* or leader line. Returns a flat array of XYZ triplets (vertex pairs for
|
|
4382
|
-
* `LineSegments`).
|
|
4383
|
-
*
|
|
4187
|
+
* A function that produces tick mark geometry at one endpoint of a dimension or leader line.
|
|
4384
4188
|
* @param tip - The endpoint of the line (drawing local space).
|
|
4385
4189
|
* @param lineDir - Normalised direction FROM `tip` TOWARD the other endpoint.
|
|
4386
4190
|
* @param size - Tick size in drawing local units.
|
|
@@ -4457,12 +4261,7 @@ export declare class MeasurementUtils extends Component {
|
|
|
4457
4261
|
}
|
|
4458
4262
|
|
|
4459
4263
|
/**
|
|
4460
|
-
* A function that produces filled tick mark geometry (triangles) at one
|
|
4461
|
-
* endpoint. Returns a flat array of XYZ triplets forming non-indexed triangles
|
|
4462
|
-
* for a `THREE.Mesh`.
|
|
4463
|
-
*
|
|
4464
|
-
* Same signature as {@link LineTickBuilder} — swap one for the other freely.
|
|
4465
|
-
*
|
|
4264
|
+
* A function that produces filled tick mark geometry (triangles) at one endpoint.
|
|
4466
4265
|
* @param tip - The endpoint of the dimension or leader line.
|
|
4467
4266
|
* @param lineDir - Normalised direction FROM `tip` TOWARD the other endpoint.
|
|
4468
4267
|
* @param size - Tick/arrow size in drawing local units.
|
|
@@ -4599,9 +4398,7 @@ export declare interface NoControl {
|
|
|
4599
4398
|
value: any;
|
|
4600
4399
|
}
|
|
4601
4400
|
|
|
4602
|
-
/**
|
|
4603
|
-
* No tick — dimension line ends cleanly at the extension lines.
|
|
4604
|
-
*/
|
|
4401
|
+
/** No tick — dimension line ends cleanly at the extension lines. */
|
|
4605
4402
|
export declare const NoTick: LineTickBuilder;
|
|
4606
4403
|
|
|
4607
4404
|
export declare interface NumberSettingControl {
|
|
@@ -4827,10 +4624,7 @@ export declare class Raycasters extends Component implements Disposable_2 {
|
|
|
4827
4624
|
dispose(): void;
|
|
4828
4625
|
}
|
|
4829
4626
|
|
|
4830
|
-
/**
|
|
4831
|
-
* Rectangular enclosure — a plain axis-aligned rectangle centred on `center`.
|
|
4832
|
-
* Width = 2 × halfW, height = 2 × halfH.
|
|
4833
|
-
*/
|
|
4627
|
+
/** Rectangular enclosure — a plain axis-aligned rectangle centred on `center`. */
|
|
4834
4628
|
export declare const RectEnclosure: EnclosureBuilder;
|
|
4835
4629
|
|
|
4836
4630
|
/**
|
|
@@ -5608,10 +5402,7 @@ export declare class SimpleWorld<T extends BaseScene = BaseScene, U extends Base
|
|
|
5608
5402
|
dispose(disposeResources?: boolean): void;
|
|
5609
5403
|
}
|
|
5610
5404
|
|
|
5611
|
-
/**
|
|
5612
|
-
* A single committed slope annotation.
|
|
5613
|
-
* All coordinates are in drawing local space (XZ plane, Y = 0).
|
|
5614
|
-
*/
|
|
5405
|
+
/** A single committed slope annotation. */
|
|
5615
5406
|
export declare interface SlopeAnnotation {
|
|
5616
5407
|
/** Unique identifier. */
|
|
5617
5408
|
uuid: string;
|
|
@@ -5631,19 +5422,17 @@ export declare interface SlopeAnnotation {
|
|
|
5631
5422
|
/** Editable fields of {@link SlopeAnnotation} — everything except the `uuid`. */
|
|
5632
5423
|
export declare type SlopeAnnotationData = Omit<SlopeAnnotation, "uuid">;
|
|
5633
5424
|
|
|
5634
|
-
/**
|
|
5635
|
-
* Global drawing system that manages slope annotations across all
|
|
5636
|
-
* {@link TechnicalDrawing} instances.
|
|
5637
|
-
*
|
|
5638
|
-
* Because slope data comes from the 3D model, there is no state machine.
|
|
5639
|
-
* Call {@link add} directly with the computed slope values:
|
|
5640
|
-
* ```ts
|
|
5641
|
-
* slopes.add(drawing, { position, direction, slope, style: "default" });
|
|
5642
|
-
* ```
|
|
5643
|
-
*/
|
|
5425
|
+
/** Global drawing system that manages slope annotations across all {@link TechnicalDrawing} instances. */
|
|
5644
5426
|
export declare class SlopeAnnotations extends AnnotationSystem<SlopeAnnotationSystem> implements Disposable_2 {
|
|
5645
5427
|
enabled: boolean;
|
|
5646
5428
|
readonly _item: SlopeAnnotation;
|
|
5429
|
+
/**
|
|
5430
|
+
* Because slope data comes from the 3D model, there is no state machine.
|
|
5431
|
+
* Call {@link add} directly with the computed slope values:
|
|
5432
|
+
* ```ts
|
|
5433
|
+
* slopes.add(drawing, { position, direction, slope, style: "default" });
|
|
5434
|
+
* ```
|
|
5435
|
+
*/
|
|
5647
5436
|
constructor(components: Components);
|
|
5648
5437
|
pickHandle(_drawing: TechnicalDrawing, _ray: THREE.Ray, _threshold?: number): {
|
|
5649
5438
|
uuid: string;
|
|
@@ -5681,52 +5470,51 @@ declare interface SlopeAnnotationSystem {
|
|
|
5681
5470
|
/** How the slope value is displayed in the text label. */
|
|
5682
5471
|
export declare type SlopeFormat = "percentage" | "ratio" | "degrees";
|
|
5683
5472
|
|
|
5684
|
-
/**
|
|
5685
|
-
* A single technical drawing — the core spatial aggregate.
|
|
5686
|
-
*
|
|
5687
|
-
* Brings together:
|
|
5688
|
-
* - A {@link three} (`THREE.Group`) that anchors the drawing in world space.
|
|
5689
|
-
* All 2D geometry (projection lines, dimensions) must be added as children of
|
|
5690
|
-
* this group so they inherit its world transform.
|
|
5691
|
-
* - A collection of {@link viewports}, each defining an orthographic framing
|
|
5692
|
-
* window and owning a camera that is itself a child of the container.
|
|
5693
|
-
*
|
|
5694
|
-
* Moving or rotating the container repositions the entire drawing — including
|
|
5695
|
-
* all its viewport cameras — in the 3D world without affecting any local
|
|
5696
|
-
* coordinates.
|
|
5697
|
-
*
|
|
5698
|
-
* ---
|
|
5699
|
-
*
|
|
5700
|
-
* ### Rotation convention
|
|
5701
|
-
*
|
|
5702
|
-
* The drawing projects geometry along its **local −Y axis**. The drawing
|
|
5703
|
-
* plane is the local **XZ plane** (Y = 0).
|
|
5704
|
-
*
|
|
5705
|
-
* When rotating `drawing.three`, two constraints must hold at the same time:
|
|
5706
|
-
*
|
|
5707
|
-
* 1. **Projection direction** — local −Y must point toward the surface you
|
|
5708
|
-
* want to capture.
|
|
5709
|
-
* 2. **Text orientation** — local +X must point toward the right side of the
|
|
5710
|
-
* screen when the drawing is viewed from the projection direction.
|
|
5711
|
-
* Violating this causes annotations and dimension text to appear mirrored.
|
|
5712
|
-
*
|
|
5713
|
-
* For the six standard orthographic views, use {@link orientTo} — it enforces
|
|
5714
|
-
* both constraints with a single call:
|
|
5715
|
-
*
|
|
5716
|
-
* ```ts
|
|
5717
|
-
* drawing.orientTo(new THREE.Vector3(0, -1, 0)); // top / plan
|
|
5718
|
-
* drawing.orientTo(new THREE.Vector3(0, 0, -1)); // front elevation
|
|
5719
|
-
* ```
|
|
5720
|
-
*
|
|
5721
|
-
* ---
|
|
5722
|
-
*
|
|
5723
|
-
* Typically created via {@link TechnicalDrawings.create}.
|
|
5724
|
-
*/
|
|
5473
|
+
/** A single technical drawing — the core spatial aggregate. */
|
|
5725
5474
|
export declare class TechnicalDrawing {
|
|
5726
5475
|
/** Unique identifier for this drawing instance. */
|
|
5727
5476
|
readonly uuid: string;
|
|
5728
5477
|
private readonly _raycaster;
|
|
5729
5478
|
private readonly _components;
|
|
5479
|
+
/**
|
|
5480
|
+
* Brings together:
|
|
5481
|
+
* - A {@link three} (`THREE.Group`) that anchors the drawing in world space.
|
|
5482
|
+
* All 2D geometry (projection lines, dimensions) must be added as children of
|
|
5483
|
+
* this group so they inherit its world transform.
|
|
5484
|
+
* - A collection of {@link viewports}, each defining an orthographic framing
|
|
5485
|
+
* window and owning a camera that is itself a child of the container.
|
|
5486
|
+
*
|
|
5487
|
+
* Moving or rotating the container repositions the entire drawing — including
|
|
5488
|
+
* all its viewport cameras — in the 3D world without affecting any local
|
|
5489
|
+
* coordinates.
|
|
5490
|
+
*
|
|
5491
|
+
* ---
|
|
5492
|
+
*
|
|
5493
|
+
* ### Rotation convention
|
|
5494
|
+
*
|
|
5495
|
+
* The drawing projects geometry along its **local −Y axis**. The drawing
|
|
5496
|
+
* plane is the local **XZ plane** (Y = 0).
|
|
5497
|
+
*
|
|
5498
|
+
* When rotating `drawing.three`, two constraints must hold at the same time:
|
|
5499
|
+
*
|
|
5500
|
+
* 1. **Projection direction** — local −Y must point toward the surface you
|
|
5501
|
+
* want to capture.
|
|
5502
|
+
* 2. **Text orientation** — local +X must point toward the right side of the
|
|
5503
|
+
* screen when the drawing is viewed from the projection direction.
|
|
5504
|
+
* Violating this causes annotations and dimension text to appear mirrored.
|
|
5505
|
+
*
|
|
5506
|
+
* For the six standard orthographic views, use {@link orientTo} — it enforces
|
|
5507
|
+
* both constraints with a single call:
|
|
5508
|
+
*
|
|
5509
|
+
* ```ts
|
|
5510
|
+
* drawing.orientTo(new THREE.Vector3(0, -1, 0)); // top / plan
|
|
5511
|
+
* drawing.orientTo(new THREE.Vector3(0, 0, -1)); // front elevation
|
|
5512
|
+
* ```
|
|
5513
|
+
*
|
|
5514
|
+
* ---
|
|
5515
|
+
*
|
|
5516
|
+
* Typically created via {@link TechnicalDrawings.create}.
|
|
5517
|
+
*/
|
|
5730
5518
|
constructor(components: Components);
|
|
5731
5519
|
/**
|
|
5732
5520
|
* The world that hosts this drawing. Set automatically by
|
|
@@ -5923,67 +5711,7 @@ export declare class TechnicalDrawing {
|
|
|
5923
5711
|
dispose(): void;
|
|
5924
5712
|
}
|
|
5925
5713
|
|
|
5926
|
-
/**
|
|
5927
|
-
* Visualises a {@link TechnicalDrawing}'s projection volume in the 3D scene
|
|
5928
|
-
* and exposes three gizmo anchors for interactive control.
|
|
5929
|
-
*
|
|
5930
|
-
* Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
|
|
5931
|
-
* add it as a child of `drawing.three` so it inherits the drawing's world
|
|
5932
|
-
* transform automatically.
|
|
5933
|
-
*
|
|
5934
|
-
* It renders on **layer 0** — visible to the perspective camera, invisible to
|
|
5935
|
-
* the drawing's orthographic cameras (which only render layer 1).
|
|
5936
|
-
*
|
|
5937
|
-
* The helper draws three things:
|
|
5938
|
-
* - A rectangular frame on the drawing plane (Y = 0 in drawing local space).
|
|
5939
|
-
* - Four pillar lines dropping from each corner along the projection direction
|
|
5940
|
-
* (local −Y) to the far boundary.
|
|
5941
|
-
* - A matching rectangle at the far boundary.
|
|
5942
|
-
*
|
|
5943
|
-
* ### Interactive control via gizmos
|
|
5944
|
-
*
|
|
5945
|
-
* Three `THREE.Object3D` anchors are exposed for `TransformControls`:
|
|
5946
|
-
*
|
|
5947
|
-
* | Anchor | Controls | Constrained axis |
|
|
5948
|
-
* |---|---|---|
|
|
5949
|
-
* | {@link farHandle} | `drawing.far` | local Y |
|
|
5950
|
-
* | {@link widthHandle} | {@link width} (symmetric) | local X |
|
|
5951
|
-
* | {@link heightHandle} | {@link height} (symmetric) | local Z |
|
|
5952
|
-
*
|
|
5953
|
-
* Use the corresponding `attach*Gizmo` methods instead of configuring the
|
|
5954
|
-
* gizmos manually — they enforce the correct axis constraints, local space,
|
|
5955
|
-
* and change listeners automatically:
|
|
5956
|
-
*
|
|
5957
|
-
* ```ts
|
|
5958
|
-
* const helper = new TechnicalDrawingHelper(drawing);
|
|
5959
|
-
* helper.width = 20;
|
|
5960
|
-
* helper.height = 15;
|
|
5961
|
-
* drawing.three.add(helper);
|
|
5962
|
-
*
|
|
5963
|
-
* // Main gizmo — full translate + rotate on drawing.three
|
|
5964
|
-
* const mainGizmo = new TransformControls(camera, domElement);
|
|
5965
|
-
* mainGizmo.attach(drawing.three);
|
|
5966
|
-
* scene.add(mainGizmo);
|
|
5967
|
-
*
|
|
5968
|
-
* // Depth gizmo — controls drawing.far
|
|
5969
|
-
* const farGizmo = new TransformControls(camera, domElement);
|
|
5970
|
-
* scene.add(farGizmo);
|
|
5971
|
-
* helper.attachFarGizmo(farGizmo);
|
|
5972
|
-
*
|
|
5973
|
-
* // Width gizmo
|
|
5974
|
-
* const widthGizmo = new TransformControls(camera, domElement);
|
|
5975
|
-
* scene.add(widthGizmo);
|
|
5976
|
-
* helper.attachWidthGizmo(widthGizmo);
|
|
5977
|
-
*
|
|
5978
|
-
* // Height gizmo
|
|
5979
|
-
* const heightGizmo = new TransformControls(camera, domElement);
|
|
5980
|
-
* scene.add(heightGizmo);
|
|
5981
|
-
* helper.attachHeightGizmo(heightGizmo);
|
|
5982
|
-
* ```
|
|
5983
|
-
*
|
|
5984
|
-
* Call {@link update} after changing {@link width}, {@link height}, or
|
|
5985
|
-
* `drawing.far` programmatically to rebuild the geometry.
|
|
5986
|
-
*/
|
|
5714
|
+
/** Visualises a {@link TechnicalDrawing}'s projection volume in the 3D scene and exposes three gizmo anchors for interactive control. */
|
|
5987
5715
|
export declare class TechnicalDrawingHelper extends THREE.Group {
|
|
5988
5716
|
private readonly _drawing;
|
|
5989
5717
|
private readonly _topFrame;
|
|
@@ -6024,6 +5752,64 @@ export declare class TechnicalDrawingHelper extends THREE.Group {
|
|
|
6024
5752
|
* manipulate this object's position directly.
|
|
6025
5753
|
*/
|
|
6026
5754
|
readonly heightHandle: THREE.Object3D<THREE.Object3DEventMap>;
|
|
5755
|
+
/**
|
|
5756
|
+
* Works exactly like the built-in Three.js helpers (e.g. `THREE.CameraHelper`):
|
|
5757
|
+
* add it as a child of `drawing.three` so it inherits the drawing's world
|
|
5758
|
+
* transform automatically.
|
|
5759
|
+
*
|
|
5760
|
+
* It renders on **layer 0** — visible to the perspective camera, invisible to
|
|
5761
|
+
* the drawing's orthographic cameras (which only render layer 1).
|
|
5762
|
+
*
|
|
5763
|
+
* The helper draws three things:
|
|
5764
|
+
* - A rectangular frame on the drawing plane (Y = 0 in drawing local space).
|
|
5765
|
+
* - Four pillar lines dropping from each corner along the projection direction
|
|
5766
|
+
* (local −Y) to the far boundary.
|
|
5767
|
+
* - A matching rectangle at the far boundary.
|
|
5768
|
+
*
|
|
5769
|
+
* ### Interactive control via gizmos
|
|
5770
|
+
*
|
|
5771
|
+
* Three `THREE.Object3D` anchors are exposed for `TransformControls`:
|
|
5772
|
+
*
|
|
5773
|
+
* | Anchor | Controls | Constrained axis |
|
|
5774
|
+
* |---|---|---|
|
|
5775
|
+
* | {@link farHandle} | `drawing.far` | local Y |
|
|
5776
|
+
* | {@link widthHandle} | {@link width} (symmetric) | local X |
|
|
5777
|
+
* | {@link heightHandle} | {@link height} (symmetric) | local Z |
|
|
5778
|
+
*
|
|
5779
|
+
* Use the corresponding `attach*Gizmo` methods instead of configuring the
|
|
5780
|
+
* gizmos manually — they enforce the correct axis constraints, local space,
|
|
5781
|
+
* and change listeners automatically:
|
|
5782
|
+
*
|
|
5783
|
+
* ```ts
|
|
5784
|
+
* const helper = new TechnicalDrawingHelper(drawing);
|
|
5785
|
+
* helper.width = 20;
|
|
5786
|
+
* helper.height = 15;
|
|
5787
|
+
* drawing.three.add(helper);
|
|
5788
|
+
*
|
|
5789
|
+
* // Main gizmo — full translate + rotate on drawing.three
|
|
5790
|
+
* const mainGizmo = new TransformControls(camera, domElement);
|
|
5791
|
+
* mainGizmo.attach(drawing.three);
|
|
5792
|
+
* scene.add(mainGizmo);
|
|
5793
|
+
*
|
|
5794
|
+
* // Depth gizmo — controls drawing.far
|
|
5795
|
+
* const farGizmo = new TransformControls(camera, domElement);
|
|
5796
|
+
* scene.add(farGizmo);
|
|
5797
|
+
* helper.attachFarGizmo(farGizmo);
|
|
5798
|
+
*
|
|
5799
|
+
* // Width gizmo
|
|
5800
|
+
* const widthGizmo = new TransformControls(camera, domElement);
|
|
5801
|
+
* scene.add(widthGizmo);
|
|
5802
|
+
* helper.attachWidthGizmo(widthGizmo);
|
|
5803
|
+
*
|
|
5804
|
+
* // Height gizmo
|
|
5805
|
+
* const heightGizmo = new TransformControls(camera, domElement);
|
|
5806
|
+
* scene.add(heightGizmo);
|
|
5807
|
+
* helper.attachHeightGizmo(heightGizmo);
|
|
5808
|
+
* ```
|
|
5809
|
+
*
|
|
5810
|
+
* Call {@link update} after changing {@link width}, {@link height}, or
|
|
5811
|
+
* `drawing.far` programmatically to rebuild the geometry.
|
|
5812
|
+
*/
|
|
6027
5813
|
constructor(drawing: DrawingProjectionSource);
|
|
6028
5814
|
/**
|
|
6029
5815
|
* Rebuilds the helper geometry and repositions all gizmo anchors to match
|
|
@@ -6066,30 +5852,7 @@ export declare class TechnicalDrawingHelper extends THREE.Group {
|
|
|
6066
5852
|
dispose(): void;
|
|
6067
5853
|
}
|
|
6068
5854
|
|
|
6069
|
-
/**
|
|
6070
|
-
* OBC Component that creates and manages {@link TechnicalDrawing} instances.
|
|
6071
|
-
*
|
|
6072
|
-
* A TechnicalDrawing is a 2D drawing plane that lives in 3D world space.
|
|
6073
|
-
* It contains projection lines and dimension annotations (layer 1 geometry)
|
|
6074
|
-
* framed by one or more orthographic {@link DrawingViewport}s.
|
|
6075
|
-
*
|
|
6076
|
-
* The drawing's `container` (a `THREE.Group`) can be freely transformed in the
|
|
6077
|
-
* 3D world — all viewports and geometry move together as a single unit.
|
|
6078
|
-
*
|
|
6079
|
-
* @example
|
|
6080
|
-
* ```ts
|
|
6081
|
-
* const techDrawings = components.get(TechnicalDrawings);
|
|
6082
|
-
* const drawing = techDrawings.create(world);
|
|
6083
|
-
*
|
|
6084
|
-
* // Add layer-1 geometry to the drawing
|
|
6085
|
-
* const lines = new THREE.LineSegments(geometry, material);
|
|
6086
|
-
* lines.layers.set(1);
|
|
6087
|
-
* drawing.three.add(lines);
|
|
6088
|
-
*
|
|
6089
|
-
* // Add viewports
|
|
6090
|
-
* const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
|
|
6091
|
-
* ```
|
|
6092
|
-
*/
|
|
5855
|
+
/** OBC Component that creates and manages {@link TechnicalDrawing} instances. */
|
|
6093
5856
|
export declare class TechnicalDrawings extends Component implements Disposable_2 {
|
|
6094
5857
|
/**
|
|
6095
5858
|
* A unique identifier for the component.
|
|
@@ -6107,6 +5870,28 @@ export declare class TechnicalDrawings extends Component implements Disposable_2
|
|
|
6107
5870
|
readonly systems: FRAGS.DataMap<Function, AnnotationSystem<any>>;
|
|
6108
5871
|
/** {@link Disposable.onDisposed} */
|
|
6109
5872
|
readonly onDisposed: Event_2<unknown>;
|
|
5873
|
+
/**
|
|
5874
|
+
* A TechnicalDrawing is a 2D drawing plane that lives in 3D world space.
|
|
5875
|
+
* It contains projection lines and dimension annotations (layer 1 geometry)
|
|
5876
|
+
* framed by one or more orthographic {@link DrawingViewport}s.
|
|
5877
|
+
*
|
|
5878
|
+
* The drawing's `container` (a `THREE.Group`) can be freely transformed in the
|
|
5879
|
+
* 3D world — all viewports and geometry move together as a single unit.
|
|
5880
|
+
*
|
|
5881
|
+
* @example
|
|
5882
|
+
* ```ts
|
|
5883
|
+
* const techDrawings = components.get(TechnicalDrawings);
|
|
5884
|
+
* const drawing = techDrawings.create(world);
|
|
5885
|
+
*
|
|
5886
|
+
* // Add layer-1 geometry to the drawing
|
|
5887
|
+
* const lines = new THREE.LineSegments(geometry, material);
|
|
5888
|
+
* lines.layers.set(1);
|
|
5889
|
+
* drawing.three.add(lines);
|
|
5890
|
+
*
|
|
5891
|
+
* // Add viewports
|
|
5892
|
+
* const vp = drawing.viewports.create({ left: -1, right: 5, top: 1, bottom: -4 });
|
|
5893
|
+
* ```
|
|
5894
|
+
*/
|
|
6110
5895
|
constructor(components: Components);
|
|
6111
5896
|
/**
|
|
6112
5897
|
* Returns the global singleton instance of the given system, creating it if it
|
|
@@ -6280,9 +6065,6 @@ export declare class Topic implements BCFTopic {
|
|
|
6280
6065
|
|
|
6281
6066
|
/**
|
|
6282
6067
|
* Whether this component manages its interaction through an explicit state machine.
|
|
6283
|
-
* The machine is the single source of truth: the system can only be in one state at
|
|
6284
|
-
* a time, and every transition is deterministic given the current state and the event.
|
|
6285
|
-
*
|
|
6286
6068
|
* @template TState - Discriminated union of all valid states (each with a `kind` string).
|
|
6287
6069
|
* @template TEvent - Discriminated union of all accepted events (each with a `type` string).
|
|
6288
6070
|
*/
|
|
@@ -6302,13 +6084,7 @@ export declare interface Transitionable<TState extends {
|
|
|
6302
6084
|
readonly onMachineStateChanged: Event_2<TState>;
|
|
6303
6085
|
}
|
|
6304
6086
|
|
|
6305
|
-
/**
|
|
6306
|
-
* Built-in {@link DimensionUnit} presets.
|
|
6307
|
-
*
|
|
6308
|
-
* ```ts
|
|
6309
|
-
* style.unit = OBC.Units.mm;
|
|
6310
|
-
* ```
|
|
6311
|
-
*/
|
|
6087
|
+
/** Built-in {@link DimensionUnit} presets. */
|
|
6312
6088
|
export declare const Units: {
|
|
6313
6089
|
readonly m: {
|
|
6314
6090
|
readonly factor: 1;
|