Problems removing curtain grid line segment

Hi All,

Anyone having issues with Rhythm package CurtainGridLine.RemoveSegment node? I can see the preview correctly indicating which gridlines should be removed but when actually run only a couple of random lines from the list are actually removed from the model. I am trying to create a staggered curtainwall panel pattern but really any application where a list of curves corresponding to gridlines is removed from the curtainwall is the main goal. Attached the file and some screenshots - any help would be greatly appreciated!

staggerPanel.dyn (33.8 KB)

What’s the error you are getting? Also, your gridlines look to not be derived from the face? They should be on that face to be removed. :slight_smile:

Hi John,

The gridlines are showing up out of plane because I moved the wall after running the script to show that it is locating the gridlines correctly. I get this message either way:

Warning: CurtainGridLine.RemoveSegment operation failed.
Segment may not have been found in location indicated by curve.

Weird. Do you have a sample file (RVT) to investigate? Edit: Saw the dyn now too.

1 Like

Hi John,

Attached is a test file from r2019, just used a generic out-of-box template and default storefront-curtainwall system. Same issue with r2018.3.

I noticed that if I plug the exploded geometry node directly to the curves input in the CurtainGridline.RemoveSegment it does remove the grlidlines, but when I try to modify the list and then return in the same format, or a flattened list it does not work.

Also just curious if you would be wiling to share any of your class definitions? I have just started some zero-touch node creation and was curious.

Thanks for looking!

Project1.rvt (1.4 MB)

1 Like

Hi John,

I am attempting to recreate some of your nodes as a learning exercise and managed to get this one to work almost the same (?). I am wondering how you retrieved the CurtainGridLine class using the ElementId within the node? Here is my code snippet:

        var wallElement = wall.InternalElement;
        var wallE = wallElement as Autodesk.Revit.DB.Wall;
        var rvtdb_CurtainGrid = wallE.CurtainGrid;
        return new Dictionary<string, object>
            { "RVTDB_CurtainGrid", rvtdb_CurtainGrid },
            { "U Gridline Ids", rvtdb_CurtainGrid.GetUGridLineIds() },
            { "V Gridline Ids", rvtdb_CurtainGrid.GetVGridLineIds() },


You need to get the element itself. I believe Doc.GetElement would do it.

Same issue. Node: CurtainGridLine.Remove Segments does not remove gridlines at all. Error: …“Segments may not have been found in location indicated by the curve”

I think I know where problem is: You cannot use the List.Flatten node on curves to make CurtainGridLine.RemoveSegment work

That is not the issue. Your original screenshot demonstrates the problem very clearly. (If we had a sample RVT file, we could investigate more, but that was never provided.)

Your curtain grids (blue lines in Revit viewport) are not on your wall element after you extracted them via Dynamo. Something is going on regarding your project location, a translation or something like that.

The error message, Error: …“Segments may not have been found in location indicated by the curve” means exactly what it says. You are feeding in curves that have no curtain grid hosted on them because they are way off to the side.

Find out what is going on there, and I bet the rest will fall into place.

Hi John,
Thanks for answer… not my thread, but I solved my case with what You’ve wrote

I had to change last node lacing to crossproduct to let it found those Curves where it should!! :slight_smile:


Glad to hear you got it sorted :+1:

I have a problem with the package which I think is a bug from Revit. I won’t detect all the segments of a gridline. So the amount of curves in the polycurve don’t match the amount of panelsurfaces

I’m running Revit 2022.1 with the adequate Dynamo version. Any ideas how this can be fixed?

Alright so I rebuild the script to reset the curtainwall gridlines as an extra step. However this time the node grabbed the correct amount of segment curves. I finished the ‘check’ script by verifying the amount of vertical gridlines versus the amount of detected horizontal NumberofCurves of the gridline.

Then I copy pasted the piece of code from my new check script into my original ‘delete segments’ one. The node then detected the wrong amount of segment curves again. So I think there was a bug in my script file or something… Because even refreshing the node by replacing it with a new one delivered the same result. So I reversed the process and copy pasted my ‘delete segment’ nodes into in a freshly new script and I now it works.

This means that I have succesfully built a script that removes segments of a gridline based on a shuffled list of horizontal values.

For example I have panels of 400, 600, 800 and 1200 sizes in height. Cause of the 600, all lines are based on 200 distance. The order of them appearing is scrambled. creating this:

1 Like