프로젝트

일반

사용자정보

개정판 70fa5473

ID70fa547317a25100fa9c4eea63eddf4a9deb04c3
상위 cf92a956
하위 88ba4135

김연진이(가) 약 5년 전에 추가함

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

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