3D Truss Models
-
Customizing roof planes gets a little complicated when combined with the roof edge move tool. The problem is that as you move roof edges you potentially change up the shape of roof, eliminating certain roof planes entirely and also changing some roof planes that potentially could be gable ends back to a hip configuration and vice versa.
With custom roof planes the move tool is going to have to get a bit more elaborate (more logic) so that a number of checks can be run to make sure that we are not trying to turn certain roof planes into gable ends that physically cannot be this configuration and also checking to see if certain roof planes were deleted.
The outline edit tool is even a larger problem in my opinion. How do you know which edges were retained after an outline edit? I think the default behavior should be to erase all roof plane customizations after the outline edit tool is used. I will need to give this some further thought.
Somehow I always knew that complex roofs was going to be a bit of a Pandora's box.
-
First look at the Edit Roof Plane menu and tool in action:
Now that we are able to successfully select roof planes (roof edges) only the algorithm for gable end flagging remains. If a roof plane cannot be converted to a gable end the "Roof Plane Type" drop down option will be limited to only a "Hip" type.
-
Thanks for the thread and the explanation, that's extremely useful for us newbies! Especially since I got a task that's a little bit out of my league at work: do some 3D models for some of this Cannes real estate, while I'm glad if I can do something like an ice cream cone or a basic child drawing house...
-
Lots of little details when it comes to editing roof planes. First of all let's introduce an updated menu:
Notice that the roof plane status will tell you whether the selected roof plane is inheriting its parameters from the main roof or it has its own custom settings.
I've also added a "Clear Custom Settings" at the bottom of the menu so that one can return the roof plane to the default/global settings of the roof assembly.
Setting up all of this supporting infrastructure is somewhat tedious and certainly time consuming, however I do believe that a solid user interface that is both efficient and intuitive will make or break this module.
I intend for the edit plane tool to be persistent, provided that it does not affect stability. In other words you can keep clicking on roof planes and updating them without having to restart the tool by clicking on the icon in the toolbar.
-
After struggling with the code for almost 8 hours I give you a fully parametric, asymmetric complex roof (primitive):
View model here:
I will now need to spend a day or two just trying to break it and I also need to enable the gable end option.
All of the menus and tools are working correctly now and seem to be quite robust. I will spend the next couple of days finishing up the roof primitive geometry (and testing). After that I would like to enable sheathing and cladding along with the roof labels and then I will probably release an update so everyone can test it out further and help me unearth any bugs I may have missed.
-
If you take a look at these two roofs you will notice that in the second case the lower ridge has degenerated into the steeper roof plane:
I didn't think it was possible but there are certain configurations where a standard straight skeleton will not generate the expected roof. This is a good example of that.
The complex roof module will not be able to automatically handle these types of situations.
This is where the secondary roof module will need to come in.
-
Throwing all sorts of curve balls at this module to see if I can break it. Ultimately one can always break anything if you try hard enough, especially with something as complex as some of these roofs get.
Overall I'm pretty happy with it, I've addressed the issue with inside corners and now all is working as expected. Here is a recent test example of a roof with planes and pitches all over the place:
View model here:
That being said there is always further testing that can be done. I'm sure there is some state I have not thought of that someone will get the plugin into that will break it.
I think it is time to move on to the gable end option. Once I get that working I think the utility of this new module will start to become apparent.
-
I haven't quite started into the framing geometry just yet but I'm already one step ahead thinking about how certain junctions are going to need to be framed up.
Two hip rafters meeting at a ridge is pretty standard and I think I have that one handled however the junction where a valley rafter meets a flying hip and ridge is a little more uncertain. Any information on how some of these framing junctions should be made would be very helpful.
-
Gable End option (within the edit roof panel menu) is now providing stable results:
View model here:
The roof primitive module for asymmetric complex roofs with gable and hip ends is now complete. Granted there is still room for additional options like dutch gable and half hips but I will leave those for another day.
I will now turn my attention to sheathing and cladding as well as the roof plane labels (name and sqft).
One thing I forgot to add into the overall roof parameters/options is anything for battens and cross battens. I can add it in if I receive some positive feedback on that feature, otherwise I will move on and start into the sheathing module first thing tomorrow.
-
Version 2.5.1 - 10.02.2019
- Enabled the "Edit Roof Plane" tool, allowing for customized roof planes within complex roof assemblies.
- Added the gable end option for complex roofs within the "Edit Roof Panel" tool/menu.
-
Version 2.5.1b - 10.03.2019
- Added logic so that customized roof planes can co-exist with the "Move Roof Edge" and "Edit Roof Outline" tools of the complex roof module.
Previously, moving roof edges would potentially shift the customized roof planes if certain roof edges were removed or consolidated. I think we have now achieved a fully parametric status with the various tools all working together.
-
After giving it some further consideration I’ve decided to enable dutch gable and half hip options for custom roof planes rather than leave it for later. If I include these options now it will force me to keep my other more specific algorithms general enough to handle all cases. The geometry calcs required to generate the roof primitive for these two other configurations is really not that difficult and actually provides a rather intriguing challenge.
-
First look at half hip complex roofs:
(textures added to roof primitive for effect)
Notice the additional "setback" parameter in the menu. Also a half hip roof plane has both hip and gable parameters with the non-applicable parameters grayed out, as shown.
Similar to a gable end, the half hip can only be applied to certain roof planes, the plugin automatically restricts this placement.
The overhang of the half hip is governed by the gable overhang parameter, hence the overhang under the hip options is grayed out.
Now, on to the dutch gable...
-
First look at dutch gable complex roofs:
(textures added to roof primitive for effect)
After I setup the system for the half hip this one fell out without too much trouble.
View model here:
https://3dwarehouse.sketchup.com/model/6f5908e1-189d-420e-8675-78cbe32ef522/Dutch-Gable-Complex-Roof
Now it is time to move on to the sheathing and cladding, but first I need to add in some options for battens and cross battens.
-
Version 2.5.2 - 10.04.2019
- Added the half hip option for complex roofs within the "Edit Roof Plane" tool/menu.
- Added the dutch gable option for complex roofs within the "Edit Roof Plane" tool/menu.
- The "Edit Roof Plane" tool has been made non-persistent to further improve stability.
(Click on image for animation)
-
First look at roof sheathing:
Roof cladding is a little more involved because of the cladding extension parameter.
-
A few more kinks to work out in the sheathing module, but overall it is working better than expected and it wasn't nearly as hard to code as I initially thought it would be.
View model here:
Still a bit more work to do with sheathing when the dutch gable option is utilized. As you can tell from the model the sheathing is not tucking under the gable end overhang just yet. I will be addressing this tomorrow.
-
The rebuild time on this model takes about 1.5 seconds. That is just with the roof primitive and sheathing.
The question is what will the rebuild time be like for a model/roof this complex when all of the rafters and other accoutrements are included?
View model here:
https://3dwarehouse.sketchup.com/model/cbb4f973-a333-42a0-8262-70d351fa5f7b/Complex-Roof-Test-5
-
Version 2.5.3 - 10.05.2019
- Added sheathing for complex roofs.
- Fixed the sheathing at the gable overhang for dutch gable complex roofs.
As shown in the image the sheathing with a dutch gable roof tucks up under the overhanging gable end.
View model here:
With this fix I think we are now 100% with the sheathing. I will begin the cladding next.
-
I've been thinking about connecting roofs together, for example a gable roof connecting to another building where the roof meets the wall. For this type of scenario it might be useful to have an option for a cutoff end (gable end with no overhang etc... I'm not sure exactly what to call this.
P.S.
It's funny where my thoughts take me when I take a breather from the code, I guess even when I'm on break I'm still contemplating what needs to be done with these plugins. I just realized that I can enable one additional option in addition to all the other options (ie. gable, dutch gable, half hip). I will call this a "CONNECTION". Basically you will be able to connect one roof to another (secondary roof). However, rather than having a separate module for the secondary roof I just realized that with the connection option complex roofs can become secondary roofs, so an additional module is not necessary.
I will need to give this considerably more thought but I think this direction I need to go. There will need to be some options for connection type (another roof, a wall or a roof and a wall). I will need to explore the possibilities, this is going to get interesting.
Advertisement