Skip to content

Support property sets in XKT and metadata #712

@xeolabs

Description

@xeolabs

See the tutorial for more information.

UML class (4)

Usage

import {Viewer, XKTLoaderPlugin} from "../dist/xeokit-sdk.min.es.js";

const viewer = new Viewer({
    canvasId: "myCanvas"
});

const xktLoader = new XKTLoaderPlugin(viewer);

const model = xktLoader.load({
    id: "myModel",
    src: "rac_sample_project.ifc.xkt"
});

model.on("loaded", ()=> {

    const metaModel = viewer.metaScene.metaModels["myModel"];

    console.log(metaModel.id); // "myModel"
    console.log(metaModel.projectId); // 131073
    console.log(metaModel.revisionId); // 65539
    console.log(metaModel.author); // "Autodesk"
    console.log(metaModel.createdAt); // eg. "24 August, 2021"
    console.log(metaModel.creatingApplication); // eg. "Revit"
    console.log(metaModel.schema); // eg. "IFC4"
    console.log(metaModel.propertySets); // [..]
    console.log(metaModel.rootMetaObject}; // MetaObject

    const stairWayMetaObject = metaModel.metaObjects["09H8bZdNrFqAgGbw11nlyy"];

    console.log(stairWayMetaObject.id); // "09H8bZdNrFqAgGbw11nlyy"
    console.log(stairWayMetaObject.name); // "Escalera:150mm max riser 300mm tread"
    console.log(stairWayMetaObject.type); // "IfcStair"

    // Get the IDs of the objects that comprise our stairway
    const stairwayObjectIds = stairWayMetaObject.getObjectIDsInSubtree();

    // Make all objects X-rayed, then undo X-ray on our stairway
    viewer.scene.setObjectsXRayed(viewer.scene.objectIds, true); 
    viewer.scene.setObjectsXRayed(stairwayObjectIds, false);

    // Hide all objects, then show our stairway
    viewer.scene.setObjectsVisible(viewer.scene.objectIds, false);
    viewer.scene.setObjectsVisible(stairwayObjectIds, true);

   const railingMetaObject = metaModel.metaObjects["0LUOqC48DCsBp1FbwV8J5Y"];

    console.log(railingMetaObject.id); // "0LUOqC48DCsBp1FbwV8J5Y"
    console.log(railingMetaObject.name); // "Barandilla:900mm Pipe:173061"
    console.log(railingMetaObject.type); // "IfcRailing"
    console.log(railingMetaObject.parent); // "09H8bZdNrFqAgGbw11nlyy"

    const propertySet0 = railingMetaObject.propertySets[0];

    console.log(propertySet0.name); // "Pset_QuantityTakeOff"
    console.log(propertySet0.id); // "1ZmUBg2f17Gxz3xZ52e7U9"

    const property0 = propertySet0.properties[0];

    console.log(property0.name); // "Handrail"
    console.log(property0.id); // "Gxz3xZ52e7U91ZmUBg2f17"
    console.log(property0.type); // 2
    console.log(property0.value); // "900mm Pipe"
    console.log(property0.valueType); // 4
});

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions