如何在GetObject方法中,获取到鼠标点击到的对象上面的那个点?

我想在选择一个Brep的时候,高亮所选择的那个Face,


这么写,一直失败。。。

用GetPoint以后再 GetPoint.Constrain Method (Brep, Int32, Int32, Boolean) 好像不怎么方便

请你将问题的前因后果和背景介绍清楚,不然帖子放一个礼拜也不会有回帖的。
什么开发环境 整个程序什么目的 等等

GetResult 是选取的结果,不是选取的参数设置,只有选取结果是 Result.Point 的时候,get.Point() 才能有有效数值。

高亮所选择的 Face 可以参考下面的范例:

# coding=utf-8
import Rhino
import scriptcontext

def GetObject():
    gs = Rhino.Input.Custom.GetObject()
    gs.SetCommandPrompt("Select Brep surface")
    gs.GeometryFilter = Rhino.DocObjects.ObjectType.Surface
    gs.SubObjectSelect = True
    gs.DeselectAllBeforePostSelect = True
    gs.OneByOnePostSelect = True
    gs.Get()
    if gs.CommandResult()!=Rhino.Commands.Result.Success:
        return gs.CommandResult()

    objref = gs.Object(0)
    obj = objref.Object()
    if not obj: return Rhino.Commands.Result.Failure
    surface = objref.Surface()
    if not surface: return Rhino.Commands.Result.Failure
    
    # HighlightSubObject 只能在选择的过程中亮一下
    obj.HighlightSubObject(surface.ComponentIndex(),True)
    # 让选完了还亮就得用 SelectSubObject 选中子物件
    obj.SelectSubObject(surface.ComponentIndex(), True, True, True)
    
GetObject()
1 个赞

谢谢回复,这个问题已经接近