No.11_SketchUp Ruby基础-第二章 Drawingelement类和Edge类

文章目录[隐藏]

2.4 Drawingelement类

 

该Drawingelement类是线Edges,面Face,群组Group,图像Image,文字Text,ComponentDefinition和ComponentInstance等类的超类。许多在这个类定义的方法用来设置属性,如阴影,材质组成,以及该元素是否是隐藏或可见。这些都可以在SketchUp的实体信息对话框中看到,如图3.3所示:

    

    该Drawingelement类提供了一个非常有用的方法,该方法返回一个BoundingBox的对象。这代表了最小矩形体积,它可以包含在Drawingelement同时保持其侧面与x,y和z轴对齐。下面的命令创建的BoundingBox从绘制线[0,0,0],[2,2,5]中:

    new_line = Sketchup.active_model.entities.add_line [0,0,0], [2,2,5]

             → #<Sketchup::Edge:0x767ab18>

    box = new_line.bounds

             → #<Geom::BoundingBox:0x76784d8>

    一旦获得BoundingBox,它有方法提供关于该元素的尺寸,对角线,角落和最大/最小点的信息。下面的命令显示的BoundingBox的中心的位置和它的对角(单位为英寸)的长度:

    box.center

     → Point3d(1, 1, 2.5)

    box.diagonal

     → 5.74456264653803

    当你需要确定用户是否点击了一个形状的BoundingBox对象是很有用的。一旦你获得了形状的BoundingBox,您可以用用户的鼠标点击的位置比较其尺寸。

2.5 Edges(线)

 

在Drawingelement所有子类中,最容易理解的是Edge,它表示两个点之间的线段。Edge对象使用Entities类的add_line方法创建的,是由线的起点和终点的位置创建。当你调用这个方法,SketchUp中绘制一条线的两个点之间增加了一个Edge对象到目前的Entities集合中。例如,下面的命令创建一条线从[5,0,0]到[10,0,0]之间:

    Sketchup.active_model.entities.add_line [5, 0, 0], [10, 0, 0]

    Edge类的方法可以分成两类:

    1. 配置Edge的外观的方法

    2. 获取对象连接到Edge的方法

    在第一类中的方法配置在设计窗口中线(Edge)的可见性。除了由Drawingelement类提供的隐藏方法,Edge提供柔软和光滑的方法。重要的是要记住一个隐藏线和流畅的线条之间的区别:一个流畅的线条结合相邻表面成一个单一的(通常弯曲)表面,而一个隐藏的行不改变相邻表面。

    第二类方法中,all_conected方法返回一个Entity对象数组连接到Edge。类似的,faces方法是一个Face对象数组连接到Edge

    在SketchUp中,线的结束点代表使用Vertex对象,Edge类包含一系列的方法

    • vertices – 返回Edge数组的两个Vertex对象

    • start/end – 返回Edge的起点和重点Vertex对象

    • other_vertex – 指定了Edge的Vertex对象后,此方法返回另一个

    • used_by? – 指定的Vertex对象是否已经连接到Edge对象

    还有两个没有上面分类中的方法length和split。第一个返回对应线段的长度。第二个接收线路上的点,并建立第二线段对象。第一个线对象仍然只能到达指定的分裂点和第二个线对象继续从分裂点到原来的线的结束点。以下命令显示了这些方法是如何在实践中被调用:

    line = Sketchup.active_model.entities.add_line [0, 0, 0], [6, 3, 0]

    line.length

     → 6.70820393249937

    new_line = line.split [4, 2, 0]

    line.length

     → 4.47213595499958

    line.start.position

     → Point3d(0, 0, 0)

    line.end.position

     → Point3d(4, 2, 0)

    new_line.length

     → 2.23606797749979

    new_line.start.position

     → Point3d(4, 2, 0)

    new_line.end.position

     → Point3d(6, 3, 0)

    

(特别注明:本教程转自”一米网校”转载请与原作者联系。)

0

评论0

请先

没有账号? 忘记密码?

社交账号快速登录