# Curtain Panel Orientation - false normals

**URL:** <https://forum.dynamobim.com/t/curtain-panel-orientation-false-normals/9559>\
**Category:** Revit\
**Created:** [February 12, 2017, 4:30pm UTC](https://forum.dynamobim.com/t/curtain-panel-orientation-false-normals/9559 "2017-02-12T16:30:59Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![Thomas\_Mahon](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/thomas_mahon/32/64209_2.png) [@Thomas\_Mahon](https://forum.dynamobim.com/u/Thomas_Mahon)\
**Post date:** [February 14, 2017, 9:18pm UTC](https://forum.dynamobim.com/t/curtain-panel-orientation-false-normals/9559/7 "2017-02-14T21:18:14Z")

</div>

Here’s another method that may also work assuming the normals of the `CurtainPanel.Boundaries` is consistent:

Assuming it is, and assuming the surfaces created from the `CurtainPanel.Boundaries` results in inconsistent normals; calculate their dot product. Any scalar of -1 is an inverted `Surface.NormalAtPoint`. Use `Vector.Reverese` guided by an if statement and you should now be able to output the correct angles for all panels from this ‘corrected’ set of vectors.

**Before conditional reverse:**  
 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/1/c/1c465d761db05247f3b2e69c08f69e640bfa72f4.jpg)

**After conditional reverse:**  
 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/b/3/b3c4a322b63a1b90f6ff119434dbad786d455866.jpg)

Graph:

 ![](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/f/d/fd25d245bcfb79162700831ea800bdfb00e4c552.png)

EDIT: ps, if the result of the dot is anything to go by, it seems the normals of the `CurtainPanel.Boundaries` indicate these elements are treated as planar, meaning you can bypass everything and simply use `Curve.Normal`, I haven’t tested this so I’ll leave that for you to uncover.

---

_[View the full topic](https://forum.dynamobim.com/t/curtain-panel-orientation-false-normals/9559)._
