Rhino3D犀牛中文网

标题: 请问如何在RhinoPython脚本中建立曲线文字 [打印本页]

作者: 稻草人    时间: 2017-12-11 23:15
标题: 请问如何在RhinoPython脚本中建立曲线文字
本帖最后由 筑梦NARUTO 于 2017-12-13 23:20 编辑

AddText可以实现,但需要另外炸开。因为工作中需要建立的曲线文字是单线的,所以用AddText建立再炸开并不太方便(AddText用单线字体炸开后也有双线)。
有没有办法在脚本里面可以直接实现,像指令文字物件(! _TextObject)的功能一样。
太绕,我也不知道说明白没有,帖子里面的图片是我随便弄的,自己的电脑上没Rhino。
恳求大佬们解答。
(, 下载次数: 181)

作者: 筑梦NARUTO    时间: 2017-12-12 00:20
可以使用rhinopython创建text之后再使用ExplodeText函数炸开text

作者: 稻草人    时间: 2017-12-12 17:55
筑梦NARUTO 发表于 2017-12-12 00:20
可以使用rhinopython创建text之后再使用ExplodeText函数炸开text

谢谢版主的回复,但是单线字体用这个办法似乎不行。 (, 下载次数: 195)

右边是炸开、后的单线字体,左边是通过! _TextObject建立的。
最近才学习如何写脚本,所以疑惑比较多。

作者: 筑梦NARUTO    时间: 2017-12-12 22:07
本帖最后由 筑梦NARUTO 于 2017-12-12 22:09 编辑

上面是脚本炸开的字体,下面是TextObject生成的,你觉得有区别么?你放上你的代码,我看看你是不是参数出问题了。你那个出问题是因为你的字体设置出了问题。

作者: 稻草人    时间: 2017-12-13 19:13
筑梦NARUTO 发表于 2017-12-12 22:07
上面是脚本炸开的字体,下面是TextObject生成的,你觉得有区别么?你放上你的代码,我看看你是不是参数出问 ...

因为上班的电脑管制,而且刚刚回来才看到回复的信息。
是字体的问题,因为我们需要激光雕刻,一般都是用的单线字体(Delcamgt.ttf,已上传在帖子里),这样激光加工会省很多时间。
这个字体在! _TextObject选项中,勾选单线,会以单线状态显示出来。如果不勾选,单线字会被封闭起来。
其实问题在于脚本里面没办法实现类似! _TextObject中‘使用单线字形’这个功能。
十分感谢版主的耐心解答,很抱歉昨天没在帖子里说清楚。
(, 下载次数: 198)
(, 下载次数: 914)

作者: 筑梦NARUTO    时间: 2017-12-13 22:12
本帖最后由 筑梦NARUTO 于 2017-12-13 22:14 编辑

如果你要想和rhino里的一模一样,可以直接调用rhino里的命令,这里写个简单的脚本,你看看,应该能满足你的要求。
[AppleScript] 纯文本查看 复制代码
#coding=utf-8
#作者:月之眼

import rhinoscriptsyntax as rs


def CreateText(text_string,pt,ht,font):
    #创建单线text
    opts='_GroupOutput=_Yes _FontName="{}" _Italic=_No _Bold=_No '.format(font)
    opts+='_Height={} _Output=_Curves _AllowOpenCurves=_Yes '.format(ht)
    opts+='_LowerCaseAsSmallCaps=_No _AddSpacing=_No '
    rs.Command("_-TextObject "+opts+'"'+text_string+'"'+" " + str(pt),False)
    if rs.LastCommandResult()==0: return rs.LastCreatedObjects()

def Main():
    font_style="Arial"
    #字体
    text_String = "月之眼"
    #需要写的文字
    txt_ht=10
    #字体大小
    txt_objs=[]
    pts = rs.GetPoints(message1 = "创建字体的位置")
    if(pts==None):return
    rs.EnableRedraw(False)
    for pt in pts:
        txt_obj=CreateText(text_String,pt,txt_ht,font_style)

if __name__=="__main__":
    Main()

作者: 稻草人    时间: 2017-12-13 22:44
筑梦NARUTO 发表于 2017-12-13 22:12
如果你要想和rhino里的一模一样,可以直接调用rhino里的命令,这里写个简单的脚本,你看看,应该能满足你的 ...

太感谢版主了,真的非常感谢,终于实现单线了,再也不用手工修改了。




欢迎光临 Rhino3D犀牛中文网 (https://rhino3d.asia/) Powered by Discuz! X3.3