Ok, the first example is a non-API one. Basically the problem that I ran into is that the apartment building that I’m working on has funky balconies that are wave – like and thus are different on each floor. The slab profiles are driven by 3d mass which consists of two extruded boxes that define the “skin” boundary and a bunch of “curved” wave – like shapes that drive the location and the profiles for the balconies. The slabs are defined “by – face” so when we change the mass the slabs update to their host mass floor. Take a look at the picture below to get the idea.
|slab driving in-place mass|
|offset parameter from the face of the shell|
The graphical workaround for that is to create an in-place mass that corresponds with the shell of the building (in my sample case it is just two rectangular boxes) and drive the location of the ref lines that generate profile for the extrusion with an instance offset parameter.
|Left: Max offset (6ft) Right: Min offset (4ft)|
Also create an instance parameter for material of the extrusions and link the material of the boxes to it. Then you can create an exactly same in-place mass so you have two of them in your project – one will show the Min boundary for the balconies and another will be your Max boundary. Create 2 materials of different colors and set their transparency to 50%. Now assign one of them to the instance parameter of your “Min” mass and another one to the “Max” mass. Lastly set the offset instance parameter of Min mass to 4ft and Max mass to 6 ft – and that is about it.
Now when you do your free-form editing in the in-place mass that drives your building geometry (shape of slabs in my case) you just need to keep these two masses visible and you will always see the extent of your constrains projected on your building elements (mass floors or slabs in my case) so you can do all your editing in 3d view and not have to measure anything.
|Free form mass profile editing. Notice that you can clearly see the boundaries of our 4′ and 6′ constrains|