Idea / wish -> rectangle / box with constant area / volume

Hi,

when I do architectural layouts for floors, I often start with areas which are required for certain functions e.g. office space 1000 qm, storage 3000 qm, assembly 5000 qm etc.
So at the start I sometimes draw some rectangles representing the area of the necessary rooms and I start arranging them , modify them to help me find a working layout.

What I would find really helpful would be a possibility to define the area of a rectangle, rhino would then draw a square which can be edited by the user but would maintain its area. So if I would eg. have a square 10mX10m and I would scale one side to 4m, rhino would automatically change the other side to 25m, so that I would end up with a 4mX25m square wich would still equal 100qm.

This could also work for existing rectangles “make area constant” or for volumes.

to avoid super narrow shapes when the one side is coming close to 0 we should be able to define a custom threshold e.g. 1m .

Is this possible ?

best

Andreas

Hi Andreas - I think this should be possible - do you envision a tool for adjusting an existing rectangle or for creating one with a constrained area?

@walther - here is a start, maybe - this will let you set a rectangle to a given area by selecting a side to constrain. It is crude - there is no check yet for valid input of numbers for example, but it may be approximately on the right track.

ConstrainRectangletoArea.py (3.0 KB)

To use the Python script use RunPythonScript, or a macro:

_-RunPythonScript "Full path to py file inside double-quotes"

@walther - I added a couple of checks for valid input.

-Pascal

1 Like

Hi Pascal, in an ideal world there would be 2 commands:

  1. “create fix area rectangle Area/Dimensions, Min.length”
    -> this would let the user generate an fixed are object from scratch. Area option : the user would define an area, Rhino would draw a square rectangle. Dimension option : the user draws a rectangle (3Point!) Rhino calculates the area and displays it, and it is fixed. Min. lenght lets the user define the minimal possible lenght for one side when editing it.

  2. Define rectangle as fixed area / Min. length”
    -> the user can select a rectangle Rhino calculates the area and displays it, and it is fixed. Min. length lets the user define the minimal possible length for one side when editing it.

another nice addition would be the option to redefine the area and to display the area as a object connected text in the middle of the rectangle.

Hello - this you can do now with DimArea.

-Pascal

1 Like

Nice, did not know that -> thanks!.. could there be an option to auto-glue this to the object with group?

Hello - Here is a thing you can try - the feedback is a little nerve wracking, to my eye, because of the constrained size, but I cannot, at the moment, think of a better way - I’ll ponder some more tomorrow, after a coffee. it should be possible to make a 3 point rectangle as well.

AreaConstrainedRectangle.py (6.0 KB)

To use the Python script use RunPythonScript, or a macro:

_-RunPythonScript "Full path to py file inside double-quotes"

@walther - updated to have a first try at a 3Point option.

Use the previous script, above a few posts, to modify an existing rectangle.

-Pascal

1 Like

Thank you Pascal for your effort, this is nice and already pretty useful, so again thank you.

That said I would still wish for something that would create a special rhino object class meaning an object wich has a fixed area / volume and is editable while maintaining this definition. What I mean is that this object would “know” that it has a certain area and if you would scale it in one axis it would react in realtime by modifying its other side accordingly like it already does in your 2. py script.

Do you think this could be implemented in R7 or is it more work than it appears to be for a non coding individual like me :wink: ?

Hello - well, consider that it would be pointless to make one ‘smart’ constrained tool - it would need to be part of a much more extensive program - but keep in mind Grasshopper probably can do this quite easily, if is a somewhat less direct way than you envision.

That said it is certainly possible, with user data, to make some thing fairly smart in a python script.

-Pascal

How about defining the shape and scale by area, be it square triangle hexagon or whatever else? So you draw it first and give it a specific area. and make it part of scale options. And of course if the same could be applied for volume…!!!
Any way a bit of math doesn’t hurt!
While I’m here I want to thank you all for unflinching dedication.

1 Like

thanks Pascal for your explanation… maybe So Unrelated `s idea is interesting because it would widen the possible scenarios in which such a tool would be used. I see that of course the benefits have to justify the cost (time) integrating this into Rhino… So IMHO there are two points which would probably be relevant:

  1. would such a command be useful for a significant amount of users, or is it too specific and would just add mure clutter to rhino…
  2. If it is considered useful, how much effort would it take to do it as opposed to the benefits it would add…

So for me being an architect it would be useful and I guess it would be for other architects as well, but I would imagine that for engineers e.g. when dimensioning parts this could become handy as well… maybe some other users could voice their opinion…

Yeah… it gets complicated - I think making the calculation and even keeping track is pretty straightfoward compared to the UI - a rectangle is one thing, a triangle… what do you constrain? Edge length? Angle? Various possibilities and no way to predict really what will be useful.
I do think in the short term the prototype for rectangle by area, just that, no smarts, is probably a useful tool, and worth fussing with a little more to make a 3-point one work - set base line end points and the rectangle is basically done, you just pick which side of the base line to use. Would that be a useful thing?

-Pascal

if it is not too time consuming for you I surely would like to try it… can I buy you a beer or something?

Andy

This could be partly solved with geometric formulas and macros in excel. Albeit rudimentary.