31 using namespace MemoryXUtility;
34 DeleteObjectInstanceFromWorkingMemory::SubClassRegistry
36 DeleteObjectInstanceFromWorkingMemory::GetName(),
42 memoryx::ObjectInstanceMemorySegmentBasePrx instancesSegment =
43 getWorkingMemory()->getObjectInstancesSegment();
44 if (in.isObjectClassNameSet() and not in.getObjectClassName().empty())
46 std::string objectClassName = in.getObjectClassName();
47 if (objectClassName.find(
"/") != std::string::npos)
51 ARMARX_INFO <<
"Got an ObjectID as class name: " << objectClassName;
53 objpose::DetachObjectFromRobotNodeInput
input;
55 getObjectPoseStorage()->detachObjectFromRobotNode(
input);
59 memoryx::ObjectInstanceList instances =
60 instancesSegment->getObjectInstancesByClass(objectClassName);
61 ARMARX_INFO <<
"Removing " << instances.size() <<
" of object class '"
62 << objectClassName <<
"'";
63 for (memoryx::ObjectInstanceBasePtr
const& instance : instances)
65 std::string
id = instance->getId();
66 ARMARX_INFO <<
"Removing object of class '" << objectClassName <<
"' with id '"
69 instancesSegment->removeEntity(
id);
73 else if (in.isObjectInstanceChannelSet() || in.isObjectInstanceIdSet())
75 const std::string
id = in.isObjectInstanceIdSet()
76 ? in.getObjectInstanceId()
77 : in.getObjectInstanceChannel()->getDataField(
"id")->getString();
78 ARMARX_INFO <<
"Removing object with id '" <<
id <<
"'";
80 instancesSegment->removeEntity(
id);