MCOMMAND_MAKEEDITABLE -> Cinema crashes
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/05/2008 at 12:52, xxxxxxxx wrote:
User Information:
Cinema 4D Version: 10
Platform: Windows ;
Language(s) : C++ ;---------
Hi.
I'm trying to make a cube in C++ and then make it editable. This is my code so far in my object-plugin:BaseObject* extrudierterWuerfel::GetVirtualObjects(BaseObject *op, HierarchyHelp *hh)
{
BaseObject *wuerfel = BaseObject::Alloc(Ocube);
BaseDocument *doc = op->GetDocument();
doc->InsertObject(wuerfel, NULL, NULL);ModelingCommandData datac;
BaseContainer basec;datac.doc=doc;
datac.op=op;
datac.bc=&basec;
SendModelingCommand(MCOMMAND_MAKEEDITABLE, datac);
return wuerfel;
}I don't know what is wrong, but when I start the plugin, Cinema crashes. When I change the command from MCOMMAND_MAKEEDITABLE to MCOMMAND_SELECTALL, that doesn't happen.
Can you please help me? -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/05/2008 at 14:42, xxxxxxxx wrote:
You CANNOT use SendModelingCommand() in GetVirtualObjects() - especially anything that causes a cache rebuild which is what GetVirtualObjects() is already in the process of doing. MAKEEDITABLE and CURRENTSTATETOOBJECT for instance.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/05/2008 at 15:06, xxxxxxxx wrote:
Ah, ok, but where or how should I do it then?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 17/05/2008 at 15:52, xxxxxxxx wrote:
Not there?
You'll have to allocate a PolygonObject to be returned and fill in the Vector and Polygon arrays yourself if you must do it in GetVirtualObjects().
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 18/05/2008 at 05:43, xxxxxxxx wrote:
Thanks so far, I found another thread here, where is described how to do this with a copy of the object. This is my new code:
BaseObject* extrudierterWuerfel::GetVirtualObjects(BaseObject *op, HierarchyHelp *hh)
{
BaseDocument *doc = op->GetDocument();BaseObject *cloned = BaseObject::Alloc(Ocube);
PolygonObject *poly=NULL;BaseDocument *copydoc=doc->Alloc();
copydoc->InsertObject(cloned,NULL,NULL,FALSE);ModelingCommandData cd,cd2,cd3;
cd.doc = copydoc;
cd.op = cloned;
if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE, cd)) return NULL;poly=static_cast<PolygonObject*>(cd.result->GetIndex(0));
copydoc->SetMode(Mpolygons);
BaseContainer bc;
bc.SetData(MDATA_EXTRUDE_OFFSET, 50);
ModelingCommandData extrusionmcd;extrusionmcd.bc=&bc;
extrusionmcd.doc=copydoc;
extrusionmcd.op=poly;SendModelingCommand(ID_MODELING_EXTRUDE_TOOL, extrusionmcd);
return poly;
}The good thing here is, that nothing crashes. The bad thing is, that no making editable or extrusion happens. Why is that?
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 22/05/2008 at 02:58, xxxxxxxx wrote:
Nobody knows what's wrong here? Is it that I have to copy the object back into the Basedocument doc?