damogranlabs/classy_blocks

T-joint implementation

Closed this issue · 10 comments

Hi, I noticed that the T-joints still need to be implemented. Do you have any rough implementations of T-joints? Or can you guide me through how to implement it myself?

Thank you

I guess one should start with a SemiCylinder but one face should be inclined at 45 degrees. The easiest would be if there was a skew transform so I guess that would be the first thing to add.
Then, everything else is just copy/rotate/mirror.

Note that a T-joint is a sort of collection of Shapes so it's nothing like current classes (Operation, Shape, Stack). I guess this still requires some thought.

What do you have in mind?

Thank you for the response. I will think about your idea, try implementing it, and see where it goes.

This might be a nice starting point: "pipeline mesh generator based on blockmesh"
https://oar.ptb.de/files/download/530.20230512.pdf

Although I don't know how well the code is documented using equations.

Fantastic, this will be helpful to me. I will start scripting and get things done, and once I have everything, I will discuss the object-oriented framework. As I have a lot of features in my geometry

  1. T-joint
  2. Pipe branches to two pipes
  3. multiple pipes merge in one big cylinder

I found great success using predefined shapes from classy blocks for background mesh in Snappy. Now, these non-trivial features are creating a bottleneck.

Thank you.

I suggest:

  • Add a shear transform to ElementBase
  • Create a 'private' SemiCylinder Shape with an (arbitrarily) tilted end face
  • Make a new entity type, 'Assembly', that holds multiple Shapes
  • Create Assemblies, starting with a T-joint and expanding to other stuff

Check out the feature/assembly branch. I whipped up a rough draft of what I suppose a T-joint might look like.

There's an example in examples/assembly. Read through the commit message to see what's left to be done. Next week I'll be on holidays, hence - offline.

Hello, the rough implementation is excellent and helped me solve my problem, though there were warning messages that I ignored for now. Yes, as mentioned in the commit, we should find a nicer way to define grading. Let me see how can I help there.

Screenshot 2024-07-24 102841

Have a nice holiday

Aye. I'm working on a nicer way of doing everything now. Looks like the final implementation will be far from the initial makeshift stuff.

Merged new stuff with the development branch - T-joint, L-joint (a sharp elbow) and an arbitrary N-joint. Will be pushed into master after some more testing.
image
Next, the cylinder thing. This is a bit more complicated one.

This looks fantastic. Thanks a lot.