--- a/PLCControler.py Fri Jul 24 09:55:11 2009 +0200
+++ b/PLCControler.py Fri Jul 24 10:47:35 2009 +0200
@@ -1592,282 +1592,10 @@
else:
instance = element.getrandomInstance(exclude)
if instance is not None:
- if id is not None:
- infos["id"] = id
- else:
- infos["id"] = instance.getlocalId()
- infos["x"] = instance.getx()
- infos["y"] = instance.gety()
- infos["height"] = instance.getheight()
- infos["width"] = instance.getwidth()
- if isinstance(instance, plcopen.fbdObjects_block):
- infos["name"] = instance.getinstanceName()
- infos["type"] = instance.gettypeName()
- executionOrder = instance.getexecutionOrderId()
- if executionOrder is not None:
- infos["executionOrder"] = executionOrder
- else:
- infos["executionOrder"] = 0
- infos["connectors"] = {"inputs":[],"outputs":[]}
- for variable in instance.inputVariables.getvariable():
- connector = {}
- connector["name"] = variable.getformalParameter()
- connector["position"] = variable.connectionPointIn.getrelPositionXY()
- connector["negated"] = variable.getnegated()
- connector["edge"] = variable.getedge()
- connector["links"] = []
- connections = variable.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- connector["links"].append(dic)
- infos["connectors"]["inputs"].append(connector)
- for variable in instance.outputVariables.getvariable():
- connector = {}
- connector["name"] = variable.getformalParameter()
- connector["position"] = variable.connectionPointOut.getrelPositionXY()
- connector["negated"] = variable.getnegated()
- connector["edge"] = variable.getedge()
- infos["connectors"]["outputs"].append(connector)
- elif isinstance(instance, plcopen.fbdObjects_inVariable):
- infos["name"] = instance.getexpression()
- infos["value_type"] = self.GetEditedElementVarValueType(tagname, infos["name"], debug)
- infos["type"] = "input"
- executionOrder = instance.getexecutionOrderId()
- if executionOrder is not None:
- infos["executionOrder"] = executionOrder
- else:
- infos["executionOrder"] = 0
- infos["connector"] = {}
- infos["connector"]["position"] = instance.connectionPointOut.getrelPositionXY()
- infos["connector"]["negated"] = instance.getnegated()
- infos["connector"]["edge"] = instance.getedge()
- elif isinstance(instance, plcopen.fbdObjects_outVariable):
- infos["name"] = instance.getexpression()
- infos["value_type"] = self.GetEditedElementVarValueType(tagname, infos["name"], debug)
- infos["type"] = "output"
- executionOrder = instance.getexecutionOrderId()
- if executionOrder is not None:
- infos["executionOrder"] = executionOrder
- else:
- infos["executionOrder"] = 0
- infos["connector"] = {}
- infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connector"]["negated"] = instance.getnegated()
- infos["connector"]["edge"] = instance.getedge()
- infos["connector"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connector"]["links"].append(dic)
- elif isinstance(instance, plcopen.fbdObjects_inOutVariable):
- infos["name"] = instance.getexpression()
- infos["value_type"] = self.GetEditedElementVarValueType(tagname, infos["name"], debug)
- infos["type"] = "inout"
- executionOrder = instance.getexecutionOrderId()
- if executionOrder is not None:
- infos["executionOrder"] = executionOrder
- else:
- infos["executionOrder"] = 0
- infos["connectors"] = {"input":{},"output":{}}
- infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY()
- infos["connectors"]["output"]["negated"] = instance.getnegatedOut()
- infos["connectors"]["output"]["edge"] = instance.getedgeOut()
- infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connectors"]["input"]["negated"] = instance.getnegatedIn()
- infos["connectors"]["input"]["edge"] = instance.getedgeIn()
- infos["connectors"]["input"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connectors"]["input"]["links"].append(dic)
- elif isinstance(instance, plcopen.commonObjects_continuation):
- infos["name"] = instance.getname()
- infos["type"] = "continuation"
- infos["connector"] = {}
- infos["connector"]["position"] = instance.connectionPointOut.getrelPositionXY()
- elif isinstance(instance, plcopen.commonObjects_connector):
- infos["name"] = instance.getname()
- infos["type"] = "connection"
- infos["connector"] = {}
- infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connector"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connector"]["links"].append(dic)
- elif isinstance(instance, plcopen.commonObjects_comment):
- infos["type"] = "comment"
- infos["content"] = instance.getcontentText()
- elif isinstance(instance, plcopen.ldObjects_leftPowerRail):
- infos["type"] = "leftPowerRail"
- infos["connectors"] = []
- for connection in instance.getconnectionPointOut():
- connector = {}
- connector["position"] = connection.getrelPositionXY()
- infos["connectors"].append(connector)
- elif isinstance(instance, plcopen.ldObjects_rightPowerRail):
- infos["type"] = "rightPowerRail"
- infos["connectors"] = []
- for connection in instance.getconnectionPointIn():
- connector = {}
- connector["position"] = connection.getrelPositionXY()
- connector["links"] = []
- connections = connection.getconnections()
- if connections:
- for link in connection.getconnections():
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- connector["links"].append(dic)
- infos["connectors"].append(connector)
- elif isinstance(instance, plcopen.ldObjects_contact):
- infos["name"] = instance.getvariable()
- infos["type"] = "contact"
- executionOrder = instance.getexecutionOrderId()
- if executionOrder is not None:
- infos["executionOrder"] = executionOrder
- else:
- infos["executionOrder"] = 0
- infos["negated"] = instance.getnegated()
- infos["edge"] = instance.getedge()
- infos["connectors"] = {"input":{},"output":{}}
- infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connectors"]["input"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connectors"]["input"]["links"].append(dic)
- infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY()
- elif isinstance(instance, plcopen.ldObjects_coil):
- infos["name"] = instance.getvariable()
- infos["type"] = "coil"
- executionOrder = instance.getexecutionOrderId()
- if executionOrder is not None:
- infos["executionOrder"] = executionOrder
- else:
- infos["executionOrder"] = 0
- infos["negated"] = instance.getnegated()
- infos["edge"] = instance.getedge()
- infos["storage"] = instance.getstorage()
- infos["connectors"] = {"input":{},"output":{}}
- infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connectors"]["input"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connectors"]["input"]["links"].append(dic)
- infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY()
- elif isinstance(instance, plcopen.sfcObjects_step):
- infos["name"] = instance.getname()
- infos["type"] = "step"
- infos["initial"] = instance.getinitialStep()
- infos["connectors"] = {}
- if instance.connectionPointIn:
- infos["connectors"]["input"] = {}
- infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connectors"]["input"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connectors"]["input"]["links"].append(dic)
- if instance.connectionPointOut:
- infos["connectors"]["output"] = {"position" : instance.connectionPointOut.getrelPositionXY()}
- if instance.connectionPointOutAction:
- infos["connectors"]["action"] = {"position" : instance.connectionPointOutAction.getrelPositionXY()}
- elif isinstance(instance, plcopen.sfcObjects_transition):
- infos["type"] = "transition"
- condition = instance.getconditionContent()
- priority = instance.getpriority()
- if priority == None:
- infos["priority"] = 0
- else:
- infos["priority"] = priority
- infos["condition_type"] = condition["type"]
- infos["connectors"] = {"input":{},"output":{}}
- infos["connectors"]["input"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connectors"]["input"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connectors"]["input"]["links"].append(dic)
- infos["connectors"]["output"]["position"] = instance.connectionPointOut.getrelPositionXY()
- if infos["condition_type"] == "connection":
- infos["connectors"]["connection"] = {}
- infos["connectors"]["connection"]["links"] = []
- connections = instance.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connectors"]["connection"]["links"].append(dic)
- infos["condition"] = None
- else:
- infos["condition"] = condition["value"]
- elif isinstance(instance, (plcopen.sfcObjects_selectionDivergence, plcopen.sfcObjects_simultaneousDivergence)):
- if isinstance(instance, plcopen.sfcObjects_selectionDivergence):
- infos["type"] = "selectionDivergence"
- else:
- infos["type"] = "simultaneousDivergence"
- infos["connectors"] = {"inputs":[],"outputs":[]}
- connector = {}
- connector["position"] = instance.connectionPointIn.getrelPositionXY()
- connector["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- connector["links"].append(dic)
- infos["connectors"]["inputs"].append(connector)
- for sequence in instance.getconnectionPointOut():
- connector = {}
- connector["position"] = sequence.getrelPositionXY()
- infos["connectors"]["outputs"].append(connector)
- elif isinstance(instance, (plcopen.sfcObjects_selectionConvergence, plcopen.sfcObjects_simultaneousConvergence)):
- if isinstance(instance, plcopen.sfcObjects_selectionConvergence):
- infos["type"] = "selectionConvergence"
- else:
- infos["type"] = "simultaneousConvergence"
- infos["connectors"] = {"inputs":[],"outputs":[]}
- for sequence in instance.getconnectionPointIn():
- connector = {}
- connector["position"] = sequence.getrelPositionXY()
- connector["links"] = []
- connections = sequence.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- connector["links"].append(dic)
- infos["connectors"]["inputs"].append(connector)
- connector = {}
- connector["position"] = instance.connectionPointOut.getrelPositionXY()
- infos["connectors"]["outputs"].append(connector)
- elif isinstance(instance, plcopen.sfcObjects_jumpStep):
- infos["type"] = "jump"
- infos["target"] = instance.gettargetName()
- infos["connector"] = {}
- infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connector"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connector"]["links"].append(dic)
- elif isinstance(instance, plcopen.commonObjects_actionBlock):
- infos["type"] = "actionBlock"
- infos["actions"] = instance.getactions()
- infos["connector"] = {}
- infos["connector"]["position"] = instance.connectionPointIn.getrelPositionXY()
- infos["connector"]["links"] = []
- connections = instance.connectionPointIn.getconnections()
- if connections:
- for link in connections:
- dic = {"refLocalId":link.getrefLocalId(),"points":link.getpoints(),"formalParameter":link.getformalParameter()}
- infos["connector"]["links"].append(dic)
+ infos = instance.getinfos()
+ if infos["type"] in ["input", "output", "inout"]:
+ var_type = self.GetEditedElementVarValueType(tagname, infos["specific_values"]["name"], debug)
+ infos["specific_values"]["value_type"] = var_type
return infos
return None
@@ -2067,39 +1795,29 @@
elif param == "y":
variable.sety(value)
elif param == "connectors":
- if isinstance(variable, plcopen.fbdObjects_inVariable):
- if value["output"].IsNegated():
- variable.setnegated(True)
- if value["output"].GetEdge() != "none":
- variable.setedge(value["output"].GetEdge())
- position = value["output"].GetRelPosition()
+ if len(value["outputs"]) > 0:
+ output = value["outputs"][0]
+ if len(value["inputs"]) > 0:
+ variable.setnegatedOut(output.IsNegated())
+ variable.setedgeOut(output.GetEdge())
+ else:
+ variable.setnegated(output.IsNegated())
+ variable.setedge(output.GetEdge())
+ position = output.GetRelPosition()
variable.addconnectionPointOut()
variable.connectionPointOut.setrelPositionXY(position.x, position.y)
- elif isinstance(variable, plcopen.fbdObjects_outVariable):
- if value["input"].IsNegated():
- variable.setnegated(True)
- if value["input"].GetEdge() != "none":
- variable.setedge(value["input"].GetEdge())
- position = value["input"].GetRelPosition()
+ if len(value["inputs"]) > 0:
+ input = value["inputs"][0]
+ if len(value["outputs"]) > 0:
+ variable.setnegatedIn(input.IsNegated())
+ variable.setedgeIn(input.GetEdge())
+ else:
+ variable.setnegated(input.IsNegated())
+ variable.setedge(input.GetEdge())
+ position = input.GetRelPosition()
variable.addconnectionPointIn()
variable.connectionPointIn.setrelPositionXY(position.x, position.y)
- self.SetConnectionWires(variable.connectionPointIn, value["input"])
- elif isinstance(variable, plcopen.fbdObjects_inOutVariable):
- if value["input"].IsNegated():
- variable.setnegatedIn(True)
- if value["input"].GetEdge() != "none":
- variable.setedgeIn(value["input"].GetEdge())
- if value["output"].IsNegated():
- variable.setnegatedOut(True)
- if value["output"].GetEdge() != "none":
- variable.setedgeOut(value["output"].GetEdge())
- position = value["output"].GetRelPosition()
- variable.addconnectionPointOut()
- variable.connectionPointOut.setrelPositionXY(position.x, position.y)
- position = value["input"].GetRelPosition()
- variable.addconnectionPointIn()
- variable.connectionPointIn.setrelPositionXY(position.x, position.y)
- self.SetConnectionWires(variable.connectionPointIn, value["input"])
+ self.SetConnectionWires(variable.connectionPointIn, input)
def AddEditedElementConnection(self, tagname, id, type):
element = self.GetEditedElement(tagname)
@@ -2193,14 +1911,14 @@
elif param == "connectors":
if isinstance(powerrail, plcopen.ldObjects_leftPowerRail):
powerrail.setconnectionPointOut([])
- for connector in value:
+ for connector in value["outputs"]:
position = connector.GetRelPosition()
connection = plcopen.leftPowerRail_connectionPointOut()
connection.setrelPositionXY(position.x, position.y)
powerrail.connectionPointOut.append(connection)
elif isinstance(powerrail, plcopen.ldObjects_rightPowerRail):
powerrail.setconnectionPointIn([])
- for connector in value:
+ for connector in value["inputs"]:
position = connector.GetRelPosition()
connection = plcopen.connectionPointIn()
connection.setrelPositionXY(position.x, position.y)
@@ -2245,12 +1963,12 @@
elif param == "y":
contact.sety(value)
elif param == "connectors":
- input_connector = value["input"]
+ input_connector = value["inputs"][0]
position = input_connector.GetRelPosition()
contact.addconnectionPointIn()
contact.connectionPointIn.setrelPositionXY(position.x, position.y)
self.SetConnectionWires(contact.connectionPointIn, input_connector)
- output_connector = value["output"]
+ output_connector = value["outputs"][0]
position = output_connector.GetRelPosition()
contact.addconnectionPointOut()
contact.connectionPointOut.setrelPositionXY(position.x, position.y)
@@ -2305,12 +2023,12 @@
elif param == "y":
coil.sety(value)
elif param == "connectors":
- input_connector = value["input"]
+ input_connector = value["inputs"][0]
position = input_connector.GetRelPosition()
coil.addconnectionPointIn()
coil.connectionPointIn.setrelPositionXY(position.x, position.y)
self.SetConnectionWires(coil.connectionPointIn, input_connector)
- output_connector = value["output"]
+ output_connector = value["outputs"][0]
position = output_connector.GetRelPosition()
coil.addconnectionPointOut()
coil.connectionPointOut.setrelPositionXY(position.x, position.y)
@@ -2342,24 +2060,24 @@
elif param == "y":
step.sety(value)
elif param == "connectors":
- input_connector = value["input"]
- if input_connector:
+ if len(value["inputs"]) > 0:
+ input_connector = value["inputs"][0]
position = input_connector.GetRelPosition()
step.addconnectionPointIn()
step.connectionPointIn.setrelPositionXY(position.x, position.y)
self.SetConnectionWires(step.connectionPointIn, input_connector)
else:
step.deleteconnectionPointIn()
- output_connector = value["output"]
- if output_connector:
+ if len(value["outputs"]) > 0:
+ output_connector = value["outputs"][0]
position = output_connector.GetRelPosition()
step.addconnectionPointOut()
step.connectionPointOut.setrelPositionXY(position.x, position.y)
else:
step.deleteconnectionPointOut()
- action_connector = value["action"]
- if action_connector:
- position = action_connector.GetRelPosition()
+ elif param == "action":
+ if value:
+ position = value.GetRelPosition()
step.addconnectionPointOutAction()
step.connectionPointOutAction.setrelPositionXY(position.x, position.y)
else:
@@ -2395,19 +2113,18 @@
else:
transition.setpriority(None)
elif param == "connectors":
- input_connector = value["input"]
+ input_connector = value["inputs"][0]
position = input_connector.GetRelPosition()
transition.addconnectionPointIn()
transition.connectionPointIn.setrelPositionXY(position.x, position.y)
self.SetConnectionWires(transition.connectionPointIn, input_connector)
- output_connector = value["output"]
+ output_connector = value["outputs"][0]
position = output_connector.GetRelPosition()
transition.addconnectionPointOut()
transition.connectionPointOut.setrelPositionXY(position.x, position.y)
- if infos.get("type", None) == "connection":
- transition.setconditionContent("connection", None)
- connection_connector = value["connection"]
- self.SetConnectionWires(transition, connection_connector)
+ elif infos.get("type", None) == "connection" and param == "connection" and value:
+ transition.setconditionContent("connection", None)
+ self.SetConnectionWires(transition, value)
def AddEditedElementDivergence(self, tagname, id, type):
element = self.GetEditedElement(tagname)