Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
I found that the c ++ sdk had a routine for creating n-gones, but I did not find anything in python. By importing a wavefront that contains n-gones with my plugin, the import is not done properly. Is there a python solution or should I convert my plugin to c ++?
hi @passion3d, There is no actual n-gon in the underlying layer of Cinema 4D. Adjacent polygons use hidden edge to create n-gon-like shape(s).
hidden edge
Following code creates a 5-side polygon object:
import c4d, math from c4d import utils #Welcome to the world of Python def main(): pointCount = 5 polygonCount = math.ceil(pointCount/4.0) # caculate minimum needed polygon number polyObj = c4d.BaseObject(c4d.Opolygon) # create an empty polygon object polyObj.ResizeObject(pcnt=pointCount, vcnt=polygonCount) # resize object to have 5 points, 2 polygons # manually set all point position polyObj.SetPoint(id=0, pos=c4d.Vector(200,0,-200)) polyObj.SetPoint(id=1, pos=c4d.Vector(-200,0,-200)) polyObj.SetPoint(id=2, pos=c4d.Vector(-200,0,200)) polyObj.SetPoint(id=3, pos=c4d.Vector(200,0,200)) polyObj.SetPoint(id=4, pos=c4d.Vector(300,0,0)) # associate points into polygons polygon0 = c4d.CPolygon(t_a=0, t_b=1, t_c=2, t_d=3) polygon1 = c4d.CPolygon(t_a=0, t_b=3, t_c=4) # set polygon in polygon object polyObj.SetPolygon(id=0, polygon=polygon0) polyObj.SetPolygon(id=1, polygon=polygon1) # set hidden edge nbr = utils.Neighbor() nbr.Init(op=polyObj, bs=None) # create Neighor counting all polygon in edge = c4d.BaseSelect() edge.Select(num=3) # set selection, which is the id of the edge to be hidden polyObj.SetSelectedEdges(e=nbr, pSel=edge, ltype=c4d.EDGESELECTIONTYPE_HIDDEN) # hide the edge polyObj.Message(c4d.MSG_UPDATE) doc.InsertObject(polyObj) c4d.EventAdd() if __name__=='__main__': main()
Hi @eZioPan thank you for this example very clear