Grasshopper 的Python电池—获取犀牛空间的文字及轮廓线

用过Grasshopper 的童鞋都知道,在GH里识别犀牛空间里面的文字有点困难,除了用一些插件外,GH原生电池是没办法直接获取的,这里,小编教大家怎样用python代码去获取并加强文字功能。

编写代码之前先说一下犀牛空间里面的文字类型,在犀牛空间中,文字分为两种:

一种是文字块,即Text 类型,输入 命令 Text 调出

另一种是 注解点文本,即 Dot 类型,输入命令 Dot 调出

两者也有区别,Text类型可以设置 文字大小、字体、颜色、对齐 等常用的属性;而注解点仅能设置 字体和大小,而且文字周边是个大黑框(好处是无论视口怎么放大、缩小它都能看见,且正对着屏幕)。

现在我们用python代码去写一个电池,功能是自动获取犀牛空间内的文字块和注解点文字的位置点和文本,且如果是文字块的话获取文字块的字体轮廓线(广告激光雕刻会用得到)。先看看完成图:

__author__ = "抖小腿儿,QQ:241525449"
__version__ = "2021.05.15"

import scriptcontext as sc
import Rhino
import rhinoscriptsyntax as rs
from Rhino.DocObjects import *
import Grasshopper.Kernel

sc.doc = Rhino.RhinoDoc.ActiveDoc

TextDot = rs.ObjectsByType(8192, False)

注解点位置 = []
注解点文本 = []

for guid in TextDot:
    text = Rhino.RhinoDoc.ActiveDoc.Objects.FindId(guid)
    if rs.IsTextDot(text):
        注解点位置.append(text.Geometry.Point)
        注解点文本.append(text.Geometry.Text)

TextEntitys=rs.ObjectsByType(512, False)

文本块位置 = []
文本块文本 = []
文本轮廓线 = []

for guid in TextEntitys:
    text = Rhino.RhinoDoc.ActiveDoc.Objects.FindId(guid)
    文本块位置.append(text.Geometry.Plane.Origin)
    文本块文本.append(text.Geometry.PlainText)

    for curve in text.Geometry.Explode():
        文本轮廓线.append(curve)

sc.doc = ghdoc  


#下面代码会消耗比较多的系统资源,不常使用把括号内的 True 换成 False。
ghenv.Component.ExpireSolution(True)

需要注意的是,最后一句代码比较占资源,慎用!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值