I need to find the center of the small holes. Normally, I could snap/inference to center, quad, etc. However, this is a curved shape. How do I find the center of the holes?
Isocurves extracted fron the trimmed cylindrical surfaces inside the holes should be circular. Use the
ExtractIsoCurve command. Just watch which direction isocurves you extract ( u or v) one of them will be straight lines.
I would sketch planar surface, duplicate edge of hole and project those curves onto planar surface to get planar circle.
I would do exactly what dharman said. I’m not sure about what Nosorozec suggested in Rhino 6, but that would not work in previous versions because Rhino would then see the curve as a spline not an arc and would no longer have a center point.
Another way would be to put on the Quad Osnap and then use ‘Between’ on the top and bottom quads.
Thanks for all the options. I Sub-selected/copied the tube, run a plane through it and trimmed. Then copied the circle of the trimmed part. Pascal’s is what I was looking for. No need to create objects.
I was unaware of a “between” snap. But “Mid” finds the same point. I also have to start making use of “ExtractIsoCurves”
That method may not result in the exact center of the cylindrical hole if the surface is not planar or the normal to the hole.
You could also temporarily untrim the surfaces making the center snap available.
I see isocurve extraction works fine if the hole is through a solid and has left a cylindrical surface, but often I just see a hole through a curved single surface with zero thickness. The projected curve really doesn’t have a center anymore, and we are really looking for the surface normal vector through the center of the planar circle that was originally projected. I think there should be a unique normal vector for any plane that can contain the original circle but how do you find it?
It should if it was a real circle originally and you use SimplifyCrv on the result of the projection to re-create a circle - also assuming that the projection is onto a plane that is parallel to the plane of the original circle, otherwise the projection will be an ellipse.
However, the Center osnap should also find the ‘center’ of a closed, planar curve even if it is not a circle…
You can, of course, avoid the hassle by creating a centreline first and drawing the cylinder around it.
@abrahamwechter Are you asking about a hole formed by a circle projected onto a flat planar surface which would be an ellipse, or the hole formed by a circle projected onto a curved surface?
Thanks David, mostly I work with curved surfaces so you are correct, I am asking about holes formed by projecting circles onto curved surfaces.
I’m posting a small experiment I did this morning to investigate this question.
Huge thank you Mitch for suggesting the SimplifyCrv tool to find a center of the projection. As you can see from the attached image and file a new center was found for a circle projected to a complex curved surface but it has moved very slightly. This deviation is insignificant for my work and I can use this as a practical solution.
However I am still curious. It seems to me there should be a unique vector back from the resulting curve to an unknown original circle and I would like to know if there is a way to find it.
hole in mandolin top 1.3dm (3.0 MB)
@abrahamwechter What do you know about the original circle before it was projected? Do you know it’s diameter? Do you know the plane containing the circle?
Determining the size, location and orientation of a circle which was projected onto a curved surface from the projection of the circle onto a curved surface is much more difficult than determining the projection of a circle onto a curved surface. It is somewhat like determining the 5th root of a number vs determining a number raised to the 5th power. The latter is simple arithmetic, the former requires a starting guess and iteration.
For some situations there may not be a single original circle which corresponds to a projection onto a surface. However I think there will be a finite number of original circles. This is similar to an algebraic equation may have multiple roots.
Well, there was a misunderstanding here - when I said
What I meant was that you had to re-project the projected curve back onto the CPlane or to a plane parallel to the original - then SimplifyCrv will turn your planar curve back into a real circle.
SimpifyCrv on a planar curve that has been projected onto a curved surface probably won’t do anything, if the resulting projected curve is not planar within file tolerances, it can’t become a circle again.
Note also that if the projected curve is not planar, then the concept of “center” becomes something in 3D - something different than a 2D “center” of a planar curve, which is guaranteed to lie in the same plane as the curve.
For a projection of a circle in 3D space the “center” would be the axis of the projection of the center of the circle. It would become a point if a plane was specified that contained the circle before it was projected. Then the center of the circle could be the intersection of the center axis and the plane.
“What do you know about the original circle before it was projected? Do you know it’s diameter? Do you know the plane containing the circle?”
This is the information I am looking for- but from your explanation of the math required to work this out with greater precision I think using SimplifyCrv is gong to be the best solution, especially given the relatively moderate curvature of the surfaces and the tolerances I need to work to. Thanks again for your help!
The interesting and very useful thing is that even though the projected curve that started out as a circle but after being projected to a curved surface is absolutely no longer coplanar, SimplifyCrv will still convert it in a way that a center OSnap can place a point very close to the projecting vector from the original circle center. So practically speaking it solves the question of finding the center of the projected circle quite nicely and is much easier that working off the Quad snaps or some other approximation. Thanks again for your help!