# How to get the node attribute or userdata?

**URL:** <https://forum.techsoft3d.com/t/how-to-get-the-node-attribute-or-userdata/4911>\
**Category:** HOOPS Visualize Web\
**Tags:** how-to\
**Created:** [September 23, 2025, 11:02am UTC](https://forum.techsoft3d.com/t/how-to-get-the-node-attribute-or-userdata/4911 "2025-09-23T11:02:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![38422985](https://avatars.discourse-cdn.com/v4/letter/3/34f0e0/32.png) [@38422985](https://forum.techsoft3d.com/u/38422985)\
**Post date:** [September 23, 2025, 11:02am UTC](https://forum.techsoft3d.com/t/how-to-get-the-node-attribute-or-userdata/4911/1 "2025-09-23T11:02:52Z")

</div>

I can get the face attribute，but how can i get the node attribute or userdata?

The front-end code:

```
                    const nodeSelectionItem = this.\_hwv.selectionManager.getFirst();

                    console.log("getSelectionType:",nodeSelectionItem.getSelectionType());

                    console.log("nodeId:",nodeSelectionItem.getNodeId());

                    const nodeId = nodeSelectionItem.getNodeId();

                    const indices = await this.\_hwv.model.getNodeUserDataIndices(nodeId);

                    console.log("User data array:",indices);

                    for (const index of indices) {

                            const data = await this.\_hwv.model.getNodeUserData(nodeId, index); 

                            const intArray = new Int32Array(data.buffer);

                            console.log("User data array:", intArray);

                    }

                    const faceId = nodeSelectionItem.getFaceEntity().getCadFaceIndex();

                    console.log("faceId:",faceId);

                    const faceAttributes = await this.\_hwv.model.getFaceAttributes(nodeId,faceId);

                    faceAttributes.attributes.forEach(attr => {

                            console.log("femapId:", attr.getValue());

                    });

```

The code of scs generator :

// Author measurement data  
uint32\_t part\_id = \_assembly\_tree.CreatePart();  
\_assembly\_tree.SetPart(child\_node, part\_id);  
uint32\_t body\_id = 0;  
\_assembly\_tree.CreateAndAddBody(part\_id, body\_id, SC::Store::Tessellation);

```auto
        // Add SolidEdge ID to sc
        auto FaceType = SolidEdgeGeometry::FeatureTopologyQueryTypeConstants::igQueryAll;
        SolidEdgeGeometry::BodyPtr pBody = (SolidEdgeGeometry::BodyPtr)pSEModel->Body;
        SolidEdgeGeometry::FacesPtr faces = (SolidEdgeGeometry::FacesPtr)pBody->Faces[FaceType];
        //bool bb = _assembly_tree.AddAttribute(child_node, "body_name",
        // SC::Store::AssemblyTree::AttributeType::AttributeTypeString, pSEModel->GetBodyName());
        std::string userData = "Hello, this is user data";
        const uint8_t* dataBegin = reinterpret_cast<const uint8_t*>(userData.data());
        const uint8_t* dataEnd = dataBegin + userData.size();
        bool bb = false;
        bb = _assembly_tree.AddUserData(child_node, 1, dataBegin, dataEnd);
        for (int i = 1; i <= faces->Count; i++) {
            int faceId = ((SolidEdgeGeometry::FacePtr)faces->Item(i))->ID;
            std::string str = std::to_string(faceId);
            _assembly_tree.AddFaceAttribute(body_id, i - 1, "femap_id", 
                SC::Store::AssemblyTree::AttributeType::AttributeTypeInt, str.c_str());
        }

```

---

<div class="post-metadata">

**Author:** ![tino](https://avatars.discourse-cdn.com/v4/letter/t/9dc877/32.png) [@tino](https://forum.techsoft3d.com/u/tino)\
**Post date:** [September 23, 2025, 7:29pm UTC](https://forum.techsoft3d.com/t/how-to-get-the-node-attribute-or-userdata/4911/2 "2025-09-23T19:29:14Z")

</div>

In your Authoring (server) code, you have this:

```auto
std::string userData = "Hello, this is user data";
        const uint8_t* dataBegin = reinterpret_cast<const uint8_t*>(userData.data());
        const uint8_t* dataEnd = dataBegin + userData.size();

        bool bb = false;
        bb = assembly_tree.AddUserData(child_node, 1, dataBegin, dataEnd);

```

So you are adding user data to `child_node` which is different from the body instance. With this is mind, you need to get the parent of the body instance when a selection is made:

```auto
hwv.setCallbacks({
    selectionArray: async function (selections) {
        if (selections.length > 0) {
            for (const selectionEvent of selections) {
                let selection = selectionEvent.getSelection();
                let nodeId = selection.getNodeId();
				console.log("Selected Node: " + nodeId);
				let nodeParent;
				if (Communicator.NodeType[hwv.model.getNodeType(nodeId)] == Communicator.NodeType[3]) {
					nodeParent = hwv.model.getNodeParent(nodeId);
					console.log("Selected Node Parent: " + nodeParent);
					
					let userDataIndices = hwv.model.getNodeUserDataIndices(nodeParent);
					
					for (const value of userDataIndices) {
						console.log("user data indices: " + value);
						console.log(JSON.stringify(hwv.model.getNodeUserData(nodeParent, value)));
					}
					
				}
                
            }
        }
    },
});

```

The result is:

 ![image](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/1/1a7013255bef06fa7e0fb9a08367317551d59011.png)

Note that the character codes are the same as “Hello, this is user data”:

```auto
{
  "0":72, // 'H'
  "1":101, // 'e'
  "2":108, // 'l'
  "3":108, // 'l'
  "4":111, // 'o'
  "5":44, // ','
  "6":32, // ' '
  "7":116, // 't'
  "8":104, // 'h'
  "9":105, // 'i'
  "10":115, // 's'
  "11":32, // ' '
  "12":105, // 'i'
  "13":115, // 's'
  "14":32, // ' '
  "15":117, // 'u'
  "16":115, // 's'
  "17":101, // 'e'
  "18":114, // 'r'
  "19":32, // ' '
  "20":100, // 'd'
  "21":97, // 'a'
  "22":116, // 't'
  "23":97 // 'a'
}

```

---

<div class="post-metadata">

**Author:** ![38422985](https://avatars.discourse-cdn.com/v4/letter/3/34f0e0/32.png) [@38422985](https://forum.techsoft3d.com/u/38422985)\
**Post date:** [September 25, 2025, 1:20am UTC](https://forum.techsoft3d.com/t/how-to-get-the-node-attribute-or-userdata/4911/3 "2025-09-25T01:20:03Z")

</div>

Hello，Tino：

Thank you very much for your guidance!

You’re truly truly a sage!

Best wishes！

Jenson
