Curva che non vuole chiudersi


#1

saluti serali !

mi trovo con delle curve non perfettamente chiuse che derivano da offsets. Le due estremita’ sono molto vicine , ma non coincidono.

Ho provato a chiuderle con:

if not rs.IsCurveClosed© and rs.IsCurveClosable©:
rs.CloseCurve(c, tolerance=-0.01 )

ma non si chiudono, almeno non tutte.

c’e’ qualche comando poco conosciuto che puo’ far coincidere le due estremita’ ?
o si deve ricorrere all’ ostico rs.Command ?

scorato vi saluto
franco


#2

Ciao Franco
Senza vedere la curva … non saprei.
Poi bisogna vedere se hai dei vicoli, per esempio di tangenza o di forma/curvatura o altro.
Mi sembra comunque un problema interessante da scriptare. :slight_smile:
Come intendi usare rs.Command eventualmente ?


#3

ciao Emilio,

Ho risolto ricorrendo ai grips:

import rhinoscriptsyntax as rs

obj = rs.GetObject(“Select object”)

rs.EnableObjectGrips (obj, enable=True) # mostra i grips di obj

if rs.ObjectGripsOn(obj): #verifica se i grips sono visibili => bool
n_grips= rs.ObjectGripCount(obj) # numero di grips in obj => int

preleva i punti estremi

p_iniziale=rs.ObjectGripLocation(obj, 0)
p_finale=rs.ObjectGripLocation(obj, (n_grips-1))

forza il grip iniziale a coincidere con quello finale

rs.ObjectGripLocation (obj, 0, point=p_finale)

rs.EnableObjectGrips (obj, enable=False) # disabilita i grips

Come vedi forzo un estremita’ a coincidere con l’altra.

posso fare delle varianti :

a) calcolare il punto medio Pm fra le due estremita’ e forzale entrambi su Pm

b) estrarre il secondo ed il penultimo punto e proiettare il Pm sulla loro congiungente : continuita’ in tangenza

c) estrarre in terzo e terzultimo punto, allineare il secondo,pm ed il penultimo : continuita in curvatura

d) ed altri giochetti simili.

E cosi non si deve ricorrere al “Command”

ciao
franco


#4

Grazie per aver postato lo script !

Ciao Franco