프로젝트

일반

사용자정보

개정판 dd360120

IDdd360120b505bd755317a9829d50be594528dd9b
상위 7abfa24b
하위 7c1ad1f8

김정우 이(가) 약 7년 전에 추가함

중간파일 xml 내 심볼정보, 텍스트 정보, 라인 정보 추가하도록 변경

차이점 보기:

DTI_PID/DTI_PID/XmlGenerator.py
1 1
from xml.etree.ElementTree import Element, SubElement, dump, ElementTree
2 2
import symbol
3
import TextInfo as ti
3 4
import math
4 5

  
5 6
ROOT_NODE_NAME = "DWG"
6 7
ROOT_DWGNAME_NODE_NAME = "DWGNAME"
7 8
ROOT_SIZE_NODE_NAME = "SIZE"
8 9

  
10
SYMBOL_LIST_NODE_NAME = "SYMBOLS"
11
TEXT_INFO_LIST_NODE_NAME = "TEXTINFOS"
12
IMG_LINE_LIST_NODE_NAME = "IMGLINES"
13

  
9 14
SCATEGORY_NODE_NAME = "SYMBOL"
10 15

  
11 16
SSYSTEM_PATH_NODE_NAME = "SYSTEMPATH"
......
23 28
SSUB_DECO_DIRECTION = "DECODIRECTION"
24 29
SSUB_ANGLE = "ANGLE"
25 30

  
26
def writeXml(pidName, pidWidth, pidHeight, searchedSymbolList):
27
    xmlData = generateXml(pidName, pidWidth, pidHeight, searchedSymbolList)
31

  
32

  
33
TEXT_INFO_NODE_NAME = "TEXTINFO"
34
TTEXT_NODE_NAME = "TEXT"
35
TTEXT_X_NODE_NAME = "X"
36
TTEXT_Y_NODE_NAME = "Y"
37
TTEXT_WIDTH_NODE_NAME = "WIDTH"
38
TTEXT_HEIGHT_NODE_NAME = "HEIGHT"
39

  
40

  
41
IMG_LINE_NODE_NAME = "IMGLINE"
42
ISP_NODE_NAME = "START"
43
IEP_NODE_NAME = "END"
44

  
45
def writeXml(pidName, pidWidth, pidHeight, searchedSymbolList, textInfoList, imgLineList):
46
    xmlData = generateXml(pidName, pidWidth, pidHeight, searchedSymbolList, textInfoList, imgLineList)
28 47
    #xmlData = indent(xmlData)
29 48
    ElementTree(xmlData).write("res/Result/"+pidName+".xml")
30 49

  
31
def generateXml(pidName, pidWidth, pidHeight, searchedSymbolList):
50
def generateXml(pidName, pidWidth, pidHeight, searchedSymbolList, textInfoList, imgLineList):
32 51
    xml = Element(ROOT_NODE_NAME) # Root Node
33 52
    SubElement(xml, ROOT_DWGNAME_NODE_NAME).text = pidName
34 53
    SubElement(xml, ROOT_SIZE_NODE_NAME).text = str(pidWidth) + "," + str(pidHeight)
54

  
55
    symbolListNode = Element(SYMBOL_LIST_NODE_NAME) # Symbol List Node
35 56
    for symbol in searchedSymbolList:
36 57
        node = getSymbolInfoNode(symbol)
37
        xml.append(node)
58
        symbolListNode.append(node)
59

  
60
    xml.append(symbolListNode)
61

  
62
    textInfoListNode = Element(TEXT_INFO_LIST_NODE_NAME) # Text Info List Node
63
    for textInfo in textInfoList:
64
        node = getTextInfoNode(textInfo)
65
        textInfoListNode.append(node)
66

  
67
    xml.append(textInfoListNode)
68

  
69
    imgLineListNode = Element(IMG_LINE_LIST_NODE_NAME) # Image Line List Node
70
    for imgLine in imgLineList:
71
        node = getImgLineNode(imgLine)
72
        imgLineListNode.append(node)
73

  
74
    xml.append(imgLineListNode)
75

  
38 76
    return xml
39 77

  
40 78
def getDirection(decoDirection):
......
107 145

  
108 146
    return sCategoryNode
109 147

  
148

  
149
def getTextInfoNode(textInfo):
150
    text = textInfo.getText()
151
    x = textInfo.getX()
152
    y = textInfo.getY()
153
    w = textInfo.getW()
154
    h = textInfo.getH()
155

  
156
    tInfoNode = Element(TEXT_INFO_NODE_NAME)
157

  
158
    textNode = Element(TTEXT_NODE_NAME)
159
    textNode.text = text
160

  
161
    xNode = Element(TTEXT_X_NODE_NAME)
162
    xNode.text = x
163

  
164
    yNode = Element(TTEXT_Y_NODE_NAME)
165
    yNode.text = y
166

  
167
    widthNode = Element(TTEXT_WIDTH_NODE_NAME)
168
    widthNode.text = w
169

  
170
    heightNode = Element(TTEXT_HEIGHT_NODE_NAME)
171
    heightNode.text = h
172
    
173
    tInfoNode.append(textNode)
174
    tInfoNode.append(xNode)
175
    tInfoNode.append(yNode)
176
    tInfoNode.append(widthNode)
177
    tInfoNode.append(heightNode)
178

  
179
    return tInfoNode
180

  
181

  
182
def getImgLineNode(imgLine):
183
    sp = imgLine.getStart()
184
    ep = imgLine.getEnd()
185

  
186
    imgLineNode = Element(IMG_LINE_NODE_NAME)
187

  
188
    ispNode = Element(ISP_NODE_NAME)
189
    ispNode.text = str(sp.real)+','+str(sp.imag)
190

  
191
    iepNode = Element(IEP_NODE_NAME)
192
    iepNode.text = str(ep.real)+','+str(ep.imag)
193
    
194
    imgLineNode.append(ispNode)
195
    imgLineNode.append(iepNode)
196

  
197
    return imgLineNode
198

  
199

  
110 200
def indent(elem, level=0):
111 201
    i = "\n" + level*"  "
112 202
    if len(elem):

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)