On 09/05/2013 at 05:53, xxxxxxxx wrote:
Here is the code snippet:
case MDATA_APPLY:
// create the project object
opProject = BaseObject::Alloc(Onull);
opProject->SetName(data.GetString(GCHELPER_PROJECTNAME));
doc->InsertObject(opProject, NULL, NULL);
// create the machine object
opMachine = BaseObject::Alloc(Ocube);
opMachine->SetParameter(PRIM_CUBE_LEN, GeData(Vector(data.GetReal(GCHELPER_MACHINEWIDTH), DEFAULT_MACHINE_HEIGHT, data.GetReal(GCHELPER_MACHINEHEIGHT))), DESCFLAGS_SET_0);
opMachine->SetName(data.GetString(GCHELPER_MACHINENAME));
doc->InsertObject(opMachine, opProject, NULL);
mcd.doc = doc;
mcd.op = opMachine;
mcd.flags = MODELINGCOMMANDFLAGS_CREATEUNDO;
if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE, mcd)) return FALSE;
// create the material object
opMaterial = BaseObject::Alloc(Oplane);
opMaterial->SetParameter(PRIM_PLANE_WIDTH, GeData(data.GetReal(GCHELPER_MATERIALWIDTH)), DESCFLAGS_SET_0);
opMaterial->SetParameter(PRIM_PLANE_HEIGHT, GeData(data.GetReal(GCHELPER_MATERIALHEIGHT)), DESCFLAGS_SET_0);
opMaterial->SetParameter(PRIM_PLANE_SUBW, GeData(1), DESCFLAGS_SET_0);
opMaterial->SetParameter(PRIM_PLANE_SUBH, GeData(1), DESCFLAGS_SET_0);
opMaterial->SetName(DEFAULT_MATERIAL_NAME);
opMaterial->SetAbsPos(Vector(opMaterial->GetAbsPos().x, (DEFAULT_MACHINE_HEIGHT/2)+2, opMaterial->GetAbsPos().y));
doc->InsertObject(opMaterial, opMachine, NULL);
mcd.doc = doc;
mcd.op = opMaterial;
mcd.flags = MODELINGCOMMANDFLAGS_CREATEUNDO;
if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE, mcd)) return FALSE;
// create a default polygon with default name
opCuttingPath = BaseObject::Alloc(Oplane);
opCuttingPath->SetParameter(PRIM_PLANE_WIDTH, GeData(data.GetReal(GCHELPER_CUTTINGPATHWIDTH)), DESCFLAGS_SET_0);
opCuttingPath->SetParameter(PRIM_PLANE_HEIGHT, GeData(data.GetReal(GCHELPER_CUTTINGPATHHEIGHT)), DESCFLAGS_SET_0);
opCuttingPath->SetParameter(PRIM_PLANE_SUBW, GeData(1), DESCFLAGS_SET_0);
opCuttingPath->SetParameter(PRIM_PLANE_SUBH, GeData(1), DESCFLAGS_SET_0);
opCuttingPath->SetName(DEFAULT_CUTTINGPATH_NAME);
opCuttingPath->SetAbsPos(Vector(opCuttingPath->GetAbsPos().x, 2, opCuttingPath->GetAbsPos().y));
doc->InsertObject(opCuttingPath, opMaterial, NULL);
mcd.doc = doc;
mcd.op = opCuttingPath;
mcd.flags = MODELINGCOMMANDFLAGS_CREATEUNDO;
if (!SendModelingCommand(MCOMMAND_MAKEEDITABLE, mcd)) return FALSE;
DrawViews(DRAWFLAGS_NO_THREAD);
break;