Hello!
I'm trying to change a vertex (point) of a cube and instead getting this error: "Modeling Kernel Error:Invalid Object".
Here is code. I'm using R20 version.
BaseObject* const cube = BaseObject::Alloc(Ocube);
cube->SetName("Default"_s);
doc->StartUndo();
doc->InsertObject(cube, nullptr, nullptr);
doc->AddUndo(UNDOTYPE::NEWOBJ, cube);
doc->EndUndo();
ModelingCommandData mcd;
BaseContainer bc;
mcd.doc = doc;
mcd.op = cube;
mcd.mode = MODELINGCOMMANDMODE::ALL;
mcd.flags = MODELINGCOMMANDFLAGS::CREATEUNDO;
mcd.bc = &bc;
if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE, mcd)) ApplicationOutput("Couldn't make object editable.");
PolygonObject* pol = static_cast<PolygonObject*>(mcd.result->GetIndex(0));
if (pol->GetType() != Opolygon) {
ApplicationOutput("not polygon");
}
AutoAlloc<Modeling> mod;
if (!mod || !mod->InitObject(ToPoly(pol), 0)) {
ApplicationOutput("modeling alloc failed"); return 0;
}
pol->ResizeObject(4, 1);
pol->SetName("POLY"_s);
mod->SetPoint(pol, 3, Vector(-1, 0, 0));
if(mod) mod->Commit(pol);
EventAdd();
Cube is created, resized, name is changed to "POLY" but zero changes from mod
, there is error in console instead.
I'm new to plugin development and don't know how to properly use API for such purposes.