Editare polilinea

Salve, vorrei capire come potere editare polilinea con cancellazione e spostamento di alcuni vertici in modo che i segmenti che congiungono il nodo selezionato con gli altri nodi adiacenti siano considerati come linee e non come curve.

Se tento di spostare vertice si forma la solita curva di Bezier… :triumph:

A me non è mai successo questo. Ho fatto una prova e tutto è Ok. Allega un file con una polilinea così possiamo vedere dove è il problema.

Gancio.3dm (6,4 MB)
Allego il file… è l’elemento curva che dovrei editare

Mauro ciao,
quella non è una polilinea. Una polilinea è una curva di grado 1 con una serie di segmenti connessi.
Nel tuo caso è una curva chiusa di grado 2, quindi non una polilinea.
Gli archi sono curve di grado 2 e se unisci segmenti che sono di grado 1 ad archi succede che la curva composita finale assume il grado più alto. In questo caso: grado 2. Quindi se provi ad editare quello che “era” una retta, ora è una curva di grado 2 e ti si incurva.
E’ tutto normale e giusto ed è la stessa cosa per qualsiasi modellatore NURBS.

Rhino sarà senz’altro differente però in Autocad si potevano gestire comunque gli elementi retta rispetto a curve.

Puoi editare selezionando le linee usando i tasti CTRL+Maiuscolo e click. Così le puoi muovere ma non modificare come con i punti di controllo.
Diversamente esplodi e poi muovi i punti di controllo.
Quando dici che vuoi editare, esattamente, cosa vuoi fare?

Editare intendo modificare la posizione dei vertici di una polilinea o di una curva.

Allega degli esempi così da capire quello che vuoi.

No non si può fare in nessun modellatore nurbs come dici tu. Devi esplodere e muovere i punti delle singole curve. Non è Autocad.

Non so se serve a qualcosa …
Credo di aver capito che il problema sia spostare gli estremi di linee ed archi.
Per le linee, una volta esploso e visualizzati i CV, basta selezionare e trascinare.
Per gli archi ho provato a fare una cosa per spostare un estremo senza perdere l’altro estremo e relativa tangente …
Poi magari si puo’ gia’ fare e io non me lo ricordo ( di solito e’ cosi’ :smile: )
… Comunque, qui c’e’ lo script …

Ciao !

import rhinoscriptsyntax as rs

def main():
  tup = rs.GetCurveObject( message = 'Arc to edit ?', preselect = False )
  if not tup:
    return
  gid = tup[ 0 ]
  selpt = tup[ 3 ]
  if ( selpt.DistanceTo( rs.CurveStartPoint( gid ) ) <
      selpt.DistanceTo( rs.CurveEndPoint( gid ) ) ):
    pt1 = rs.CurveStartPoint( gid )
    pt0 = rs.CurveEndPoint( gid )
    u1, u0 = rs.CurveDomain( gid )
    ptan = pt0 - rs.CurveTangent( gid, u0 )
  else:
    pt0 = rs.CurveStartPoint( gid )
    pt1 = rs.CurveEndPoint( gid )
    u0, u1 = rs.CurveDomain( gid )
    ptan = pt0 + rs.CurveTangent( gid, u0 )
  curly = rs.CurrentLayer()
  arcly = rs.ObjectLayer( gid )
  rs.CurrentLayer( arcly )
  rs.HideObject( gid )
  fir = rs.FirstObject()
  cmd = '_Arc _S %s _D %s' % ( str( pt0 ), str( ptan ) )
  rs.Command( cmd )
  newid = rs.FirstObject()
  rs.CurrentLayer( curly )
  if newid == fir:
    rs.HideObject( gid )
  else:
    rs.HideObject( gid )
    rs.DeleteObject( gid )
    
main()