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"