# Can we use hoops for interference checks? What kind of data of the nodes need to be exported?

**URL:** <https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018>\
**Category:** HOOPS Visualize Web\
**Tags:** how-to\
**Created:** [November 27, 2025, 1:42am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018 "2025-11-27T01:42:44Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [November 27, 2025, 1:42am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/1 "2025-11-27T01:42:44Z")

</div>

If hoops does not support static interference detection for models? So, how do we implement this static interference function? For example, how do we export the data of the interference nodes, and which third-party library should be used for the interference check of the model nodes?

---

<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:** [November 27, 2025, 4:33pm UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/2 "2025-11-27T16:33:50Z")

</div>

> [@WangFuYuan199](#):
>
> static interference function

Can you please provide details on what this is exactly?

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [November 29, 2025, 1:48am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/3 "2025-11-29T01:48:19Z")

</div>

![image](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/b/b24602ddadeb152ce3a00257e4fcd215c8c95622.png)It’s similar to the check for volume overlap.  
As shown in the figure, in the model, the volumes of the two parts overlap. Then, can we use hoops to detect them and highlight the overlapping part?

---

<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:** [November 29, 2025, 6:18pm UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/4 "2025-11-29T18:18:58Z")

</div>

The closest analogue is the Clash Detection library:

> [@Clash Detection Library for HOOPS Communicator released](https://forum.techsoft3d.com/t/clash-detection-library-for-hoops-communicator-released/2149):
>
> Clash Detection Library for HOOPS Communicator The new Clash Manager library adds robust client and server-side clash detection capabilities to HOOPS Communicator, including support for both hard and soft (clearance) clashes and clash groups, among other features. You can learn more and download the library here:

Please be aware that this functionality is strictly provided as a **_proof-of-concept_ and it is not officially supported**. Its purpose is to serve as a point of origin for developers to explore their own custom implementation or assist in evaluating potentially adding a non-HOOPS third-party library.

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 1, 2025, 1:51am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/5 "2025-12-01T01:51:42Z")

</div>

OK. This is indeed very helpful. However, when I started to verify the problem, I found that if I traversed all the BodyInstances in the model and obtained their NodeProperties, and if there were too many nodes, the browser would crash directly. What’s the reason for this?  
And I have already performed the bounding box elimination first, then conducted the precise detection, and then compared each pair of nodes. If the model is very large or has tens of thousands of nodes, the comparison efficiency would be very low and it would directly crash and fail.

---

<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:** [December 1, 2025, 12:14pm UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/6 "2025-12-01T12:14:10Z")

</div>

Per the [GitHub repo overview](https://github.com/techsoft3d/ts3d-hc-clashmanager) states:

> _The code is optimized for building/AEC type of models (IFC, Revit, NW, DWG), and has not been widely tested with generic “CAD” models._

So it’s possible that you are overwhelming the algorithm given the very large CAD model.

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 3, 2025, 2:10am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/7 "2025-12-03T02:10:50Z")

</div>

OK, I understand. But I would like to ask if there is a way to calculate the distance between a known node and the nearest node in the model? And calculate the shortest distance

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 3, 2025, 6:49am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/8 "2025-12-03T06:49:19Z")

</div>

My data const interferenceJson = {  
“interference\_region”: {  
“vertices”: [  
-174.12316621171985, 0.0, -99.66778564453125,  
38.60649382245984, 0.0, -99.66778564453125,  
38.60649382245984, 20.0, -99.66778564453125,  
-174.12316621171985, 20.0, -99.66778564453125,  
-174.12316621171985, 0.0, 99.66777972333594,  
38.60649382245984, 0.0, 99.66777972333594,  
38.60649382245984, 20.0, 99.66777972333594,  
-174.12316621171985, 20.0, 99.66777972333594 ],  
“indices”:[0,1,2,0,2,3,4,5,6,4,6,7,0,1,5,0,5,4,2,3,7,2,7,6,0,3,7,0,7,4,1,2,6,1,6,5],  
“netMatrix”:[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]] }  
};

await drawInterferenceRegion(hwv.model, interferenceJson);

My approach: Why is the rendering not displayed on the page? It keeps reporting an error: Uncaught (in promise) TypeError: meshData.addFace is not a function async function drawInterferenceRegion(model, interferenceJson) {  
if (! interferenceJson || ! interferenceJson.interference\_region) {  
console.warn(“Error in JSON format of the interference area”); return;  
}

const region = interferenceJson.interference\_region;  
const vertices = region.vertices; // Flat Vertex Array const indices = region.indices; // Triangle Index const netMatrixArr = region.netMatrix; // 4x4 Matrix  
// 1️⃣ Expand the vertex array to explicitly list each triangle’s three vertices const expandedVertices = ;  
for (let i = 0; i \< indices.length; i++) {  
const idx = indices[i];  
expandedVertices.push(  
vertices[3_idx],  
vertices[3_idx + 1],  
vertices[3\*idx + 2]  
);  
}

// 2️⃣ Create MeshData const meshData = new Communicator.MeshData();  
meshData.addFace(expandedVertices, null, null); // Normal and color can be null meshData.setFaceWinding(Communicator.FaceWinding.Clockwise);

// 3️⃣ Create Mesh const meshId = await model.createMesh(meshData);

// 4️⃣ Construct the matrix const netMatrix = new Communicator.Matrix();  
netMatrix.setFromArray(netMatrixArr.flat());

// 5️⃣ Create MeshInstanceData const meshInstanceData = new Communicator.MeshInstanceData(  
meshId,  
netMatrix,  
null,  
Communicator.Color.create(255, 0, 0, 128), // Semi-transparent red  
Communicator.Color.create(0, 0, 0) // Black border line );

// 6️⃣ Create a Mesh instance and insert it into the scene const instanceNodeId = await model.createMeshInstance(meshInstanceData);  
console.log(“Interference area Mesh instance creation successful. Node ID:”, instanceNodeId); return instanceNodeId;  
}

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 3, 2025, 8:06am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/9 "2025-12-03T08:06:10Z")

</div>

I know why. But I’m wondering if there are any other ways to create it in HOOPSCommunicatorTemplate.html (the single-file template)?

If you are using this single-file template (which is usually the exported or packaged pure viewer), you cannot use these advanced APIs for dynamically creating and manipulating the mesh. If you need to use MeshData-related functions (such as dynamically creating meshes, modifying mesh instances, etc.), you must use the full version of the HOOPS Visualize Web SDK development environment instead of the single-file template. In summary: | Usage Scenario | Whether MeshData and createMesh() functions are supported |  
|----------------------------|---------------------------------------|  
| HOOPSCommunicatorTemplate.html (Single File Template) | Not Supported |  
| Complete HOOPS Visualize Web SDK Development Environment | Supported | If you want to use the dynamic grid feature in the single file template, it is recommended to switch to the full version SDK, or use the official provided development environment and sample projects

---

<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:** [December 3, 2025, 2:35pm UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/10 "2025-12-03T14:35:15Z")

</div>

The [monolithic HTML export](https://docs.techsoft3d.com/hoops/visualize-web/prog_guide/data_import/cad_conversion/converter_app/html-export.html#monolithic-html-export) is a self-contained, pre-processed HTML designed for offline viewing. As such, it is not designed for dynamic updates to the Web Viewer (such as, creating meshes).

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 5, 2025, 1:36am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/11 "2025-12-05T01:36:52Z")

</div>

Then, may I ask if this convert\_file.bat can be used in a batch mode to execute the conversion process?  
And multiple calls… Will there be any performance issues, such as memory usage or memory access out-of-bounds problems?

---

<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:** [December 5, 2025, 1:50am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/12 "2025-12-05T01:50:57Z")

</div>

Batch conversion is available, please see this section in our docs:

> **[XML Batch Conversion — HOOPS Visualize Web Documentation](https://docs.techsoft3d.com/hoops/visualize-web/prog_guide/data_import/cad_conversion/converter_app/xml-batch-conversion.html#xml-batch-conversion)**

An example XML file can be found in the directory _HOOPS\_Visualize\_Web\_2025.X.x\authoring\converter\example\sample\_batch.xml_

I don’t anticipate any performance issues with batch conversion.

Also, it would be preferable if a new thread is created if the topic is materially different from the original post (collision detection != monolithic HTML export != batch conversion). This helps keep the forum easier to search and threads easier to follow.

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 13, 2025, 3:08am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/13 "2025-12-13T03:08:23Z")

</div>

Hello, I used this library for collision detection, but it gave me a warning that the model version does not match. So, which version of Hoops Communicator is needed to use this library for detection?

 ![750dbb5b5f6ddfe02bba5f4c906ab437](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/d/d9085cd10c13e676936e1d21222d73603b4408a9.png)

---

<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:** [December 13, 2025, 12:02pm UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/14 "2025-12-13T12:02:19Z")

</div>

In the browser dev console, you can run this command:

```auto
hwv.getViewerVersionString();

```

The Web Viewer cannot load Stream Cache files converted by a more recent converter version than the version returned from the function.

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 18, 2025, 8:24am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/15 "2025-12-18T08:24:45Z")

</div>

Hello Tino, I used this integrated HTML to export the mesh grid of the model. However, when I tried to perform volume overlap (collision detection) in a third-party library such as OpenCascade, it prompted me that this grid is not closed and is a shell? Does that mean that the mesh obtained by the getNodeMeshData() function can only be used for display and cannot be used for volume detection or collision detection?  
Looking forward to your reply

---

<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:** [December 18, 2025, 2:02pm UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/16 "2025-12-18T14:02:11Z")

</div>

Admittedly, I’m not familiar with collision detection as implemented by OpenCascade. That being said, a [mesh](https://docs.techsoft3d.com/hoops/visualize-web/prog_guide/viewing/geometry/meshes.html#meshes) object is the geometric representation of the model. So a mesh isn’t just for display.

I think you’ll have to do more research on what OpenCascade is expecting as a data structure to represent the geometry of the model.

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 20, 2025, 2:53am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/17 "2025-12-20T02:53:52Z")

</div>

Hello, Tino. Could you please confirm whether the data obtained by getNodeMeshData is a solid mesh rather than a rendered mesh? Is there any zero-area / degenerate triangle among them, such as when the three points of the same triangle are collinear, there are duplicate vertices, or illegal indices? Because when I used the industrial geometry detection library (FCL / CGAL) for detection, I found that such meshes were not accepted.

---

<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:** [December 20, 2025, 12:12pm UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/18 "2025-12-20T12:12:54Z")

</div>

Converter imports CAD files and generates Stream Cache files. The data is processed **as-is** from the source CAD file. Can you confirm if the source data is itself an open or closed solid?

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 29, 2025, 9:40am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/19 "2025-12-29T09:40:25Z")

</div>

Here, all of them are closed entities. Then, when looking at the models drawn through a third-party library, it was found that the density of some nodes in the models is inconsistent with the normal density. Why is this so? As shown in the figure, for example, this screw has a cylindrical surface that is not consistent with the normal hole surface. This leads to a problem that when the program calculates whether there is overlap, it calculates that there is overlap, but in reality, there is none. The reason is that there are many surfaces for the drawing of the screw, which results in overlapping situations between the screw and the hole. Is there a way to control the accuracy of the exported mesh?

 ![5760a157de53cd3dd98012b07e03519e](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/1/180a8c09b76677f7b8987e0c7598b2c50c8f106c.png)

 ![5633eba9dc6de2a31a23722bde590d6a](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/c/c5e4df2db65eace1a048d6f3de83863b173198e4.png)

 ![32c973dad416ef86676d3e37abe29173](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/8/889ff7f08b7b798e7944ee94b1c56ccf07f3f151.png)

---

<div class="post-metadata">

**Author:** ![WangFuYuan199](https://avatars.discourse-cdn.com/v4/letter/w/7feea3/32.png) [@WangFuYuan199](https://forum.techsoft3d.com/u/WangFuYuan199)\
**Post date:** [December 29, 2025, 9:45am UTC](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018/20 "2025-12-29T09:45:17Z")

</div>

![image](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/a/aec6e578ab0923826053a0c283e5cf3a15f13bd2.png)  
His prototype can be observed. In reality, there is no overlap.

![7ab43430ae92f398988474154acf3ab1](https://us1.discourse-cdn.com/flex020/uploads/techsoft3d/original/2X/4/476e0b1c93f1ed90035876bd17de1836563fcb98.png)

Also, can the mesh grid I exported be used as solid geometric data for interference detection?

[Next page](https://forum.techsoft3d.com/t/can-we-use-hoops-for-interference-checks-what-kind-of-data-of-the-nodes-need-to-be-exported/5018.md?page=2)
