Merge Polygon Objects
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/03/2011 at 04:42, xxxxxxxx wrote:
User Information:
Cinema 4D Version:
Platform:
Language(s) : C.O.F.F.E.E ; C++ ; PYTHON ;---------
Hi there,I post this in the SDK Help Subforum, because I am sure, if someone knows a way to solve my Problem in C++ I can transfer it to Python.
What I want is to merge 2 Polygonobjects into one. If you know how to do it, you actually don't need to understand my Code.
If not, I hope C++'ers can understand it.It actually works, but some points are connected with the the other objects.
And theire axes are resetted , but I know how to fix this, and I will do this later.def SetAllPoints(op,points) : if op is None: return False if points is None: return False cnt = op.GetPointCount() for i in xrange(cnt) : op.SetPoint(i,points[i]) op.Message(c4d.MSG_UPDATE) def SetAllPolygons(op,polys) : if op is None: return False if polys is None: return False cnt = op.GetPolygonCount() for i in xrange(cnt) : op.SetPolygon(i,polys[i]) op.Message(c4d.MSG_UPDATE) def MakeEditable(op) : if (not op) : return if (op.CheckType(c4d.Opolygon) == True) : return op op = [op.GetClone()] doc = c4d.documents.BaseDocument() doc.InsertObject(op[0],None,None) op = c4d.utils.SendModelingCommand( command = c4d.MCOMMAND_MAKEEDITABLE, list = op, doc = doc ) return op[0] def MergeLists(lst1,lst2) : for line in lst2: lst1.append(line) return lst1 def MergePolygonObjects(obj1,obj2) : op = c4d.BaseObject(c4d.Opolygon) obj1 = MakeEditable(obj1) obj2 = MakeEditable(obj2) op.ResizeObject(obj1.GetPointCount()+obj2.GetPointCount(),obj1.GetPolygonCount()+obj2.GetPolygonCount()) SetAllPoints(op,MergeLists(obj1.GetAllPoints(),obj2.GetAllPoints())) SetAllPolygons(op,MergeLists(obj1.GetAllPolygons(),obj2.GetAllPolygons())) return op
Thanks in Advance, nux
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/03/2011 at 05:03, xxxxxxxx wrote:
hi there,
you have to remap the vertex-indices of the second polygonobject. Adding an offset obj1.GetPointCount() to each vertex index in the polygon array of the second one should do it.
greetz -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/03/2011 at 08:12, xxxxxxxx wrote:
You could use SendModelingCommand(MCOMMAND_JOIN, ...). The only caveat is that you will need to put the editable objects under a Null object and pass the Null object in with the ModelingCommandData. Best to make clones to work with.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 09/03/2011 at 09:03, xxxxxxxx wrote:
Thanks, that should work. Haha, didn't think about this !
Still got some problems, postet in the Python Subforum.
https://developers.maxon.net/forum/topic/5572/5593_mcommandjoinCheers, nux