Wish: Editing arcs

Here’s a little vid of the bug/unexpected behavior I mentioned above.

2 Likes

I’m guessing that while your client may not have stated this already, they may also be looking for constraints based (AKA parametric) drawing.

If that’s the case, then unfortunately they can’t use Rhino as a replacement for obvious reasons.

Hi @cdordoni,

no constraints based modeler is needed, just easy editable arcs.

Cheers

Michael

Hi @sgreenawalt

Thank you for your contribution.

What I see here is that if you type a negative value instead of defining the end location to shorten the arc, it’s working as expected.

Bug or not, there’s indeed something not clear regarding the mouse click VS number input.

Regards
Rodolfo Santos

1 Like

Hi

Those AutoCAD pictures make me think that this is an arc defined by 3 points, and that the arc is edited moving around one of those points.

Obviously I may be wrong …
Anyway I tried to write down a little test script.

The script always moves the mid point and does not care about colors and layers.
It’s just a test to find out is this kind of behaviour is what the user needs.
( Also, now I have not the time to make up a better script that also be able to move end points, sorry … )

import rhinoscriptsyntax as rs
import Rhino
import scriptcontext
import System

class movemid( Rhino.Input.Custom.GetPoint ):

  def __init__( self, stap, midp, endp ):
    self.stap = stap
    self.midp = midp
    self.endp = endp
    self.colr = System.Drawing.Color.Green

  def OnDynamicDraw( self, eventargs ):
    cp = eventargs.CurrentPoint
    if cp:
      arc = Rhino.Geometry.Arc( self.stap, cp, self.endp )
      if arc.IsValid:
        eventargs.Display.DrawArc( arc, self.colr )
        eventargs.Display.DrawPoint( cp, self.colr )

def main():
  gid = rs.GetObject( 'Arc ?', preselect = True )
  if not gid:
    return
  stap = rs.CurveStartPoint( gid )
  midp = rs.CurveMidPoint( gid )
  endp = rs.CurveEndPoint( gid )
  gep = movemid( stap, midp, endp )
  gep.Get()
  res = gep.Result()
  if res == Rhino.Input.GetResult.Point:
    midp = gep.Point()
    rs.AddArc3Pt( stap, endp, midp )
    rs.DeleteObject( gid )

main()

(Tested on Rhino 6)

HTH, Cheers

2 Likes

Extend command has the same bug.

1 Like