Trim Revit Walls to Imported Surface


#1

Hello All
I am working on a script to extend the profile of a wall to the inside surface of a double curved exterior wall. The exterior wall will either be done with a wall by face command, or will just be a generic model of imported geometry from Rhino.
The definition I have so far allows me to pick the double curved surface and import it in. I can also import the walls into Dynamo and convert them to Dynamo solids. Next I trimmed these solids to the surface.
What I need help with is somehow changing the profile of these walls to match the profile of the trimmed solids. I don’t see any nodes that allow me to change the profile of a wall. Any ideas?

I would do this with conceptual modeling but I have to do hundreds of walls and these forms will be changing as they are modeled in another software.
Thanks in advance!


#2

Trim Walls to Surface 02Here are some pictures of what I am trying to do.


#3

You cannot change the wall profile programmatically - this option is not available in the Revit API and therefore neither in Dynamo.

And the interaction between walls by face and rugalr walls in Revit is really quite poor.

So if the walls already exist in your model (and perhaps already contain hosted elements like e.g. doors) your best bet (currently) is probably to use Dynamo to generate some model lines at the intersections of the walls with the building envelope and pick those lines when you edit each wall profile manually. :slight_smile:

Maybe/hopefully I’m wrong and somebody has a slightly more computationa solution. If not, I think you should make this into a feature request. It would be great to be able to manipulate wall profiles with Dynamo.


#4

I think Andreas is right. I scouted the API and didn’t see any calls for editing an existing wall’s profile. What you could do alternatively is re-create the walls.

I think what I’d change from your approach is extract the location line of the wall and extrude that(there’s a nice location node in the clockwork package), instead of extracting the wall solid. Then once you have the profiles of the cut walls, you will need to feed them into a specific wall.create method: http://revitapisearch.com/html/8d651eae-ae63-bc50-5f43-383d71ec4301.htm

capture1

You’ll have to think of a way to re-host your doors and windows. It should be easy to map the elements from the old wall Ids to the new wall Ids. Also optionally you can get Julien’s Eraser node from the steam nodes package to quickly get rid of the old walls.

cap1 cap2

cap3

DEV.WallByProfile


#5

Thanks Dimitar.

 

For some reason the Python node only works with single inputs for the type and level. What do I need to do so that it accepts a list of types and levels?

I could not find a way to map hosted elements to other walls. I looked into the API but I could not figure out what to take from there.


#6

This should read the level and type and set them accordingly:

DEV.WallByProfile2

I know Andreas has a nice node to read the host element of a window or door. Not sure if the API has a call for picking a new host… You might need to recreate the windows and doors just like the walls.

Edit: You’re lucky :p. There’s a really easy way to re-host all those windows and doors:

-Select all the windows and doors from the Revit UI

-Copy them all

-Delete the original walls. That will delete the doors and windows but don’t worry - you have them saved in your clipboard.

-Do a “Paste:Aligned to Same Place”(the one from the arrow under paste). That will place the doors and the windows and they will automatically assume the new walls as hosts.


Edit profile of wall in Dynamo
Place Wall on Topography
#7

Dimitar

Thanks for the update. I was trying to rig this into recursion with a custom node but was not 100% there. I am aware of the copy / paste trick but the problem is with large number of elements on many levels this may not work. I have seen it fail before.

In my workflow what I will do is split the end of the wall that connects to the exterior walls. These walls will not have anything hosted on them and will be solely for the purpose of connecting to the exterior skin. The interior wall that will connect to these short walls will in turn contain the hosted elements, such as doors, casework or generic models, etc.

Thanks again.


#8

Reopening an old thread.

The custom Python script is extremely usefull for me. I remake a set of walls that are generic models to structural walls. +/- 200 walls. I can use this script very well only the walls have different starting heights.

Is it possible to add a offset to the scripts. I want to feed a list of surfaces with a comparing list of levels with a comparing list of offset heights.

 

A second thing: Is it possible to set the wall location line. Standard it is at center of the wall but I think I want to change it.


#9

up