Hi,
I’d like to know how to write to move selected control points onto nearest surface or curve by Python.
Thanks.
Hi,
I’d like to know how to write to move selected control points onto nearest surface or curve by Python.
Thanks.
Hi Katsu, not shure if it works in all cases but try:
import rhinoscriptsyntax as rs
import scriptcontext as sc
def PullGripsToClosest():
grips = rs.GetObjectGrips("Select grips", True, True)
if not grips: return
objs = rs.ObjectsByType(4+8, select=False, state=1+2)
if not objs: return
for g in grips:
# remove objects having grips selected from
# the list of objects allowed to pull to
if g[0] in objs: objs.remove(g[0])
obj, close_pt = rs.PointClosestObject(g[2], objs)
if obj: rs.ObjectGripLocation(g[0], g[1], close_pt)
sc.doc.Views.Redraw()
if __name__=="__main__":
PullGripsToClosest()
Note: you can select controlpoints of surfaces or curves and it will pull them to the closest surface or curve. Depends on what is closer. It will not pull to itself
c.
Hi clement,
Thank you !!
@clement
Thank you for your help. Does the code could support modeling history? For example, if I want to adjust the shape of the nearest curve or surface, the moving points will update automatically, similar to the history.
If the grips you are moving belong to an object that was used as input to a history-support command, then yes.
– Dale
No, it is not used as an input to history support commands. I wonder if the Rhino SDK can do this?
Hi @Jess,
Rhino’s history is command based. History-supporting commands record the input that produces an output. When the input changes (perhaps by using a script) then the output is regenerated by replaying the command.
Hope this helps.
– Dale