Ho fatto qualche prova e alla fine mi sono buttato giù uno script che fa circa quello che hai chiesto… poi bisogna vedere come inserire lo stesso procedimento nel plugin…
Option Explicit
'Script written by Lucio Zadra
'Script version giovedì 11 settembre 2025 18:23:17
Call Main()
Sub Main()
Dim CrvId, Segm, Rad, CrvArr, OffsArr(), i, ResultArray, GrpName
i = 0
'Seleziono la curva da offsettare
CrvId = Rhino.GetObject("Seleziona la curva da elaborare", 4, VbTrue)
If Not IsNull(CrvId) Then
Rad = Rhino.GetReal("Inserisci la larghezza dell'offset", 2)
If IsNull(rad) Then Exit Sub
CrvArr = Rhino.explodeCurves(CrvId)
If Not IsNull(CrvArr) Then
Rhino.EnableRedraw False
For Each Segm In CrvArr
ReDim Preserve OffsArr(i)
Rhino.SelectObject Segm
Rhino.Command "_Offset " & Cstr(Rad) & " _Bothside _Cap=Round _Enter", False
Rhino.UnselectAllObjects
If Rhino.IsCurveClosed(Rhino.FirstObject) Then
OffsArr(i) = Rhino.FirstObject
i = i + 1
Else
Rhino.DeleteObject Rhino.FirstObject
End If
Next
Rhino.DeleteObjects CrvArr
ResultArray = Rhino.CurveBooleanUnion(OffsArr, True)
If IsNull(ResultArray) Then
'Rhino.DeleteObjects OffsArr
Rhino.EnableRedraw True
Exit Sub
End If
GrpName = "Gruppo" & Cstr(Time)
Rhino.AddGroup GrpName
Rhino.AddObjectsToGroup ResultArray, GrpName
Rhino.EnableRedraw True
End If
End If
End Sub
E’ in VbScript perchè io sono vecchio e non mi sono adeguato…
Però funziona… su per giù, almeno per i test che ho fatto…