文字的显示怎么实现?

牛逼! :+1: 感谢。 :heart:

感谢大佬的回答,很抱歉在老帖下回复。我不太了解SDK Mode和Grasshopper API,想请教一下原理。

  1. 基于我仅有的认知,这种方法是通过把Grasshopper.Kernel.IGH_PreviewObject Interface中自带的DrawViewportWires Method给override成自定义的版本来实现的吗?
  2. 使用这个Interface可以和Rhino API中的Rhino.Display.DisplayPipeline相连?
  3. 而override后的method在每次运行SDK Mode的电池时会自动执行?
    所以想实现这个效果只能在SDK Mode下写?无法主动在Script Mode中实现吗?
    以及想请教一下有没有了解SDK Mode的比较全面的讲解,谢谢。

都是用的DisplayPipeline。IGH_PreviewObject 的Display属性就是返回了一个DisplayPipeline对象。

不是只能在SDK Mode下写,也可以直接调用DisplayPipeLine,只是用SDK Mode要简单一点。

,这个链接是我15年写的,你可以参考一下。

感谢大佬的回复,Display.CustomDisplay的方法我找到了,具体使用中发现在globals()中检查已有的CustomDisplay时会在写完代码点TryOK的时候残留一个图形,其他时候可以正常把前一个图形删掉。如果把Customdisplay创建在sticky中似乎不会有这个问题。
(图一)
当然也可以额外写一个清空程序
(图二)
接下来的话题有点跑题,我原本的需求是生成Brep的预览,但在CustomDisplay的API底下没找到直接生成Brep的方式,通过大佬的SDK的格式成功实现了,非常感谢。
(图三)
但还是斗胆问一下,不用SDK有办法直接生成Brep的预览吗。

很抱歉新人只能传一张图,我把图合了一下

不用SDK有办法直接生成Brep 的预览是啥意思?像gh那样显示?还是你要自己调用opengl写渲染类的东西?

Script Mode中直接调用Rhino.Display.DisplayPipeline中的Method,比如DrawBrepShaded,


并通过DisplayMaterial设置Brep显示的颜色、透明度等。

在尝试调用DrawBrepShaded时发现self需要的类型是DisplayPipelineDisplayPipelineConstructor似乎是不让用的,不太确定是不是要先找到专门用来做这个事情的Pipeline object再用它调用Method。确实不懂Rhino的显像原理这一块,听说很复杂。

纯粹是个人好奇了,如果特别复杂的话我另开新帖问吧,不好意思。