diff --git a/src/cat/CommandInterface.cpp b/src/cat/CommandInterface.cpp index 240e7e46e..3ebc795e0 100644 --- a/src/cat/CommandInterface.cpp +++ b/src/cat/CommandInterface.cpp @@ -96,16 +96,16 @@ int CommandInterface::GetParticleType(std::string type) Element * elements = m->GetSimulation()->elements; // alternative names for some elements - if (strcasecmp(txt,"C4")==0) i = PT_PLEX; - else if (strcasecmp(txt,"C5")==0) i = PT_C5; - else if (strcasecmp(txt,"NONE")==0) i = PT_NONE; + if (strcasecmp(txt,"C4")==0) return PT_PLEX; + else if (strcasecmp(txt,"C5")==0) return PT_C5; + else if (strcasecmp(txt,"NONE")==0) return PT_NONE; for (i=1; i * words) if(value.GetType() == TypeNumber) newValue = ((NumberType)value).Value(); else if(value.GetType() == TypeString) + { newValue = GetParticleType(((StringType)value).Value()); + if (newValue < 0 || newValue >= PT_NUM) + throw GeneralException("Invalid element"); + } else throw GeneralException("Invalid value for assignment"); + if (property.Value() == "type" && (newValue < 0 || newValue >= PT_NUM)) + throw GeneralException("Invalid element"); if(selector.GetType() == TypePoint || selector.GetType() == TypeNumber) {