개정판 70fa5473
issue #1059 계산결과 리포트 - Regime
Change-Id: I710639a94d17138d1ed6be3f3a2f2fd91d5ffaef
HYTOS/HYTOS/DrawImage.py | ||
---|---|---|
1 |
# coding: utf-8 |
|
2 |
from PIL import Image, ImageDraw |
|
3 |
|
|
4 |
|
|
5 |
class DrawImage: |
|
6 |
def __init__(self, path): |
|
7 |
self.im = Image.open(path) |
|
8 |
self.draw = ImageDraw.Draw(self.im) |
|
9 |
|
|
10 |
def draw_regime(self, x, y, width): |
|
11 |
min_x = x - (width / 2) |
|
12 |
min_y = y - (width / 2) |
|
13 |
max_x = x + (width / 2) |
|
14 |
max_y = y + (width / 2) |
|
15 |
|
|
16 |
self.draw.rectangle((min_x, min_y, max_x, max_y), fill='blue', outline='blue') |
|
17 |
|
|
18 |
def save_as(self, path): |
|
19 |
self.im.save(path) |
HYTOS/HYTOS/MainWindow.py | ||
---|---|---|
42 | 42 |
def is_blank(s): |
43 | 43 |
return not (s and s.strip()) |
44 | 44 |
|
45 |
def is_not_blank(s): |
|
46 |
return bool(s and s.strip()) |
|
47 |
|
|
45 | 48 |
|
46 | 49 |
def is_float(s): |
47 | 50 |
try: |
... | ... | |
953 | 956 |
"""generate calculation report""" |
954 | 957 |
from tempfile import NamedTemporaryFile |
955 | 958 |
import openpyxl |
959 |
from DrawImage import DrawImage |
|
956 | 960 |
from openpyxl.styles import Font |
957 | 961 |
from datetime import datetime |
958 | 962 |
from EngineeringStreamlineItem import QEngineeringStreamlineItem |
... | ... | |
1369 | 1373 |
|
1370 | 1374 |
col_no += 1 |
1371 | 1375 |
stream_count += 1 |
1376 |
|
|
1372 | 1377 |
# two_phase |
1373 | 1378 |
if hmbs is not None: |
1374 | 1379 |
for hmb in hmbs: |
... | ... | |
1379 | 1384 |
ws = wb.copy_worksheet(wb.get_sheet_by_name('Two_phase')) |
1380 | 1385 |
ws.title = 'Two Phase {}'.format(str(lines[0])) |
1381 | 1386 |
|
1382 |
horizontal_flow_image = openpyxl.drawing.image.Image(horizontal_flow_image_path) |
|
1383 |
horizontal_flow_image.width *= 0.6 |
|
1384 |
horizontal_flow_image.height *= 0.6 |
|
1385 |
ws.add_image(horizontal_flow_image, 'L3') |
|
1386 |
vertical_upward_flow_image = openpyxl.drawing.image.Image( |
|
1387 |
vertical_upward_flow_image_path) |
|
1388 |
vertical_upward_flow_image.width *= 0.6 |
|
1389 |
vertical_upward_flow_image.height *= 0.6 |
|
1390 |
ws.add_image(vertical_upward_flow_image, 'R3') |
|
1391 |
vertical_downward_flow_image = openpyxl.drawing.image.Image( |
|
1392 |
vertical_downward_flow_image_path) |
|
1393 |
vertical_downward_flow_image.width *= 0.6 |
|
1394 |
vertical_downward_flow_image.height *= 0.6 |
|
1395 |
ws.add_image(vertical_downward_flow_image, 'Z3') |
|
1396 |
|
|
1397 | 1387 |
# Information |
1398 | 1388 |
ws['B5'].value = 'File : Two_Phase' |
1399 | 1389 |
ws['B6'].value = 'Line : {}'.format(lines[0].stream_no) |
... | ... | |
1448 | 1438 |
|
1449 | 1439 |
row_no += 1 |
1450 | 1440 |
|
1441 |
|
|
1442 |
# horizontal_flow_image = openpyxl.drawing.image.Image(horizontal_flow_image_path) |
|
1443 |
# horizontal_flow_image.width *= 0.6 |
|
1444 |
# horizontal_flow_image.height *= 0.6 |
|
1445 |
# ws.add_image(horizontal_flow_image, 'L3') |
|
1446 |
|
|
1447 |
# vertical_upward_flow_image = openpyxl.drawing.image.Image( |
|
1448 |
# vertical_upward_flow_image_path) |
|
1449 |
# vertical_upward_flow_image.width *= 0.6 |
|
1450 |
# vertical_upward_flow_image.height *= 0.6 |
|
1451 |
# ws.add_image(vertical_upward_flow_image, 'R3') |
|
1452 |
|
|
1453 |
# vertical_downward_flow_image = openpyxl.drawing.image.Image( |
|
1454 |
# vertical_downward_flow_image_path) |
|
1455 |
# vertical_downward_flow_image.width *= 0.6 |
|
1456 |
# vertical_downward_flow_image.height *= 0.6 |
|
1457 |
# ws.add_image(vertical_downward_flow_image, 'Z3') |
|
1458 |
|
|
1459 |
horizontal = DrawImage(horizontal_flow_image_path) |
|
1460 |
vertical_upward = DrawImage(vertical_upward_flow_image_path) |
|
1461 |
vertical_downward = DrawImage(vertical_downward_flow_image_path) |
|
1462 |
# Calculation Result |
|
1451 | 1463 |
row_no = 37 |
1452 | 1464 |
for row in lines[0].mixed_pressure_variation: |
1453 | 1465 |
col_no = 12 |
1454 |
ws.cell(row_no, col_no, str(row[0])) # Element |
|
1466 |
ws.cell(row_no, col_no, str(row[0])) # Element
|
|
1455 | 1467 |
col_no += 1 |
1456 |
ws.cell(row_no, col_no, row[1]) |
|
1468 |
ws.cell(row_no, col_no, row[1]) # ID
|
|
1457 | 1469 |
col_no += 1 |
1458 |
ws.cell(row_no, col_no, row[2]) |
|
1470 |
ws.cell(row_no, col_no, row[2]) # Length
|
|
1459 | 1471 |
col_no += 1 |
1460 |
ws.cell(row_no, col_no, row[3]) |
|
1472 |
ws.cell(row_no, col_no, row[3]) # Angle
|
|
1461 | 1473 |
col_no += 1 |
1462 |
ws.cell(row_no, col_no, row[4]) |
|
1474 |
ws.cell(row_no, col_no, row[4]) # K
|
|
1463 | 1475 |
col_no += 1 |
1464 |
ws.cell(row_no, col_no, row[5]) |
|
1476 |
ws.cell(row_no, col_no, row[5]) # Pressure
|
|
1465 | 1477 |
col_no += 1 |
1466 |
ws.cell(row_no, col_no, row[6]) |
|
1478 |
ws.cell(row_no, col_no, row[6]) # Void
|
|
1467 | 1479 |
col_no += 1 |
1468 |
ws.cell(row_no, col_no, row[7]) |
|
1480 |
ws.cell(row_no, col_no, row[7]) # Quality
|
|
1469 | 1481 |
col_no += 1 |
1470 |
ws.cell(row_no, col_no, row[8]) |
|
1482 |
ws.cell(row_no, col_no, row[8]) # Density
|
|
1471 | 1483 |
col_no += 1 |
1472 |
ws.cell(row_no, col_no, row[9]) |
|
1484 |
ws.cell(row_no, col_no, row[9]) # V.Density
|
|
1473 | 1485 |
col_no += 1 |
1474 |
ws.cell(row_no, col_no, row[10]) |
|
1486 |
ws.cell(row_no, col_no, row[10]) # Mean.Vel
|
|
1475 | 1487 |
col_no += 1 |
1476 |
ws.cell(row_no, col_no, row[11]) |
|
1488 |
ws.cell(row_no, col_no, row[11]) # Max.Vel
|
|
1477 | 1489 |
col_no += 1 |
1478 |
ws.cell(row_no, col_no, row[12]) |
|
1490 |
ws.cell(row_no, col_no, row[12]) # Ero.Vel
|
|
1479 | 1491 |
col_no += 1 |
1480 |
ws.cell(row_no, col_no, row[13]) |
|
1492 |
ws.cell(row_no, col_no, row[13]) # X
|
|
1481 | 1493 |
col_no += 1 |
1482 |
ws.cell(row_no, col_no, row[14]) |
|
1494 |
ws.cell(row_no, col_no, row[14]) # Y
|
|
1483 | 1495 |
col_no += 1 |
1484 |
ws.cell(row_no, col_no, str(row[15]) if row[15] else '') |
|
1496 |
ws.cell(row_no, col_no, str(row[15]) if row[15] else '') # Regime
|
|
1485 | 1497 |
col_no += 1 |
1486 |
ws.cell(row_no, col_no, row[16]) |
|
1498 |
ws.cell(row_no, col_no, row[16]) # Friction
|
|
1487 | 1499 |
col_no += 1 |
1488 |
ws.cell(row_no, col_no, row[17]) |
|
1500 |
ws.cell(row_no, col_no, row[17]) # Gravity
|
|
1489 | 1501 |
col_no += 1 |
1490 |
ws.cell(row_no, col_no, row[18]) |
|
1502 |
ws.cell(row_no, col_no, row[18]) # Moment
|
|
1491 | 1503 |
col_no += 1 |
1492 |
ws.cell(row_no, col_no, row[19]) |
|
1493 |
|
|
1504 |
ws.cell(row_no, col_no, row[19]) # Total |
|
1505 |
|
|
1506 |
# load_regime |
|
1507 |
length = row[2] |
|
1508 |
if length is not None: |
|
1509 |
x = float(row[13]) |
|
1510 |
y = float(row[14]) |
|
1511 |
|
|
1512 |
angle = float(row[3]) |
|
1513 |
if angle == 0: |
|
1514 |
# Horizontal |
|
1515 |
left = 57 + (546 / (7 + 5)) * (math.log10(x) + 5) |
|
1516 |
top = 651 - (649 / (5 + 9)) * (math.log10(y) + 9) |
|
1517 |
horizontal.draw_regime(left, top, 8) |
|
1518 |
elif angle > 0: |
|
1519 |
# Vertical Upward |
|
1520 |
left = 59 + (538 / (7 - (-2))) * (math.log10(x) - (-2)) |
|
1521 |
top = 681 - (653 / (8 - (-5))) * (math.log10(y) - (-5)) |
|
1522 |
vertical_upward.draw_regime(left, top, 8) |
|
1523 |
elif angle < 0: |
|
1524 |
# Vertical Downward |
|
1525 |
left = 55 + (517 / (20 - 0)) * (x - 0) |
|
1526 |
top = 656 - (635 / (24 - 2)) * (y - 2) |
|
1527 |
vertical_downward.draw_regime(left, top, 8) |
|
1494 | 1528 |
row_no += 1 |
1495 | 1529 |
|
1530 |
with NamedTemporaryFile() as f: |
|
1531 |
horizontal_image_path = f.name + '.png' |
|
1532 |
horizontal.save_as(horizontal_image_path) |
|
1533 |
|
|
1534 |
horizontal_flow_image = openpyxl.drawing.image.Image(horizontal_image_path) |
|
1535 |
horizontal_flow_image.width *= 0.6 |
|
1536 |
horizontal_flow_image.height *= 0.6 |
|
1537 |
ws.add_image(horizontal_flow_image, 'L3') |
|
1538 |
|
|
1539 |
with NamedTemporaryFile() as f: |
|
1540 |
vertical_upward_image_path = f.name + '.png' |
|
1541 |
vertical_upward.save_as(vertical_upward_image_path) |
|
1542 |
|
|
1543 |
vertical_upward_flow_image = openpyxl.drawing.image.Image( |
|
1544 |
vertical_upward_image_path) |
|
1545 |
vertical_upward_flow_image.width *= 0.6 |
|
1546 |
vertical_upward_flow_image.height *= 0.6 |
|
1547 |
ws.add_image(vertical_upward_flow_image, 'R3') |
|
1548 |
|
|
1549 |
with NamedTemporaryFile() as f: |
|
1550 |
vertical_downward_image_path = f.name + '.png' |
|
1551 |
vertical_downward.save_as(vertical_downward_image_path) |
|
1552 |
|
|
1553 |
vertical_downward_flow_image = openpyxl.drawing.image.Image( |
|
1554 |
vertical_downward_image_path) |
|
1555 |
vertical_downward_flow_image.width *= 0.6 |
|
1556 |
vertical_downward_flow_image.height *= 0.6 |
|
1557 |
ws.add_image(vertical_downward_flow_image, 'Z3') |
|
1558 |
|
|
1496 | 1559 |
active_sheet = wb.get_sheet_by_name('Page (1)') |
1497 | 1560 |
if active_sheet: |
1498 | 1561 |
wb.active = active_sheet |
내보내기 Unified diff