SketchUp  Ruby API Reference 

Class Index

Method Index

Developers Guide

Examples

PolygonMesh class

The PolygonMesh class contains methods to create polygon mesh structures.

 Parent: Object

Methods: new, add_point, add_polygon, count_points, count_polygons, normal_at, point_at, point_index, points, polygon_at, polygon_points_at, polygons, set_point, transform!, uv_at, uvs

Example Code: polygonmeshtests.rb 

Class Methods


new 

The new method is  used to create a new empty polygon mesh.

Syntax

mesh = Geom::PolygonMesh.new numpoints, numpolygons 

Comments

The number of points and polygons are optional and are just used as a hint to decide how much space to pre-allocate to speed up adding points and polygons.

Example 

mesh = Geom::PolygonMesh.new

Instance Methods


add_point 

The add_point method is used to add a point to the mesh.

Syntax

index = polygonmesh.add_point point 

Arguments

point - a Point3D object

Return Value

index - the index in the mesh for the point

Comments

The index can be used for creating polygons. 

Example

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
index = mesh.add_point point

 

 


add_polygon 

The add_polygon method is used for adding a polygon to a polygon mesh.

Syntax

index = polygonmesh.add_polygon polygon

Arguments

polygon - a polygon

Return Value

index - the index of the polygon in the mesh if successful

Example

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1                       
status = mesh.add_polygon point, point1, point2

 

 


count_points 

The count_points method is used to count the number of points in a mesh.

Syntax

points = mesh.count_points 

Return Value

points - the number of points in a mesh, if successful

Example

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
index = mesh.add_point point
num = mesh.count_points

 

 


count_polygons 

The count_polygons count the number of polygons in the mesh.

Syntax

polygons = mesh.count_polygons 

Return Value

polygons - the number of polygons in the mesh, if successful

Example

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
index = mesh.add_polygon point, point1, point2
nump = mesh.count_polygons

 

 


normal_at 

The normal_at method is used to determine the normal at a particular index in the mesh.

Syntax

normal = polygonmesh.normal_at index

Arguments

index - the index in the mesh where the normal is that you want to retrieve

Return Value

normal - a normal

Comments

Index is 1 based (starts at 1).

Example

normal = mesh.normal_at 1

 

 


point_at

The point_at method is used to retrieve the point at a specific index in the mesh.

Syntax

point = polygonmesh.point_at index

Arguments

index - the index in the mesh where the point is that you want to retrieve

Return Value

point - a Point3D object

Comments

Index is 1 based (starts at 1).

Example

mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
point2 = Geom::Point3d.new 10,20,30
index = mesh.add_point point1
index = mesh.add_point point2

 

 


point_index 

The point_index method is used to retrieve the index of a point in the mesh.

Syntax

index = polygonmesh.point_index point

Arguments

point - a Point3d object

Return Value

index - the index in the mesh for the Point3d object

Comments

Returns 0 if point is not found.

Example

mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
point2 = Geom::Point3d.new 10,20,30
index = mesh.add_point point1
index = mesh.add_point point2
index = mesh.point_index point1

 

 


points 

The points method is used to retrieve an array of points (vertices) in the mesh

Syntax

points = polygonmesh.points

Return Value

points - an array of points (vertices) if successful

Example

mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
point2 = Geom::Point3d.new 10,20,30
index = mesh.add_point point1
index = mesh.add_point point2
# returns array of points in the mesh
num = mesh.points

 

 


polygon_at 

The polygon_at method is used to retrieve an array of vertex index values for a polygon at a specific index.

Syntax

vertices = polygonmesh.polygon_at index

Arguments

index - the index of the desired polygon

Return Value

vertices - an array of  vertex index values

Comments

Index is 1 based (starts at 1).  The returned array can contain negative values with the sign indicating a hidden edge. For example, a return value of [-1, 2, 3] indicates that the edge from 1 to 2 is hidden. The negative values should not be used as an index for point_at, take the positive value of the index value in the polygon array.  So if you get [-1, 2,3] use 1 as the arg to point_at.

Example

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
status = mesh.add_polygon point, point1, point2
polygon = mesh.polygon_at 1

 

 


polygon_points_at 

The polygon_points_at method is used to retrieve the points for a polygon that is at a specific index in the mesh.

Syntax

points = polygonmesh.polygon_points_at index

Arguments

index - an index for a polygon in the mesh

Return Value

points - an array of points that make up the polygon if successful

Example

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
status = mesh.add_polygon point, point1, point2
points = mesh.polygon_points_at 1

 

 


polygons 

The polygons method is used to retrieve an array of all polygons in the mesh.

Syntax

polygons = polygonmesh.polygons

Return Value

polygons - an array of polygons if successful

Comments

The returned array can contain negative values with the sign indicating a hidden edge. For example, a return value of [-1, 2, 3] indicates that the edge from 1 to 2 is hidden.

Example 

mesh = Geom::PolygonMesh.new
point = Geom::Point3d.new 0,1,2
point1 = Geom::Point3d.new 1,0,2
point2 = Geom::Point3d.new 2,0,1
status = mesh.add_polygon point, point1, point2
polygons = mesh.polygons

 

 


set_point 

The set_point method is used to set the point at a specific index in the mesh.

Syntax

polygonmesh = polygonmesh.set_point index, point

Arguments

index - the index where the point will be set

point - a Point3d object to set at the index

Return Value

polygonmesh - a PolygonMesh object

Example

mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
point2 = Geom::Point3d.new 10,20,30
index = mesh.add_point point1
status = mesh.set_point 1, point2

 

 


transform! 

The transform! method is used to apply a transformation to a mesh

Syntax

polygonmesh = polygonmesh.transform! transformation

Arguments

transformation - a Transformation object

Return Value

polygonmesh - the PolygonMesh object

Example

point = Geom::Point3d.new 100,200,300
t = Geom::Transformation.new point
mesh = Geom::PolygonMesh.new
point1 = Geom::Point3d.new 0,1,2
index = mesh.add_point point1
pmesh = mesh.transform! t

 

 


uv_at 

The uv_at method is used to access a uv (texture coordinates) at a specific index.

"UVs" is a way of referring to the u,v texture coordinates (as opposed to the X, Y, and Z axis that you construct your meshes on), which are points defining 1-by-1 positions within an image. These coordinates connect to points in your 3D model, to position an image texture onto it's surface (similar to virtual "thumb tacks")

These coordinates pin an exact spot on an image that you wish to use to texture your model to a specific point on an object's surface. Between these points, your software will stretch the image smoothly. This is what is referred to as UV mapping.

Syntax

point = polygonmesh.uv_at index

Arguments

index - the index for the texture coordinate

Return Value

point - a Poin3d object where the x equals the u value and the y equals the v value.

Example

point = mesh.uv_at(1,1)

 

 


uvs 

The uvs method is used to retrieve a list of uvs.

"UVs" is a way of referring to the u,v texture coordinates (as opposed to the X, Y, and Z axis that you construct your meshes on), which are points defining 1-by-1 positions within an image. These coordinates connect to points in your 3D model, to position an image texture onto it's surface (similar to virtual "thumb tacks")

These coordinates pin an exact spot on an image that you wish to use to texture your model to a specific point on an object's surface. Between these points, your software will stretch the image smoothly. This is what is referred to as UV mapping.

Syntax

uvs = polygonmesh.uvs side

Arguments

side - a boolean. If true, use the front uvs. If false, use the back uvs.

Return Value

uvs - an array of uvs.

Comments

The uvs must be generated with the parameters of 1 (Include PolygonMeshUVQFront) or 2 (Include PolygonMeshUVQBack).

Example

uvs = mesh.uvs 1