diff options
author | Suchita Lad | 2024-09-19 15:50:24 +0530 |
---|---|---|
committer | Suchita Lad | 2024-09-19 15:50:24 +0530 |
commit | b586c096ab1121dfcb73f17736e7a8a9a5c24260 (patch) | |
tree | a02ca3ddcf30ea26408d55b4fcc8df5da78e3ea3 | |
parent | dd578e8dad541b9154b96a36bc22f1595eaaa42c (diff) | |
download | Common-Interface-Project-b586c096ab1121dfcb73f17736e7a8a9a5c24260.tar.gz Common-Interface-Project-b586c096ab1121dfcb73f17736e7a8a9a5c24260.tar.bz2 Common-Interface-Project-b586c096ab1121dfcb73f17736e7a8a9a5c24260.zip |
Updated files of MxGraphParser.py
-rwxr-xr-x | blocks/Xcos/MxGraphParser.py | 79 | ||||
-rw-r--r-- | blocks/Xcos/ports/ExplicitInputPort.py | 4 | ||||
-rw-r--r-- | blocks/Xcos/ports/ExplicitOutputPort.py | 4 |
3 files changed, 20 insertions, 67 deletions
diff --git a/blocks/Xcos/MxGraphParser.py b/blocks/Xcos/MxGraphParser.py index 0839a2df..ac15b06c 100755 --- a/blocks/Xcos/MxGraphParser.py +++ b/blocks/Xcos/MxGraphParser.py @@ -41,42 +41,19 @@ outmodel = ET.SubElement(outdiagram, 'mxGraphModel') outmodel.set('as', 'model') -def split_array_by_point(array, point): - pointX = float(point['x']) - pointY = float(point['y']) - for i in range(len(array) - 1): - leftX = float(array[i]['x']) - leftY = float(array[i]['y']) - rightX = float(array[i + 1]['x']) - rightY = float(array[i + 1]['y']) - - # Check if the point lies on the line segment between array[i] and array[i + 1] - if -40 <= leftY - pointY <= 40 and \ - -40 <= rightY - pointY <= 40 and \ - leftX <= pointX <= rightX: - return array[:i + 1] + [point], [point] + array[i + 1:] - if -40 <= leftX - pointX <= 40 and \ - -40 <= rightX - pointX <= 40 and \ - leftY <= pointY <= rightY: - return array[:i + 1] + [point], [point] + array[i + 1:] - - return array, [] - - def check_point_on_array(array, point): if array is None: return False, array, [] for i in range(len(array) - 1): # Check if the point lies on the line segment between array[i] and array[i + 1] - if -40 <= int(array[i]['y']) - int(point['y']) <= 40 and \ - -40 <= int(array[i + 1]['y']) - int(point['y']) <= 40 and \ - int(array[i]['x']) <= int(point['x']) <= int(array[i + 1]['x']): + if -40 <= float(array[i]['y']) - float(point['y']) <= 40 and \ + -40 <= float(array[i + 1]['y']) - float(point['y']) <= 40 and \ + float(array[i]['x']) <= float(point['x']) <= float(array[i + 1]['x']): return True, array[:i + 1], array[i + 1:] - if -40 <= int(array[i]['x']) - int(point['x']) <= 40 and \ - -40 <= int(array[i + 1]['x']) - int(point['x']) <= 40 and \ - int(array[i]['y']) <= int(point['y']) <= int(array[i + 1]['y']): + if -40 <= float(array[i]['x']) - float(point['x']) <= 40 and \ + -40 <= float(array[i + 1]['x']) - float(point['x']) <= 40 and \ + float(array[i]['y']) <= float(point['y']) <= float(array[i + 1]['y']): return True, array[:i + 1], array[i + 1:] - print("ERror:", point, "does not lie on", array) return False, array, [] def identify_segment(array, point): @@ -89,21 +66,6 @@ def identify_segment(array, point): return False, -1, array, [] -def splitlink_by_point(array1, s1, t1, array2, s2, t2, array3, s3, t3, point): - onarray, array4, array5 = check_point_on_array(array1, point) - print('testcheck1', onarray, array4, array5) - if onarray: - return array1, s1, t1, array4, array5 - onarray, array4, array5 = check_point_on_array(array2, point) - print('testcheck2', onarray, array4, array5) - if onarray: - return array2, s2, t2, array4, array5 - onarray, array4, array5 = check_point_on_array(array3, point) - print('testcheck3', onarray, array4, array5) - if onarray: - return array3, s3, t3, array4, array5 - print("ERror:", point, "does not lie on 3 array") - for root in model: if root.tag != 'root': print('Not root') @@ -286,7 +248,6 @@ for root in model: link_data = (attribid, sourceVertex, targetVertex, sourceType, targetType, style, waypoints, addSplit, split_point) edgeDict[attribid] = link_data edgeList.append(link_data) - # print("EL:", edgeList) except BaseException: traceback.print_exc() sys.exit(0) @@ -308,22 +269,18 @@ for (attribid, sourceVertex, targetVertex, sourceType, targetType, style, waypoi try: - print("SOURCEV:", newEdgeDict[sourceVertex]) linkSegments = newEdgeDict[sourceVertex] except KeyError: pass try: - print("SOURCET:", newEdgeDict[targetVertex]) linkSegments = newEdgeDict[targetVertex] except KeyError: pass - print('CNT:', len(linkSegments)) + result, i, left_array, right_array = identify_segment(linkSegments, split_point) if not result: sys.exit(0) (attribid2, sourceVertex2, targetVertex2, sourceType2, targetType2, style2, waypoints2, addSplit2, split_point2) = linkSegments[i] - #remove code here - del newEdgeDict[attribid2][i] print('A1:', left_array) print('A2:', right_array) array3 = waypoints @@ -337,14 +294,12 @@ for (attribid, sourceVertex, targetVertex, sourceType, targetType, style, waypoi inputCount = 0 outputCount = 0 if sourceType == 'ExplicitLink': - # (style2, sourceVertex2, targetVertex2, sourceType2, targetType2, waypoints) = newEdgeDict[sourceVertex] port1 = nextattribid - - (inputCount, outputCount, nextattribid, nextAttribForSplit) = addExplicitInputPortForSplit(outroot, splitblockid, sourceVertex2, targetVertex2, sourceType2, targetType2, edgeDict, inputCount, outputCount, nextattribid, nextAttribForSplit, left_array) + (inputCount, outputCount, nextattribid, nextAttribForSplit) = addExplicitInputPortForSplit(outroot, splitblockid, sourceVertex2, targetVertex2, sourceType2, targetType2, inputCount, outputCount, nextattribid, nextAttribForSplit, left_array) port2 = nextattribid - (inputCount, outputCount, nextattribid, nextAttribForSplit) = addExplicitOutputPortForSplit(outroot, splitblockid, sourceVertex2, targetVertex2, sourceType2, targetType2, edgeDict, inputCount, outputCount, nextattribid, nextAttribForSplit, right_array) + (inputCount, outputCount, nextattribid, nextAttribForSplit) = addExplicitOutputPortForSplit(outroot, splitblockid, sourceVertex2, targetVertex2, sourceType2, targetType2, inputCount, outputCount, nextattribid, nextAttribForSplit, right_array) port3 = nextattribid - (inputCount, outputCount, nextattribid, nextAttribForSplit) = addExplicitOutputPortForSplit(outroot, splitblockid, sourceVertex, targetVertex, sourceType, targetType, edgeDict, inputCount, outputCount, nextattribid, nextAttribForSplit, array3) + (inputCount, outputCount, nextattribid, nextAttribForSplit) = addExplicitOutputPortForSplit(outroot, splitblockid, sourceVertex, targetVertex, sourceType, targetType, inputCount, outputCount, nextattribid, nextAttribForSplit, array3) elif sourceType == 'ImplicitLink': geometry = {} @@ -395,14 +350,16 @@ for (attribid, sourceVertex, targetVertex, sourceType, targetType, style, waypoi linkid = nextAttribForSplit nextAttribForSplit += 1 (style2, sourceVertex2, targetVertex2, sourceType2, targetType2) = newEdgeDict[targetVertex] - # attribid2, sourceVertex2, targetVertex2, sourceType2, targetType2, style2, waypoints2, addSplit2, split_point2 - newEdgeDict[attribid2].append((attribid2, sourceVertex2, port1, sourceType2, targetType, style2, left_array, addSplit2, split_point2)) - newEdgeDict[attribid2].append((attribid2, port2, targetVertex2, sourceType, targetType2, style2, right_array, addSplit2, split_point2)) - - newEdgeDict[attribid] = [(attribid, sourceVertex, targetVertex, sourceType, targetType, style, waypoints, addSplit, split_point)] + newEdgeDict[attribid2][i] = ((attribid2, sourceVertex2, port1, sourceType2, targetType, style2, left_array, addSplit2, split_point2)) + newEdgeDict[attribid2].insert(i+1, (attribid2, port2, targetVertex2, sourceType, targetType2, style2, right_array, addSplit2, split_point2)) + + newEdgeDict[attribid] = [(attribid, port3, targetVertex, sourceType, targetType, style, waypoints, addSplit, split_point)] + for key, value in newEdgeDict.items(): + print('KEY:',key) + for i, value2 in enumerate(value): + print(i, value2) -# print('ED:', edgeDict.items()) # for (attribid, (style, sourceVertex, targetVertex, sourceType, targetType, array1)) in edgeDict.items(): # print("testing", attribid, style, sourceVertex, targetVertex, sourceType, targetType, array1) for (attribid, (attribid, sourceVertex, targetVertex, sourceType, targetType, style, waypoints, addSplit, split_point)) in edgeDict.items(): diff --git a/blocks/Xcos/ports/ExplicitInputPort.py b/blocks/Xcos/ports/ExplicitInputPort.py index 705c2a9d..3db9ca20 100644 --- a/blocks/Xcos/ports/ExplicitInputPort.py +++ b/blocks/Xcos/ports/ExplicitInputPort.py @@ -25,7 +25,7 @@ def ExplicitInputPort(outroot, attribid, parentattribid, ordering, geometry, def addExplicitInputPortForSplit(outroot, splitBlock, sourceVertex, targetVertex, - sourceType, targetType, edgeDict, inputCount, + sourceType, targetType, inputCount, outputCount, nextAttrib, nextAttribForSplit, waypoints): inputCount += 1 geometry = {} @@ -35,8 +35,6 @@ def addExplicitInputPortForSplit(outroot, splitBlock, sourceVertex, targetVertex geometry['y'] = -4 ExplicitInputPort(outroot, nextAttrib, splitBlock, inputCount, geometry, forSplitBlock=True) - edgeDict[nextAttribForSplit] = (nextAttribForSplit, str(sourceVertex), str(nextAttrib), - sourceType, 'ExplicitInputPort', 'ExplicitLink', waypoints, None, None) nextAttrib += 1 nextAttribForSplit += 1 return (inputCount, outputCount, nextAttrib, nextAttribForSplit) diff --git a/blocks/Xcos/ports/ExplicitOutputPort.py b/blocks/Xcos/ports/ExplicitOutputPort.py index 83a68451..f9a3bed0 100644 --- a/blocks/Xcos/ports/ExplicitOutputPort.py +++ b/blocks/Xcos/ports/ExplicitOutputPort.py @@ -25,7 +25,7 @@ def ExplicitOutputPort(outroot, attribid, parentattribid, ordering, geometry, def addExplicitOutputPortForSplit(outroot, splitBlock, sourceVertex, targetVertex, - sourceType, targetType, edgeDict, inputCount, + sourceType, targetType, inputCount, outputCount, nextAttrib, nextAttribForSplit, waypoints): outputCount += 1 geometry = {} @@ -35,8 +35,6 @@ def addExplicitOutputPortForSplit(outroot, splitBlock, sourceVertex, targetVerte geometry['y'] = -4 ExplicitOutputPort(outroot, nextAttrib, splitBlock, outputCount, geometry, forSplitBlock=True) - # edgeDict[nextAttribForSplit] = (nextAttribForSplit, str(nextAttrib), str(targetVertex), - # 'ExplicitOutputPort', targetType, 'ExplicitLink', waypoints, None, None) nextAttrib += 1 nextAttribForSplit += 1 return (inputCount, outputCount, nextAttrib, nextAttribForSplit) |