# Surface to surface distance

**URL:** <https://discourse.slicer.org/t/surface-to-surface-distance/20672>\
**Category:** Support\
**Created:** [November 18, 2021, 1:05am UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672 "2021-11-18T01:05:19Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![archamb4](https://avatars.discourse-cdn.com/v4/letter/a/bbe5ce/32.png) [@archamb4](https://discourse.slicer.org/u/archamb4)\
**Post date:** [November 18, 2021, 1:05am UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672/1 "2021-11-18T01:05:19Z")

</div>

Hello,

I am searching for guidance on using ParaView or a similar software as done in a research paper. I attached the figures from the paper. I want to use point cloud analysis to calculate linear deviation from a scanned cut surface to a plane. Does anyone have ideas of how to do this? I think that it is Distance to polydata in Paraview but I do not know how to do that.

 ![Screen Shot 2021-11-16 at 12.16.05 PM](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/2/2/220d9ab5459b2a344c29d6ba77d1bde98e39d017.jpeg)

Thank you!

---

<div class="post-metadata">

**Author:** ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)\
**Post date:** [November 18, 2021, 1:08am UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672/2 "2021-11-18T01:08:09Z")

</div>

For convenience (data from the [original post](https://discourse.paraview.org/t/point-cloud-analysis-help/8422)) are also available below:

[Cut 1-right.stl](https://discourse.paraview.org/uploads/short-url/zWJuQngxQBerLFMJcQGBTPziCal.stl)

[Post Op.stl](https://discourse.paraview.org/uploads/short-url/zotkjg57qs0thLfDrQcNgXuLfvQ.stl)

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [November 18, 2021, 1:51am UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672/3 "2021-11-18T01:51:39Z")

</div>

You can use ModelToModelDistance extension to compute the distances of bone surface points from the cutting plane:

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/5/6/56622bb0da853859478066b565de984230898027.png)

After this you can copy-paste this code snippet into the Python console to get the distance distribution as a histogram:

```python
modelNode = getNode("VTK Output File")
modelPointValues = modelNode.GetPolyData().GetPointData().GetArray("Signed")
import numpy as np
histogram = np.histogram(modelPointValues, bins=50, range=[-2.0, 2.0])
chartNode = slicer.util.plot(histogram, xColumnIndex = 1)

```

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/2/9/2919c3a942f014865eef947e9eae705b741addcc.png)

---

<div class="post-metadata">

**Author:** ![jcfr](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jcfr/32/17825_2.png) [@jcfr](https://discourse.slicer.org/u/jcfr)\
**Post date:** [November 18, 2021, 1:58am UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672/4 "2021-11-18T01:58:55Z")

</div>

> ModelToModelDistance

@lassoan I completely missed the `ModelToModelDistance` extension as it did not appear on linux in the extension manager and I ended up using a similar module in OsteotomyPlanner extension.

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/e/5/e58085024a4e7e425f31b19f31201a437eb7af5c.png)

---

<div class="post-metadata">

**Author:** ![archamb4](https://avatars.discourse-cdn.com/v4/letter/a/bbe5ce/32.png) [@archamb4](https://discourse.slicer.org/u/archamb4)\
**Post date:** [November 18, 2021, 5:28pm UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672/5 "2021-11-18T17:28:34Z")

</div>

Thank you so much!! Our team is trying it out today but it seems very promising and I will report back on how successful we are.

---

<div class="post-metadata">

**Author:** ![archamb4](https://avatars.discourse-cdn.com/v4/letter/a/bbe5ce/32.png) [@archamb4](https://discourse.slicer.org/u/archamb4)\
**Post date:** [November 19, 2021, 3:56am UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672/6 "2021-11-19T03:56:38Z")

</div>

Is it possible to select a certain area as the surface to analyze? So that just some of the total object is being compared to the plane at a time?

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [November 19, 2021, 1:25pm UTC](https://discourse.slicer.org/t/surface-to-surface-distance/20672/7 "2021-11-19T13:25:27Z")

</div>

Yes, sure, there are many ways to cut out part of a surface, for example Dynamic Modeler module in recent Slicer Preview Releases or the Combine Models module in the Sandbox extension.
