Bending/deforming placed blocks



I was wondering if there is a way to deform Blocks without changing the block definition itself?

Picture this, you have a flexible hose, you build one straight hose, and create a block out of it.
I was hoping to be able to use commands like Bend or Cage/Edit cage to deform the block without the need to change the block definition. To bend a hose/tube block so it fits without the need to create multiple blocks for different hose curvatures/bends.

For example.

(Dale Fugier) #2

Hi Peter,

Sorry, no. Blocks can be transformed (e.g. move, copy, mirror, orient scale, shear etc.). But, they cannot be deformed or morphed (e.g. bend, flow, taper, twist, etc.).

– Dale


That is too bad,

Would you have any advice on how to use Blocks in combination with flexible hoses? Or is there going to be a deformer option that keeps its history in the future so it would work on blocks too?



(Willem Derks) #4

Hi Peter,

In specific cases it might be an option to use Pipe with History, or a Flow with History. It will not be like with blocks, but if you use the same “seed” geometry with Flow it could partially serve your needs?

If you can elaborate on the specifics of a situation you are facing it might even be possible to use a script.



I am trying to use a database of [parts] to make different [models] out of the [parts] using them with blocks in Rhino.

The application is so that if a [part] changes it only needs to be changed once, and not in all separate [models].

Most [parts] only require rotation/scale/translation to get in place in the different [models] though the flexible tubes/hoses require different bends to be connected in the [model] the correct way.

So for the hoses, what I wanted to have is a single straight hose, which would be a [part], and import that one as a block, and bend along a curve to put it in the correct place.

Now when the original [part] would change, for example it get’s another screw, or the links of the hose change shape. Then I would like to update the [part] / Block - and then when I open a file with said [part] and update it, that it changes the part, but still keeps the same bends/deformations.

I hope I made enough sense here in the last part, seeing how English is not my native language.


Perhaps this clarifies a bit more;
Type_A pipe used to have two Blue nuts on the endings. Type_A pipe’s design has changed and now has one blue, and green nut on the ends.

Ideally if I would use blocks, and was able to deform them with for example the “Flow along curve” command, I would be able to just go back to the block, make the top nut green, and update in the other files, to get the new type_A design.

(Pascal Golay) #7

Hi Peter- I see what you mean, but the way blocks work is not really compatible with this- what you are suggesting I guess is a sort of hybrid block/object. Currently block instances can only represent the block definition with limited transforms applied, not arbitrary ones.



The way I’d imagine it would be to have the deformation never actually finalized, if that makes any sense, to just make it a type of Deformer that is always applied, and can be turned on and of, therefore it would be able to work with blocks. Of course if you change your block’s contents dimensions this would possibly give unexpected results, but having such an Active Deformer as an option, you could always tweak it afterwards.

We have currently chosen the option to cut the hoses for technical drawings, and for now customize the full hose per different model for the visualization step.

I understand this will not be an option any time soon, but I can’t wait to see what you guys bring in the future! I’ve been quite pleased with the package after working full time for around 4 weeks with it! : )

(Willem Derks) #9

Hi Peter,

Another approach in your specific example: When you leave the 2 nut endings as separate blocks oriented on the curve, and the hose as a flow of a pipe, the command ReplaceBlock will let you replace specific endings with another type of block.

Not the least a good idea because the freeform deformation of for instance flow could deform the nut endings…



Hello Willem,

I understand your point but it is more the different positions the hoses are bend, the nut’s was more an example, say for example the type of links change shape or size, but the outer dimensions of the hose stay the same, then it would be nice to update the block 1 on 1, and all files that used said hose, have the new hose.

I’ve been thinking of changing the hose approach because of this “limitation” to just make 1 link and array the link over a curve.

The only downside is that I’ve yet to figure out how to make a curve an exact length (a bendy curve) I can measure it, and tweak it, but perhaps there is a function to create a fixed length curve, which can be influenced by control points but does not change it’s length ever.


The main problem here is while you are editing it, how does it react? In order for it to remain the same length something has to move - and in what manner? There are an infinite number of possibilities in an unconstrained environment… What could be applied is some sort of physics where the curve is assigned a certain “stiffness” (like Patch) and it would relax into the least stressed shape it can - to be constantly recalculated while editing in real-time…



A possible application would be a physical piece of wire-like mechanic, though I’d have no clue out of the top of my head how it would be easy and logical to control it.