Hi Quan Li
I’ll try and clarify what’s happening by illustrating a single node with no offsets.
The distance of each ‘inside elbow’ point from its node has to vary with the angle between the adjacent struts in order to keep the pipe radii similar. Without this nodes would have a strange pinched appearance. The smaller the angle, the further out.
At some point as the angle decreases, the distance takes it further than ends of the struts:
Of course we usually have other nodes connected, and sometimes divisions of the curves between the nodes, so as these points get pushed out, more things can start crossing over each other.
Having lots of divisions of the input curves exacerbates this issue, because the overlaps then happen sooner. So sometimes simplifying the input curves can help, but sometimes we might have sharp angles that we just need to keep.
Potentially we could start splitting and removing faces and merging things where these overlaps happen, but as the radius increases these merges can meet merges coming from the other end of the strut, or from other struts, nodes can get completely engulfed…, and at some point trying to reconnect it would become so complicated that this approach no longer makes sense, and it is better to just use a different approach, such as isosurfacing and remeshing. This also has its downsides though - generally a lot heavier and less editable.
I think there are maybe some small ways the issue could be improved, such as an option to clamp elbows from ever moving beyond the ends of the connected struts, even though it would cause radius shrinkage, but ultimately there will always be a limit that is reached with this approach as radius increases and angles and lengths decrease beyond some threshold.