Python --- 问个关于脚本标注的问题【已解决】

[复制链接]
跳转到指定楼层
本帖最后由 Jorin 于 2014-7-10 14:56 编辑

如何用代码实现大量三角形的角度标注,谢谢
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享
关于大陆地区Rhino原厂培训中心
 楼主| 筑梦NARUTO 发表于 2014-7-16 11:44:20
5
代码文件

多个三角形标注角度.rar

810 Bytes, 下载次数: 77

评分

参与人数 1坛币 +2 收起 理由
Jessesn + 2 很给力!

查看全部评分

 楼主| 筑梦NARUTO 发表于 2014-7-16 09:21:45
4
本帖最后由 筑梦NARUTO 于 2015-7-20 08:05 编辑

[mw_shl_code=applescript,true]#coding=utf-8
#在rhinopython中调用rhinocommon需要将其实例化才会在rhino视窗显示GUID的东西
import Rhino
import scriptcontext as sc
import math
import rhinoscriptsyntax as rs

def dimensions(tri,pos,of):
    vertices=rs.PolylineVertices(tri)
    ang1=rs.Angle2((vertices[1],vertices[0]),(vertices[1],vertices[2]))
    ang2=rs.Angle2((vertices[0],vertices[1]),(vertices[0],vertices[2]))

    ang3=rs.Angle2((vertices[2],vertices[0]),(vertices[2],vertices[1]))

    rad1=math.pi/180*ang1[0]
    rad2=math.pi/180*ang2[0]
    rad3=math.pi/180*ang3[0]
    #print(ang1,ang2,ang3)
    x1=vertices[0]-vertices[1]
    y1=vertices[2]-vertices[1]
    pl=rs.PlaneFromFrame(vertices[1],x1,y1)
    x2=vertices[1]-vertices[0]
    y2=vertices[2]-vertices[0]
    p2=rs.PlaneFromFrame(vertices[0],x2,y2)
    x3=vertices[0]-vertices[2]
    y3=vertices[1]-vertices[2]
    p3=rs.PlaneFromFrame(vertices[2],x3,y3)
    arc1=Rhino.Geometry.Arc(pl,rs.VectorLength(x1)/pos,rad1)
    arc2=Rhino.Geometry.Arc(p2,rs.VectorLength(x2)/pos,rad2)
    arc3=Rhino.Geometry.Arc(p3,rs.VectorLength(x3)/pos,rad3)
    dim1=Rhino.Geometry.AngularDimension(arc1,of)
    dim2=Rhino.Geometry.AngularDimension(arc2,of)
    dim3=Rhino.Geometry.AngularDimension(arc3,of)
    sc.doc.Objects.AddAngularDimension(dim1)
    sc.doc.Objects.AddAngularDimension(dim2)
    sc.doc.Objects.AddAngularDimension(dim3)
    sc.doc.Views.Redraw()



trigon=rs.GetObjects("选择多个三角形",rs.filter.curve)
pos=rs.GetInteger("标注位置(距顶点几分之一的位置标注)",4)
of=rs.GetReal("标注偏移",0)
for tri in trigon:
    dimensions(tri,pos,of)
[/mw_shl_code]


前几天火车回家,补上多个三角形标注的代码。。再次感谢J大解答

QQ图片20140716091550.jpg (236.32 KB, 下载次数: 16)

QQ图片20140716091550.jpg
 楼主| 筑梦NARUTO 发表于 2014-7-9 20:13:05
3
本帖最后由 筑梦NARUTO 于 2014-7-9 20:14 编辑
Jorin 发表于 2014-7-9 17:19
这个脚本的难点在于,Rhino Python Script 使用的rhinoscriptsyntax模块不包含绘制角度尺寸标注的函数,要标 ...

感谢J大解释,搞忘了rhinocommon创建的东西需要自己实例化了
Jorin 发表于 2014-7-9 17:19:32
2
本帖最后由 Jorin 于 2014-7-9 17:29 编辑

这个脚本的难点在于,Rhino Python Script 使用的rhinoscriptsyntax模块不包含绘制角度尺寸标注的函数,要标注角度,就需要借助rhinocommon自己写一段代码。

我这里写了一段标注一个三角形中一个角的代码,标注多个三角形各个角的代码,楼主在这段的基础上发挥吧。

[mw_shl_code=python,true]#coding=utf-8
import Rhino
import scriptcontext as sc
import math
import rhinoscriptsyntax as rs

tri=rs.GetObject("选择一个三角形(多重直线)",rs.filter.curve)
pos=rs.GetInteger("标注位置(距顶点几分之一的位置标注)",6)
of=rs.GetReal("标注偏移",0)
vertices=rs.PolylineVertices(tri)
angle=rs.Angle2((vertices[1],vertices[0]),(vertices[1],vertices[2]))
rad=math.pi/180*angle[0]
x=vertices[0]-vertices[1]
y=vertices[2]-vertices[1]
pl=rs.PlaneFromFrame(vertices[1],x,y)
arc=Rhino.Geometry.Arc(pl,rs.VectorLength(x)/pos,rad)

dim=Rhino.Geometry.AngularDimension(arc,of)
sc.doc.Objects.AddAngularDimension(dim)
sc.doc.Views.Redraw()[/mw_shl_code]
您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则