HI:

I found a way to get the global coordinates and indexes of all the points on N_gons.The Python script can select all N_gons faces, select points on all N_gons faces, and get the global coordinates and index of the points.

Two Suggestions by the way:

1.GetAllPoints() is used to get all the coordinates, but these are local coordinates, which need to be converted to global coordinates, and the results converted to global coordinates are usually correct.However, it is difficult to obtain the global coordinates of all points in the cache. Can you provide global coordinate parameters for all points?

- After the polygon object is baked as. ABC file, if the number of polygons is 0, the objects in the cache will change from polygons to blank objects.Can the cache still be a polygon object if the number of points is zero?

The script code is as follows:

```
import c4d
from c4d import utils
def main():
Polygons = op.GetAllPolygons()
Selected_Polygon = op.GetPolygonS()
#Determines whether n-gons edges exist on all polygon faces of the current object.
N_gons = op.GetNgonEdgesCompact()
Polygons_index = [i for i,o in enumerate(Polygons)]
#N-gons edge Numbers on all N-Gons faces.
N_gons_Edge_number = [h for h,z in enumerate(N_gons) if z > 0]
#select N-gons face.
Selected_Polygon.DeselectAll()
sele = [ Selected_Polygon.Select(ty) for ty in N_gons_Edge_number
if len(Polygons_index) == len(N_gons) ]
#Toggle select mode.
bc = c4d.BaseContainer()
bc.SetData(c4d.MDATA_CONVERTSELECTION_LEFT, 2) #ConvertSelection's Left "Polygons" option in memory
bc.SetData(c4d.MDATA_CONVERTSELECTION_RIGHT, 0) #ConvertSelection's Right "Edges" option in memory
#bc.SetData(c4d.MDATA_CONVERTSELECTION_TOLERANT, True) #Select the selection->ConvertSelection's "Tolerant" option in memory
utils.SendModelingCommand(c4d.MCOMMAND_CONVERTSELECTION,
list = [op],
mode = c4d.MODELINGCOMMANDMODE_POLYGONSELECTION,
bc=bc,
doc = doc)
#Gets the global coordinates and index of the points on the N-gons plane.
All_Point = op.GetAllPoints()
PointS = op.GetPointS()
Pointe_Array = PointS.GetAll(op.GetPointCount())
All_posits = [(Arra,index)
for Arra,index in enumerate(All_Point)]
posit = [(Array,indexe)
for Array,indexe in enumerate(All_Point)
if Pointe_Array[Array] == 1]
#The global matrix of the current object.
op_matrix = op.GetMg()
matrix = []
for orientation in posit:
mt = c4d.Matrix()
mt.off = orientation[1]
m_mt = op_matrix * mt
matrix.append((orientation[0],m_mt))
#Global coordinates and index of points on the N-GONS plane.
point_position = [(t[0],t[1].off) for t in matrix]
print point_position
#Select all points on the N-gons side.
PointS.DeselectAll()
sele_point = [ PointS.Select(ty[0])
for ty in point_position]
c4d.EventAdd()
if __name__=='__main__':
main()
```