Property * Sheet::setStringProperty(CellAddress key, const std::string & value) { Property * prop = props.getPropertyByName(key.toString().c_str()); PropertyString * stringProp = freecad_dynamic_cast<PropertyString>(prop); if (!stringProp) { if (prop) { this->removeDynamicProperty(key.toString().c_str()); propAddress.erase(prop); } stringProp = freecad_dynamic_cast<PropertyString>(props.addDynamicProperty("App::PropertyString", key.toString().c_str(), 0, 0, Prop_ReadOnly | Prop_Hidden | Prop_Transient)); } propAddress[stringProp] = key; stringProp->setValue(value.c_str()); return stringProp; }