ObjectSet Class
An ObjectSet is a set of Object.
Overview
- Supports addition and removal of Object by instance, ID or IFC type.
- Can be queried for the boundary and center of its Object.
- Use with a ClickSelectObjects to add and remove Object with mouse clicks.
- Can be used to mask Object for Effects such as HighlightEffect, XRayEffect and IsolateEffect.
Example
Highlighting an ObjectSet
In this example we create four Object, then add two of them to an ObjectSet.
Then we apply a HighlightEffect to the ObjectSet, causing
it's Object to become highlighted while the other two Object remain un-highlighted.
// Create a Viewer
var viewer = new BIMSURFER.Viewer({ element: "myDiv" });
// Create a Camera
var camera = new BIMSURFER.Camera(viewer, {
eye: [30, 20, -30]
});
// Spin the camera
viewer.on("tick", function () {
camera.rotateEyeY(0.2);
});
// Create a CameraControl so we can move the Camera
var cameraControl = new BIMSURFER.CameraControl(viewer, {
camera: camera
});
// Create an AmbientLight
var ambientLight = new BIMSURFER.AmbientLight(viewer, {
color: [0.7, 0.7, 0.7]
});
// Create a DirLight
var dirLight1 = new BIMSURFER.DirLight(viewer, {
color: [0.6, 0.9, 0.9],
dir: [1.0, 0.0, 0.0],
space: "view"
});
// Create a DirLight
var dirLight2 = new BIMSURFER.DirLight(viewer, {
color: [0.6, 0.9, 0.9],
dir: [-0.5, 0.0, -1.0],
space: "view"
});
// Create a BoxGeometry
var geometry = new BIMSURFER.BoxGeometry(viewer, {
id: "myGeometry"
});
// Create some Objects
// Share the BoxGeometry among them
var object1 = new BIMSURFER.Object(viewer, {
type: "IfcRoof",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([-8, 0, -8])
});
var object2 = new BIMSURFER.Object(viewer, {
type: "IfcDistributionFlowElement",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([8, 0, -8])
});
var object3 = new BIMSURFER.Object(viewer, {
type: "IfcDistributionFlowElement",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([-8, 0, 8])
});
var object4 = new BIMSURFER.Object(viewer, {
type: "IfcRoof",
geometries: [ geometry ],
matrix: BIMSURFER.math.translationMat4v([8, 0, 8])
});
// Create an ObjectSet that initially contains one of our Objects
var objectSet = new BIMSURFER.ObjectSet(viewer, {
objects: [object1 ]
});
// Apply a Highlight effect to the ObjectSet, which causes the
// Object in the ObjectSet to become highlighted.
var highlight = new BIMSURFER.HighlightEffect(viewer, {
objectSet: objectSet
});
// Add a second Object to the ObjectSet, causing the Highlight to now render
// that Object as highlighted also
objectSet.addObjects([object3]);
Boundaries
TODO
Constructor
ObjectSet
-
[viewer]
-
[cfg]
Parameters:
-
[viewer]
Viewer optionalParent Viewer.
-
[cfg]
optionalConfigs
-
[id]
String optionalOptional ID, unique among all components in the parent viewer, generated automatically when omitted.
-
[meta]
String:Object optionalOptional map of user-defined metadata to attach to this Selection.
-
[objects]
Array of String | Object optional} Array of Object IDs or instances.
-
Item Index
Methods
Properties
Methods
addObjectIds
-
objects
Adds Object by ID to this ObjectSet.
The Object must be in the same Viewer as this ObjectSet.
Fires an updated event.
Parameters:
-
objects
Array of StringArray of Object IDs.
addObjects
-
objects
Adds Object instances to this ObjectSet.
The Object must be in the same Viewer as this ObjectSet.
Fires an updated event.
Parameters:
-
objects
Array of ObjectsArray of Object instances.
addTypes
-
objects
Adds Object by IFC type to this ObjectSet.
The Object must be in the same Viewer as this ObjectSet.
Fires an updated event.
Parameters:
-
objects
Array of StringArray of IFC types.
destroy
()
error
-
message
Logs an error for this component to the JavaScript console.
The console message will have this format: [ERROR] <component id>: <message>
Parameters:
-
message
StringThe message to log
fire
-
event
-
value
-
[forget=false]
Fires an event on this component.
Notifies existing subscribers to the event, retains the event to give to any subsequent notifications on that location as they are made.
Parameters:
-
event
StringThe event type name
-
value
ObjectThe event
-
[forget=false]
Boolean optionalWhen true, does not retain for subsequent subscribers
log
-
message
Logs a console debugging message for this component.
The console message will have this format: [LOG] <component id>: <message>
Parameters:
-
message
StringThe message to log
off
-
handle
Parameters:
-
handle
StringSubscription handle
on
-
event
-
callback
-
[scope=this]
Subscribes to an event on this component.
The callback is be called with this component as scope.
Parameters:
-
event
StringPublication event
-
callback
FunctionCalled when fresh data is available at the event
-
[scope=this]
Object optionalScope for the callback
Returns:
Handle to the subscription, which may be used to unsubscribe with {@link #off}.
once
-
event
-
callback
-
[scope=this]
Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is handled.
Parameters:
-
event
StringData event to listen to
-
callback
Function(data)Called when fresh data is available at the event
-
[scope=this]
Object optionalScope for the callback
removeObjectIds
-
objects
Removes Object by ID from this ObjectSet.
The Object must be in the same Viewer as this ObjectSet.
Fires an updated event.
Parameters:
-
objects
Array of StringArray of Object IDs.
removeObjects
-
objects
Removes Object instances from this ObjectSet.
The Object must be in the same Viewer as this ObjectSet.
Fires an updated event.
Parameters:
-
objects
Array of ObjectsArray of Object instances.
removeTypes
-
objects
Removes Object by IFC type from this ObjectSet.
The Object must be in the same Viewer as this ObjectSet.
Fires an updated event.
Parameters:
-
objects
Array of StringArray of IFC types.
warn
-
message
Logs a warning for this component to the JavaScript console.
The console message will have this format: [WARN] <component id>: <message>
Parameters:
-
message
StringThe message to log
withObjects
-
callback
Iterates with a callback over the Object in this ObjectSet.
Parameters:
-
callback
FunctionCallback called for each Object.
Properties
boundary
The axis-aligned World-space boundary of the Object within this ObjectSet.
center
The World-space center of the Object within this ObjectSet.
className
String
final
JavaScript class name for this Component.
destroyed
Boolean
True as soon as this Component has been destroyed
Items in this map
Unknown
metadata
Object
Metadata on this component.
numObjects
Number
The number of Objects within this ObjectSet.
objects
String:Object
The Objects within this ObjectSet, mapped to their IDs.
Fires an updated event on change.
Events
destroyed
Fired when this Component is destroyed.
updated
Fired whenever Object are added or removed from this ObjectSet.
Note that this event also indicates that the ObjectSet's boundary and center will have updated, accordingly.
Event Payload:
-
e
ObjectThe event
-
[removed]
optionalInfo on removed Objects
-
objectIds
Array of StringIDs of removed Objects, when they were removed by ID -
types
Array of StringIFC types of removed Objects, when they were removed by IFC type
-
-
[added]
optionalInfo on added Objects
-
objectIds
Array of StringIDs of added Objects, when they were added by ID -
types
Array of StringIFC types of added Objects, when they were added by IFC type
-
-
-
Boolean
Object[cleared