Beginner question. Curve relationships

Hi,

I’m starting out in Rhino and I’m having difficulty with a few things.Mainly, I can’t work out how to set relationships between curves.
I have some experience with Solidworks and there was a very useful relations feature that you could use to make circles concentric, tie the end of a line to a curve and so on.
Specifically, I’ve drawn a 26cm diameter circle and I want to draw a 17cm horizontal chord at the top and bottom. I can’t figure out how to do this very basic thing.
Any help or advice would be appreciated.

Thanks

Hi Richard,
There are no relations in Rhino (you could use Grasshopper if you anticipate lots of changes and need things to be parametric). To do what you need you will have to create some construction geometry - probably many ways of doing so, below is one way:

  1. your circle with diameter 26
  2. construction pline: 17/2 horizontal and then vertical to intersect the circle.
  3. horizontal line from the intersection until it intersects the circle again.
1 Like

Hi Wim,

Thanks for your answer. I will do it in that way as you suggested.
It’s a shame that there are no relations in Rhino, I think it would be a good improvement.

It is not a shame because Rhino is a free‑form modeler. Solidworks (or other parametric CAD systems) and Rhino are designed for different purposes. I use Rhino and Solidworks daily in my job and I am enjoying advantages of both modelers.
You can add some relationships by buying Rhinoworks plugin
http://drivingdimensions.com/Rhino/overview/

1 Like

Another method is:

First : _Line pick first point on circle , lenght of chord pick second point on circle with intersect=On.
Second: _Rotate MidPoint=On and Quadrant=On
Ciao Vittorio


Hi Richard
Alternatively you can use this script in Python
Ciao Vittorio

import rhinoscriptsyntax as rs

def corda():
    cerchio=rs.GetObject("select circle ",4)
    if rs.IsCircle(cerchio):
        raggio=rs.CircleRadius(cerchio)
        c=raggio*2        
        lun_corda=rs.GetReal("Chord value <max length="+str(c)+">")
        dist=(raggio*raggio-lun_corda*lun_corda/4)**0.5
        cc=rs.CircleCenterPoint(cerchio)              
        p1=list(cc)
        p2=list(cc)       
        p1[1]=p1[1]+dist
        p1[0]=p1[0]+lun_corda/2
        p2[1]=p2[1]+dist
        p2[0]=p2[0]-lun_corda/2
        corda=rs.AddLine(p1,p2)
        pm=rs.CurveMidPoint(corda)
        rs.SelectObject(corda)
        rs.Command("_Rotate W"+str(cc)+"  W"+str(pm))
        rs.UnselectObject(corda)
corda()

Vittorio,

I’m not familiar with Python but it may be useful to other users. The other method you showed is useful and is similar more similar to the way that I was trying to do it originally. Thanks for your answers.

Nosorozec,

I understand that they’re different systems but all models begin with a sketch and in making those sketches, why can’t we use constraints or relationships rather than going about the houses to draw a line in a certain place. Perhaps I’m missing something but if they’re available in a third party plugin, why can’t they be added to the official software to improve the core program.

That could be said about all plug-ins for Rhino. The answer it that it would make base Rhino more expensive to develop and support (and therefore buy); there are several thousand feature requests like this already on the “pile”… --Mitch

Not necessarily in rhino. You can start with a surface or a primitive polysurface just as easily as with a line sketch.