您的位置:首页 > 编程语言 > Ruby

三、Sketchup用ruby进行二次开发--实体类和构件图类

2014-08-02 16:38 375 查看
实体类是所有可画图形的子类,如下图所示。实体类的主要子类是构件图类,构件图类是我们今后重点学习的类,包括Image、Text、Edge、Face、Group、Component

Definition和Component Instance。下面对这两个类做简要说明。

1、实体类(Entity)

如上图所示,实体类位于继承关系的顶部,他包含的方法可以被他的所有子类所继承,其中一些方法提供了实体的基础信息,如:

•entityID——返回识别一个实体的唯一ID。

•typename——定义实体的类别(边,面等)。

•valid?/deleted?——定义这个实体是否能够被访问。

•model——返回设计的模型对象。

test_line = Sketchup.active_model.entities.add_line [0,0,0], [1,1,1]
-->  #<Sketchup::Edge:0x767be50>
test_line.typename
--> Edge
test_line.entityID
--> 1895
2、构件图类(The Drawingelement Class)

构件图类是所有Edge, Face, Group, Image, Text,Component Definition和 Component Instance类的父类。它包含的一些方法用于如何把元素图形在Sketchup中显示出来,并设置一些元素的属性信息,例如阴影、组成材质等。

构件图类提供的一个最有用的方法叫bounds,这个方法返回一个BoundingBox对象。它的用法如下所示。

new_line = Sketchup.active_model.entities.add_line [0,0,0], [2,2,5]
<pre name="code" class="html">--><span style="font-family: Arial, Helvetica, sans-serif;"> #<Sketchup::Edge:0x767ab18></span>
box = new_line.bounds
--> <span style="font-family: Arial, Helvetica, sans-serif;">#<Geom::BoundingBox:0x76784d8></span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="csharp">box.center
<pre name="code" class="html">--><span style="font-family: Arial, Helvetica, sans-serif;"> Point3d(1, 1, 2.5)</span>
box.diagonal
--><span style="font-family: Arial, Helvetica, sans-serif;"> 5.74456264653803</span>




2.1边类(Edge)

对于众多的构件图类,最容易理解是的边类(Edge),两点成线,这就是边。下面的语句是添加一条起点为(5,0,0),止点为(10,0,0)的边。

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

在Sketchup中,边的端点用Vertex对象来表示,边类的一些方法就是用来处理端点的:

• vertices ——返回边的两个节点对象( Vertex )• start/end ——返回边的起点或止点对象• other_vertex —— 用边的一个节点得到边的另一个端点• used_by? ——表示一个节点是否在边上

下面再说说边类另外两个方法length和split,一个用于得到边的长度,另一个用于分割边,用法如下:

line = Sketchup.active_model.entities.add_line [0, 0, 0], [6, 3, 0]
line.length
<pre name="code" class="html">--><span style="font-family: Arial, Helvetica, sans-serif;"> 6.70820393249937</span>
new_line = line.split [4, 2, 0]line.length
--><span style="font-family: Arial, Helvetica, sans-serif;"> 4.47213595499958</span>
line.start.position
--><span style="font-family: Arial, Helvetica, sans-serif;"> Point3d(0, 0, 0)</span>
line.end.position
--><span style="font-family: Arial, Helvetica, sans-serif;"> Point3d(4, 2, 0)</span>
new_line.length
--><span style="font-family: Arial, Helvetica, sans-serif;"> 2.23606797749979</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="ruby">new_line.start.position
--><span style="font-family: Arial, Helvetica, sans-serif;"> Point3d(4, 2, 0)</span>
new_line.end.position

--><span style="font-family: Arial, Helvetica, sans-serif;"> Point3d(6, 3, 0)</span>




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: