How to Fix Symmetry on a closed Srf

Hi
This is similar to the issue brought in Check/fix surface symmetry script?. [Discourse politely requested that I’ll start a new topic]
I made this base ring body closed Srf. took me quite a while to get sweep 2 to create this fairly clean Degree 5 x 5 [4 spans I think] closed Srf.
Somehow the CPs are not fully symmetrical, I did some manual adjustment of CPs up to this point where I’m not sure how to proceed?

  • I’d like to keep it a closed Srf so it can be edited to achieve different subtle forms.


Srf for critiqueV5.3dm (2.4 MB) Srf for critiqueV7.3dm (2.4 MB)

thanks a lot
Akash

Your surface is degree 5 x 5 with 23 x 25 control points so 18 x 20 spans.

One method for symmetry is split the surface in half and then use the Symmetry command with RecordHistory enabled. A symmertic mirrored surface will be created which will be updated to remain symmetric when the original surface is modified using History enable commands. However there will only be G2 (curvature) continuity across the plane of symmetry, not the G4 continuity which is possible with degree 5 surfaces. https://docs.mcneel.com/rhino/6/help/en-us/index.htm#commands/symmetry.htm

Thank you … Not sure I understand how the number of spans is calculated.
I can’t think of a way to get this shape in a single closed Srf with less spans…? would love to know if it is possible.

Regarding splitting and using symmetry with History, I’m aware of this. But the post is about looking for a way to fix the symmetry without splitting the Srf.
this is meant as a base Srf for developing designs so I don’t want to have an edge in the top middle, it will interfere with farther work.
Also the seams in the inside and the bottom need to stay where they are.
This is also about wanting to learn how to do this in the optimal way… inspired by all the recents Pro Srf posts.

thanks a lot
Akash

Hi Akash - this is extremely crude, quick and dirty but if you are willing to set things up, I think it will work-
turn on points and select all the control points on one half.
Make sure to include points which lie on the symmetry plane.
ExtractPt

Mirror.

SelDup and Delete (gets rid of the extras on the symmetry plane)

Now you should have a point object for each surface control point - some wiull match and others will not. Now run this script…

SrfSymmetrifier.py (786 Bytes)
(fixed…)

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

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

-Pascal

Hi Pascal
Very interesting approach.
I did as you suggest up to the point of running the script
Then got this error massage:

thanks a lot
Akash

Heh - sorry, I added an error catcher at the last minute but did not run it again - I’ll replace the script above.

-Pascal

Hi Pascal
thanks it runs. but now I get this:
Command: SrfSymmetrifier
Command: _NoEcho
Surface and target point counts differ - the script will exit.

any idea?

thanks a lot
Akash

That means you do not have a point object for each control point… I told you it was a hack. Make sure each control point has one and only one point object coincident or nearby. (It did work on your surface, btw)

-Pascal

Hi Pascal
Sorry but I tried again twice, all the steps from the beginning. same massage.
counting: there are 414 control points in the asymmetrical Srf. and same number in the mirrored point objects

I also mirrored again on the 2nd axis [that was also off symmetry]

No idea what I’m doing wrong …?
here’s the file with the points:
414 symetrical point object.3dm (2.4 MB)

thanks a lot
Akash

OK… the script is dumb - I don’t know if it is worth working on - but it looks for all point objects - I changed it to make you select the point objects - window select all the point objects.
SrfSymmetrifier.py (909 Bytes)

-Pascal

1 Like

Yes, Brilliant! thanks a lot pascal
that last version works great .

Very nice symmetry repair hack.

With best regards
Akash

Hi @pascal
This has been very helpful, and I wanted to check if it is difficult to add the preceding steps to the scrip? then it can work as a complete command [solution]
as it is now, I [or any other user needing this] will likely have to go back here, search for this thread. To find your step by step instruction.

With thanks and best regards
akash

Hi Akash - the reason I did not go that far is that it seems like a very fragile approach to begin with - it would only work on surfaces that are nearly symmetrical to begin with, and the requirement to select the right points etc… makes it just hard to get right as a general tool. I’ll think about doing it a smarter way, this was really just a very fast band-aid solution…

-Pascal

Yes i understand
If something smarter comes along one day it will be great!

thanks a lot
akash