What to do next in ArqiShap3D?

Hi everyone!

I’ve recently uploaded the newer version of ArqiShap3D after a long while. I’ve added some roof modelling components which I’m extremely proud of. I was able to develop a roof modelling algorithm which is really fast because it works with plane intersections instead of sweeping or brep splitting. And I want to keep on working on developing ArqiShap3D even further.

I opened this thread to ask for feedback from the community. What do you think about the current state of ArqiShap3D? What do you think I should be working on next? Do you think there are some unnecessary tools? Have you encountered any major or minor bugs? Would you like some tutorials on how to use some of the components? What do you think about how some of the components are designed to be used? What would you think about bringing some of ArqiShap3D’s functionality directly into Rhino? etc…

Any feedback is appreciated. Thanks in advance!

1 Like

Hi, I think your post unfortunately fell between the cracks.
In the past, I was trying to make some tools for the roofs, but later I discovered other people’s attempts and I realized that it’s not an easy task at all. Your solution to the roofs is the best I have seen so far. It’s awesome that I can specify roof angles one by one.
I needed such a roof tool and I will use it for my project. I haven’t learned the full functionality of your plugin yet, but I also like your stair tool.

  1. I wonder if your roof tool could be further developed. From what I saw, sometimes for some angle numbers roof can’t be constructed. I can be like: 28 degrees – ok, 29 – wrong, 30 – ok again.

It seems to me that many fails happen when too many roof faces meet at one vertex - often very simple, “perfect” shapes fail.
It would be great if you could eliminate these bugs to make it fully robust.

Example of that behavior:
arqi roof 1.gh (6.0 KB)

A couple that also fails:
arqi fail.gh (3.8 KB)

arqi fail2.gh (3.8 KB)

  1. I can use some external components to investigate roof brep topology but if you are looking for ideas maybe you can implement them in your plugin? Similarly as you can deconstruct stairs one could deconstruct a roof to get flat roof ridges, angled roof ridges, and other data that would help further stylize the roof, like making a “dutch gable” roof.

  2. The more challenging task probably would be the ability, to create non-planar roofs. For example, based on arcs where one direction of the surface is higher than the 1st degree.

Going further with that, boolean toggle to force horizontal roof ridges using non-parallel curve input edges?

Non-planar roof faces higlighted

  1. Using a curve as a roof footprint and option to construct a roof from top to bottom? While keeping the roof faces planar and at the same time forcing roof ridges to be non-angled (flat horizontally) -constructing the roof in a way that bottom edges will be non-flat.

roof faces.3dm (483.8 KB)

Normal way of constructing roof - note the slanted one roof ridge and flat base of the roof.

  1. Because Model Roof components works in a ways that making inner courtyards is not possible, with just one step. This is however possible to workaround by splitting “O” shaped boundary into two “C” and combine results at the end.

I also noticed some errors during opening Grasshopper related to your plugin. I don’t know if it interferes with how it works.

Hi Jakub,

Thanks for the detailed feedback. I’m glad to know that someone actually liked it and uses it. I’m also quite thankful of how the roofing tool ended up being and I can also say that it wasn’t an easy task. Initially, I thought it would take around a couple of weeks, but as I encountered more and more problems and special cases, I had to change the algorithm entirely and it ended up taking around 3 months.

About your suggestions:

  1. Thanks for bringing these bugs to my attention. During the testing process, I can only try out a small portion of many possible roof forms, and as I encounter bugs, I try to solve them as much as I can. I will look into these in more detail when I will have time.
    (And contrary to what one might think, one of the hardest things to solve was the intersections that occur with these perfect shapes…)

  2. Deconstructing the roof elements is a great idea, and it shouldn’t be complicated at all. I will certanly add this to the list.

  3. Because the roofing tool currently works based on plane-plane, plane-line and line-line intersections (this is why it’s so fast), it would be very difficult to adjust the algorithm to also take into account non-planar roof forms. It should be possible but I’m affraid it can be a coding challenge as big as the roofing component itself.
    Forcing horizontal roof ridges could be possible, but I think one problem that can arise from this would be the fact that; sometimes when a roof ridge will be forced to become horizontal, it could break the horizontality of some of the already horizontal adjacent roof ridges (especially if that non-horizontal roof ridge segment is not at the ends of the entire roof ridge) and some of the roof faces might need to be broken up to pieces or have their slopes changed for the connected roof ridge to be horizontal.

  4. For constructing the roof from top to bottom, I think we would still need to know the heights of the roof ridges; and we could know this either by solving the component for once and then adjusting the the roof ridges to be horizontal (then this would be the same as forcing the roof ridges to be horizontal like in your previous suggestion), or by a detailed user input of the ridge curves, with their correct elevations with respect to the roof edge curves (in this option, the roof angles and edge curve corner heights might need to be changed by the algorithm for the roof ridges to meet with the roof edge curves, and the fact that user will enter the ridge curves, the ridge curves could get crazy shapes which we would need to do a lot of checks to see if we can actually solve it in the beginning).
    (I couldn’t open the rhino file because it was created in rhino 8, but I tried to understand what you described from the screenshots you’ve attached.)

  5. Inner courtyards should also be possible but again, I would need to change how some parts of the algorithm works substantially without breaking any part of the code.

About the bug:
I will take a look at it and hopefully fix it in the next version.

About what I’m working on now:
I started rewriting some of the components I’ve developed earlier and currently I’m working on a wall component which is more simplified and more restrictive than the current version in ArqiShap3d but solves the intersections better and works much faster (100s of times faster for some cases!). After this I’m planning on working on producing the wall opennings in a much faster way and then solve some problems in the staircase component (It doesn’t work perfectly on a lot of cases) and possibly add landings to the staircase component. Because I will be starting a new project with a client this week, I don’t know how much time I will have to work on ArqiShap3d and hopefully continue developing it at least slowly and steadily.

In the meantime, I would also appreciate any comments on how some of the other components and systems work in ArqiShap3d. After developing them, I starting doubting their necessity but I wonder if they are useful to anyone (I mean all the other tools except the architecture tools) and if I should remove some of them.

Have you seen this topic?

I haven’t seen it before but thanks for the notice.

I didn’t take a detailed look at it but I think if he used an algorithm which is based on sweeping an angled curve along the boundary roof curves and intersecting the resulting breps, this might make it difficult to solve for roof faces with different angles while making it super easy to solve for roofs with non-linear boundary edges and roofs with holes.

You can always turn any non-linear curve to polylines and plug it into ArqiShap3d’s roof component, and it (hopefully) should mostly work without any problems but I would have to implement a different solution for roofs with holes (or “O” shaped roofs).