개정판 dd360120
중간파일 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