franco
16 Settembre 2016, 5:20pm
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
emilio
16 Settembre 2016, 10:12pm
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.
Come intendi usare rs.Command eventualmente ?
franco
19 Settembre 2016, 7:18am
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
emilio
19 Settembre 2016, 10:00am
4
Grazie per aver postato lo script !
Ciao Franco