diff -r d3838e8f1b90 -r 84de51ab40d2 PLCControler.py --- a/PLCControler.py Fri May 10 15:17:33 2013 +0200 +++ b/PLCControler.py Sun May 12 23:30:00 2013 +0200 @@ -2100,14 +2100,17 @@ text += instance_copy.generateXMLText(name.split("_")[-1], 0) return text - def GenerateNewName(self, tagname, name, format, exclude={}, debug=False): + def GenerateNewName(self, tagname, name, format, start_idx=0, exclude={}, debug=False): names = exclude.copy() if tagname is not None: - names.update(dict([(varname.upper(), True) for varname in self.GetEditedElementVariables(tagname, debug)])) + names.update(dict([(varname.upper(), True) + for varname in self.GetEditedElementVariables(tagname, debug)])) element = self.GetEditedElement(tagname, debug) - if element is not None: + if element is not None and element.getbodyType() not in ["ST", "IL"]: for instance in element.getinstances(): - if isinstance(instance, (plcopen.sfcObjects_step, plcopen.commonObjects_connector, plcopen.commonObjects_continuation)): + if isinstance(instance, (plcopen.sfcObjects_step, + plcopen.commonObjects_connector, + plcopen.commonObjects_continuation)): names[instance.getname().upper()] = True else: project = self.GetProject(debug) @@ -2127,7 +2130,7 @@ for resource in config.getresource(): names[resource.getname().upper()] = True - i = 0 + i = start_idx while name is None or names.get(name.upper(), False): name = (format%i) i += 1 @@ -2183,12 +2186,19 @@ blocktype = instance.gettypeName() if element_type == "function": return _("FunctionBlock \"%s\" can't be pasted in a Function!!!")%blocktype - blockname = self.GenerateNewName(tagname, blockname, "%s%%d"%blocktype, debug=debug) + blockname = self.GenerateNewName(tagname, + blockname, + "%s%%d"%blocktype, + debug=debug) exclude[blockname] = True instance.setinstanceName(blockname) self.AddEditedElementPouVar(tagname, blocktype, blockname) elif child.nodeName == "step": - stepname = self.GenerateNewName(tagname, instance.getname(), "Step%d", exclude, debug) + stepname = self.GenerateNewName(tagname, + instance.getname(), + "Step%d", + exclude=exclude, + debug=debug) exclude[stepname] = True instance.setname(stepname) localid = instance.getlocalId()