🌓
搜索
 找回密码
 立即注册

SketchUp插件开发详解——创建面

admin 2023-11-16 10:27:42 48777

SketchUp中创建面的方法很简单也很直观,虽然参数有多种类型和形式,但是使用最多的应该就是传一个点集来创建面。

add_face(edges)add_face(*edges)add_face(points)add_face(*points)add_face(curve)

按参数的类型分类,分别表示:

  • 通过一个边线集合创建面。

  • 通过一个点集创建面。

  • 通过一个曲线创建面。

在这里我们只对使用最多的通过一个点集创建面进行讲解。

关于面

在SketchUp中面有几个属性值得说明一下:

  1. 至少有3个顶点。

  2. 面的所有点共面不重叠。

  3. 面有边界不可以交叉(也有特殊的情况是可以创建出交叉边界的面)。

  4. 面分前面(法向方向)和背面。

这几个属性和我们创建面时的点集参数息息相关,根据这几个属性可以得到对点集的要求:

  1. 至少3个点。

  2. 所有点共面,且不可以不重复点(距离过近的点也不可以)。

  3. 相邻点的连线不可以交叉(交叉之后也可以创建出面,但并不是想要的)。

对于面的法向,是通过点集的顺序依据右手定则来确定。

面的朝向

根据上面对点集的要求,我们先创建一个面:

points = [Geom::Point3d.new(0, 0,0), Geom::Point3d.new(0, 1, 0), Geom::Point3d.new(0, 1, 1), Geom::Point3d.new(0, 0, 1)]entities.add_face(points)

根据右手定则,可以得到面的法向(下面)应该是指向X轴正向的,所以创建的面是这样的:

但是SketchUp中有一个特殊的情况:如果创建的面是在XOY平面上,创建时会忽略点集的顺序,所有创建出的面都是法向朝下的。我猜原因应该是为了适应路径跟随的情况,因为一般创建的体都在XOY平面以上的空间,如果创建的面朝上,在路径跟随创建体的时候会导致体的所有面反而朝外。

创建带洞的面

带洞的面是建模中经常会用到的,但是SketchUp并没有提供创建带洞面的方法,需要我们自己组合处理。其实用API创建带洞的面和手动创建的思路是一样的,先创建一个大面,然后在挖洞的位置创建小面,最后把创建的小面删掉。

points = [Geom::Point3d.new(0, 0, 0), Geom::Point3d.new(0, 3, 0), Geom::Point3d.new(0, 3, 3), Geom::Point3d.new(0, 0, 3)]entities.add_face(points)points = [Geom::Point3d.new(0, 1, 1), Geom::Point3d.new(0, 2, 1), Geom::Point3d.new(0, 2, 2), Geom::Point3d.new(0, 1, 2)]face = entities.add_face(points)face.erase!

这样就创建出了一个带洞的面:

这里需要注意的是这样的方法不能创建出外环和内洞有点重叠的面,这样的面应用也比较少,这里不再介绍。


扫一扫

112372.jpg
随机推荐

最新主题

0 回复

高级模式
游客
返回顶部