🌓
搜索
 找回密码
 立即注册

Ruby for SketchUp之点、线、面

瘴贝剂群 2022-8-24 11:37:51 94561

在前面的几个章节中我们主要是给小

伙伴们展示了我们能在SkecthUp中

做些什么,重在展示视觉方面,所见

即所得。讲得是比较实用的技能。

接下来

我们具体来看看代码应该怎么写,点

、线面、群组、组件、组件定义、图

层等实体对象。探究它们是如何从点

线面组变成高楼大厦的。

这章就聊聊【点、线、面】

0 1、点【Point3d】对象

Point3d类使您可以处理3D空间中的

点。该点基本上只是一系列代表x,y

和z坐标的值。参数值指定为[x,y,z]。

调用方法:

#无参数时,在原点创建一个点
pt1 = Geom::Point3d.new# 创建一个x为100,y为200,z为300的点
pt2 = Geom::Point3d.new(100,200,300)

除了下面的方法之外,Array类还包含

一系列与几何相关的方法,因为

Point3d对象也可以表示为3元素数组

调用方法:

# 也可以用三维数组来创建一个点
pt3 = [100,200,300]

在Point3d对象中常用的方法:

1、计算两个点之间的距离

#distance(point2) ⇒ Length

调用方法:

point1 = Geom::Point3d.new(1,1,1)
point2 = Geom::Point3d.new(10,10,10)
distance = point1.distance(point2) # =>~ 396 mm

2、通过向量偏移点并返回新点。

向量的长度不能为零。点本身不变

#offset(vector, length = vector.length) ⇒ Geom::Point3d

会改变点本身

#offset!(vector, length = vector.length) ⇒ Geom::Point3d

调用方法:

point1 = Geom::Point3d.new(10,10,10)
vector = Geom::Vector3d.new(0, 0, 1)
point2 = point1.offset(vector) # point1本身不改变
point3 = point1.offset!(vector) # point1本身被改变

还有很多比重要的方法如:

transform、project_to_line、project_to_plane、on_line?、on_plane?


小伙伴可以下去实践一下,在后期的制作中也会讲解到

0 2、线【Edge】类

Edge类包含修改和

提取边缘信息的方法

它继承于Drawingelement类

它的创建方法在entities对象提供

edge = entities.add_line pt1, pt2

在Edge类中常用的方法很多:

#all_connected ⇒ Array

用来检索连接到边的所有实体,包括边本身

h4k48fZZG1h888Hk.jpg

2、两条边的公共面

#common_face(edge2) ⇒ Sketchup::Face?

示例:

msSj48EN9jUUi4Ss.jpg

3、边相连的所有面

#faces ⇒ Array

4、边平滑

#smooth=(value) ⇒ Boolean #设置平滑边#smooth? ⇒ Boolean #判断边是否被平滑

5、边柔化

#soft=(value) ⇒ Boolean # 设置柔化边#soft? ⇒ Boolean #判断边是否被柔化

6、边的所有端点

#vertices ⇒ Array

注意:返回顶点对象的数组并不是Point3d对象。

在这一部分很有趣,小伙伴可以动手熟悉一下这些方法。

03、面【Face】类

在SketchUp中面是指有三边

或更多边的封闭的多边形。

我们知道面是有点和线构成的,所以

在Face类中提供了获取面信息的方法

跟edge一样face的创建由entities提供

创建方法:

face = entities.add_face(points) # points是一组有序的点
face = entities.add_face(edges) # edges是一组有序的边

同样在Face类中也提供了很多方法:

1、连接到face上的所有实体,包括face本身

#all_connected ⇒ Array
QGbC4rJ99BssgJE9.jpg

2、面上的材质

model = Sketchup.active_model
sel = model.selection.first # 选中一个face
sel.material = "red"     # 给face正面赋材质
sel.back_material = "blue"  # 给face反面赋材质

效果:

CNr0nAH0hrh4Bb7c.jpg

3、跟随followme

model = Sketchup.active_model
sel = model.selection 
face = sel.find{|e| e if e.is_a?(Sketchup::Face)} # 找到face
edges = sel.select{|e| e if e.is_a?(Sketchup::Edge) } # 找到要跟随的路径
face.followme(edges)

效果:

QRWjaQ2kKJGHxAX8.jpg

在Face类中还有edges、loops、

normal、outer_loop、pushpull、

vertices等比较重要的方法。在编程

中用到的也很多需要我们牢牢的掌握

欢迎关注
公众号‘老顽童与小东邪’
往期推荐
Xt5LCTcIcbdzNIlm.jpg
GgcdHVYg40Ooqv42.jpg
rM99Y9zlsISj5s96.jpg
bGZCr22QIQbQ814V.jpg

扫一扫

0 回复

高级模式
游客
返回顶部