Floor opening cuts mess up floor sketch (Springs Element Sketch Collector)




I am using the Springs Element Sketch Collector to collect the sketches of a set of floors, but when any of the floors have Floor opening cuts (vertical openings), the sketch returned is the outline of one of the holes. If there are multiple floor opening cuts, it still only returns one boundary.
I am guessing that it is a Revit issue, but it could also have something to do with the Collector.ElemenSketch node.

I should note that I have no problems with shaft openings or openings made within the sketch of the floor.

Has anybody had a similar issue?


Can you share a sample file with that?
I get results as expected for floors with openings.


I’ve attached the relevant part of my dynamo script and a simple revit file.

Also, here is an example.
This is the output when I choose the two floor marked in the picture bellow without floor opening cuts:

And with two floor opening cuts, this is my output:


Floor opening cut issue.dyn (14.6 KB)
Floor opening cut issue.rvt (376 KB)


Hi @tmha

This should work for you:

For Tina.dyn (13.3 KB)


It works correctly for me with FetchModelCurves set to False. And I mean it gets the sketch of the element. If you want to get all the openings as lines then the solution from @Kulkul is probably the best way to go.


Okay, so the geometry of the floor element does hold the geometry of the floor opening cuts - at least that’s consistent.
I don’t have your ‘Group Curves’ node, so I can’t run it to the end right now - but I can create a similar logic. Thank you!

I’m not quite sure that it solves my entire problem though, because I need to access the model curves, as my script concludes with defining a new location for the outer modelcurves (with Springs Element Set Location). I am trying to keep the hope alive that I don’t have to change that logic.


You can get it from archi-lab package. You can find it in online package search.


My workflow is the same logic as your’s i just gave you another method to get the result your looking for. Please try and come back here if you don’t get the result. You can add ModelCurves at the end as shown below.


I might be wrong here, but if I do that I get new modelcurves, and in order to modify the outline of the floors, I have to collect the original model curves of the floor. I will look into finding a different way of collecting the model curves, and then I’ll be back.
(Not that it makes a difference to the workflow, but I should note that I don’t need the geometry of the openings, just the outline).

I’ll just attach a simplified version of my script, to show what I am trying to do:

Floor opening cut issue - offset of outline.dyn (18.4 KB)


Okay, so I think can see where the problem with the modelcurve comes from - The Element Sketch Collector relies on the correlation between Sketch Id and Element Id to be:
Sketch Id = Element Id -1

But when a floor opening cut is used, I think that the Ids are shifted, and the sketch of one of the openings take over the Sketch Id of Element Id -1.

Though it is not ideal, I think I will attempt collecting all the modelcurves of the model and filtering them by comparing their geometry to the curves found in the way that Kulkul suggested.


Okay, I’ve come to a new solution.
I collect the model curves in a similar manner to what is describe in this thread:

The script that I called ID collector looks as follows:

For anyone who might be somewhat inexperienced with Dynamo and Python like me, the script takes in i.e. floor elements, deletes the element, stores the IDs of the elements which are deleted as a result of the floor being deleted (the modelcurves of the floor being some of them), and then rolls back the deletion. The output is then the IDs of all the elements connected to the floor.

I still use the Spring Element Sketch Collector to collect the curves, because as Viktor mentioned, it works as expected, when ‘fetchModelCurves’ is set to false. But I could also just as well collect the geometry from the model curves.
The reason that I don’t use the method that Kulkul introduced, of extracting the geometry of the top surface, is that I get a mismatch between the boundary curves and the model lines if there is i.e. af shaft opening breaking the border of the floor. But if you just need the actual geometric border of the floor, this method will probably be the way to go.

After I collect both the outline curve of the floor and all the model curves, I compare the midpoints of the curves an the geometry of the modellines. This way I both pick out the model curves which corespond to the outline (and not the openings), and I sort the model curves in the same order as the outline curves.

This was a lot of text - but I have attached a dynamo script, for anyone who might be interested.

Floor opening cut issue - new method.dyn (35.6 KB)
Floor opening cut issue.rvt (412 KB)