Yet Another test
Don't know how reliable this test is but it appears face get appended in the same order as indexed in Polygonmesh. But Polygonmesh Count indexes starting at 1.
Edit: Updated for adding c_point in polygonmesh index as well. But wonder how hidden edges affect the Index ordering..
The API says:
@unknownuser said:
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
Perhaps hidden edges will only happend if mesh is constructed from a collection of Sketchup::Face's. Not relevant in this case.
In that case maybe use index.abs or perhaps double negation: index = index<0 ? -index : index
ents = Sketchup.active_model.active_entities
def centerpoints(f)
cx = (f[0].x + f[1].x + f[2].x + f[3].x)/4
cy = (f[0].y + f[1].y + f[2].y + f[3].y)/4
cz = (f[0].z + f[1].z + f[2].z + f[3].z)/4
return Geom;;Point3d.new(cx, cy, cz)
end
face1 = [
Geom;;Point3d.new(-5,-5,0), Geom;;Point3d.new(5,-5,0),
Geom;;Point3d.new(5,5,0), Geom;;Point3d.new(-5,5,0)
]
#create points for 4 faces
faceHash = {}
for i in (0...4)
faceHash[i] = face1
face1 = face1.collect{|pt| pt.offset([20,0,0])}
end
#get refference to the center of "face"#3 Before appending to mesh.
fC = centerpoints(faceHash[2])
ents.add_cpoint(fC)
# Bit strange to loop hash this way, but they get ordered.
msh = Geom;;PolygonMesh.new
for n in (0...faceHash.length)
msh.add_polygon(faceHash[n])
end
#Test PolygonMesh index. How does hidden edges affect indexes for this ?
# +1 index for polygons in Mesh. 2 c_points should get added at same spot
meshface3 = msh.polygon_points_at(2+1)
mc = centerpoints(meshface3)
ents.add_cpoint(mc)
group = ents.add_group
group.entities.add_faces_from_mesh(msh)
faces = group.entities.grep(Sketchup;;Face)
#Red material to face 3
faces[2].material = "red"