Command MCOMMAND_MAKEEDITABLE
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 28/05/2007 at 08:36, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R10
Platform: Windows ;
Language(s) : C++ ;---------
In order to export objects I need to convert them into polygon objects before exporting.
But there are some problems with the hierarchy.
The ->GetNext and ->GetDown functions dont work as soon as a new object has been inserted.How can I fix this?
And I have seen the Polygonize function, but I cant use it.Any help is appreciated.
static bool transform(BaseObject* op, BaseDocument* dst) { if(!op || !dst ) return 1; ModelingCommandData cd; if(op->GetType() >= Ocube && op->GetType() <= Osinglepoly) { cd.doc = dst; cd.op = op; if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE,cd))goto Error; if (!cd.result) goto Error; BaseObject* res = (BaseObject* )cd.result->GetIndex(0); if (!res) goto Error; dst->InsertObject(res, NULL, NULL); } transform(op->GetDown(), dst); transform(op->GetNext(), dst); return 0; Error: GePrint("Fehler bei Objektumwandlung"); AtomArray::Free(cd.result); return 1; } //Jedes mathematische Objekt wird in ein Polygonobjekt umgewandelt static BaseDocument* TransformObjToPoly(BaseDocument* doc) { BaseDocument* dst=BaseDocument::Alloc(); if (!dst) return NULL; BaseObject* nx=NULL; BaseObject* res=NULL; BaseObject* op=NULL; ModelingCommandData cd; cd.doc = dst; if (!doc->CopyTo(dst,0,NULL)) goto Error; if(transform(dst->GetFirstObject(), dst)) goto Error; return dst; Error: GePrint("Fehler bei Objektumwandlung"); blDelete(dst); AtomArray::Free(cd.result); return NULL; }
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/05/2007 at 00:43, xxxxxxxx wrote:
Hi ...
What you want to do is to make all the objects in the document editable. Am I right?
I use this code segment for that.Bool dlgLevelControl::Command(LONG id, const BaseContainer &msg;)
{
switch(id)
{
case BTN_TEST://when the testing button is pressed
{
BaseDocument *doc=GetActiveDocument();
BaseObject *obj=doc->GetFirstObject();
MakeAllEditable(obj);
}
break;
}
}
...void dlgTest::MakeAllEditable(BaseObject *obj)
{
String strObj;
if(obj)
{
strObj=obj->GetName();
BaseDocument *doc=GetActiveDocument();
ModelingCommandData mcd;
mcd.bc=obj->GetDataInstance();
mcd.doc=doc;
mcd.op=obj;
mcd.mode=MODIFY_ALL;
mcd.flags=MODELINGCOMMANDFLAG_CREATEUNDO;
if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE,mcd)) return;
EventAdd(EVENT_FORCEREDRAW);
obj=doc->SearchObject(strObj);
MakeAllEditable(obj->GetDown());
MakeAllEditable(obj->GetNext());
}
}Hope it can help ...
Zaw Min Tun -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 29/05/2007 at 01:17, xxxxxxxx wrote:
Thank you very much, it works perfectly.
Since the changes rearanges objects in the list, this
obj=doc->SearchObject(strObj);
was necessary to go to modified object.
It drove me nuts for a while
tnx again.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 31/05/2007 at 19:29, xxxxxxxx wrote:
Yes ... it's always like that ...
You're welcome ...Zaw Min Tun