#我想只显示文字还有a的输出端口,而不想在rhino里bake出来(这个一执行rhino就自动bake了文字)。望解惑,谢谢。。。
import rhinoscriptsyntax as rs
import Rhino as rh
import scriptcontext as sc
sc.doc = rh.RhinoDoc.ActiveDoc
a = rs.AddText(t,p,s,f,fs,j)
sc.doc = ghdoc
addtext.gh (11.5 KB)
#我想只显示文字还有a的输出端口,而不想在rhino里bake出来(这个一执行rhino就自动bake了文字)。望解惑,谢谢。。。
import rhinoscriptsyntax as rs
import Rhino as rh
import scriptcontext as sc
sc.doc = rh.RhinoDoc.ActiveDoc
a = rs.AddText(t,p,s,f,fs,j)
sc.doc = ghdoc
需要使用如下override
public override void DrawViewportWires(IGH_PreviewArgs args)
并调用args.Display.Draw2dText函数
Rhinocommon-Draw2dText
大致的架构如下:
文字的参数都定义为全局变量
在主程序中从电池输入端读取这些参数
在重载的DrawViewportWires中使用Draw2dText函数,并调用这些全局变量
Python部分我没有用过,C#的部分可以给你个文件仅供参考。
Draw2DText.zip (3.7 KB)
C#不懂啊,这代码看的有点晕 能给个C#的gh文件吗,有输入和输出端口的。。谢谢。。
还有我想问下你这个有文字对齐方式的选项吗?
Draw3Dtext有多个函数,每个函数有不同的参数数量和种类。你可以根据需要选择。
注意你这里有三套逻辑
1:承载数据,Text3D
2:bake到犀牛,Rhino.RhinoDoc.ActiveDoc.Objects.AddText
3:显示,只能用重载DrawViewport系列的函数
注意其中1是可以涵盖位置平面的,因此2和3的函数都会有两种大类,一类允许直接获取text3d,另一类问你要string和位置平面。
gh文件能分享吗 .
同学这一共只有五行代码呢
既然想要写代码,就得花额外的功夫,如果5行代码都懒得抄。那你的前路漫漫。。。。
其实怎么加bake开关我实在搞不懂 我初学ghpython(只会套用一些简单的格式),想实现一些Rhino里的一些简单的功能。C#就更不懂了。谢谢老师耐心解答
python问题可以多请教月神
不过还是要自己多写,能手打的就手打,抓住每个机会操练。
尽量不要去求文件
感谢老师 这个的基础上加一个手动bake的布尔开关该如何实现?
很简单,如果是伪代码
如果 b=true
那么 doc.objects.addtext()
b链接button电池即可。
我小白,具体怎么加上去?
将if条件加在你这句代码上面即可。这属于最基本的程序基础知识。
如果你想要接触代码解决问题,又没有任何基础,你应该做的不是在论坛里一句句代码问出来,或者直接求文件。
应该补习一些编程方面的基础知识,至少得知道程序里面的:顺序,选择和循环这三种流程。以及每种语言的语法(C#或python)如何表达这三种流程。
请注意,不要将论坛当作另一个伸手的qq群。也不要将“我小白”当作伸手的任何借口。
https://developer.rhino3d.com/api/RhinoCommon/html/T_Rhino_DocObjects_TextVerticalAlignment.htm
https://developer.rhino3d.com/api/RhinoCommon/html/T_Rhino_DocObjects_TextHorizontalAlignment.htm
举例:
Rhino.DocObjects.TextHorizontalAlignment.Left表示左对齐
Rhino.DocObjects.TextVerticalAlignment.Top表示顶对齐
你也可以直接用数字代替。具体可以看链接。
但目前看你的程序,他读取到的是float,所以出错了。
老师说的对,我现在的阶段就是套用最简单的格式解决一些小问题。还没有系统的学。就是抄近路先解决一些实际遇到的问题。我知道这样不好,但现阶段就是这样的。见谅。。。打搅了。。。