프로젝트

일반

사용자정보

개정판 74752074

ID74752074cd6bcfcd8eb777430e2f0c91fb0750c8
상위 0e0edfad
하위 b61dfeb5

gaqhf 이(가) 5년 이상 전에 추가함

dev issue #000 : AutoModeling 소스 검사 및 주석 처리

Change-Id: Ibd3f87ba5127d4f8eaaccd649a3529275eeb461f

차이점 보기:

DTI_PID/SPPIDConverter/AutoModeling.cs
82 82
            return EquipCount + SymbolCount + LineCount + NoteCount + TextCount + EndBreakCount;
83 83
        }
84 84

  
85
        /// <summary>
86
        /// 도면 단위당 실행되는 메서드
87
        /// </summary>
85 88
        public void Run()
86 89
        {
87 90
            try
......
312 315
            }
313 316
        }
314 317

  
318
        /// <summary>
319
        /// 도면 생성 메서드
320
        /// </summary>
315 321
        private void CreateDocument()
316 322
        {
317 323
            newDrawing = application.Drawings.Add(document.Unit, document.Template, document.DrawingNumber, document.DrawingName);
......
321 327
            Thread.Sleep(2000);
322 328
        }
323 329

  
330
        /// <summary>
331
        /// 도면 크기 구하는 메서드
332
        /// </summary>
333
        /// <returns></returns>
324 334
        private bool DocumentCoordinateCorrection()
325 335
        {
326 336
            double maxX = 0;
......
348 358
                return false;
349 359
        }
350 360

  
361
        /// <summary>
362
        /// 라인을 Run 단위로 모델링하는 진입 메서드
363
        /// </summary>
364
        /// <param name="run"></param>
351 365
        private void LineModelingByRun(LineRun run)
352 366
        {
353 367
            Line prevLine = null;
......
394 408
                LineModeling(lines);
395 409
        }
396 410

  
411
        /// <summary>
412
        /// 심볼을 Run 단위로 모델링하는 진입 메서드
413
        /// </summary>
414
        /// <param name="run"></param>
397 415
        private void SymbolModelingByRun(LineRun run)
398 416
        {
399 417
            // 양끝 Symbol 검사 후 Line이 나올때까지만 Symbol Modeling
......
424 442
            }
425 443
        }
426 444

  
445
        /// <summary>
446
        /// Run에 있는 심볼을 모델링하는데 기준이 Run의 시작점
447
        /// </summary>
448
        /// <param name="symbol"></param>
449
        /// <param name="run"></param>
427 450
        private void SymbolModelingByRunStart(Symbol symbol, LineRun run)
428 451
        {
429 452
            foreach (var connector in symbol.CONNECTORS)
......
431 454
                object targetItem = SPPIDUtil.FindObjectByUID(document, connector.CONNECTEDITEM);
432 455
                if (targetItem != null &&
433 456
                    (targetItem.GetType() == typeof(Symbol) || targetItem.GetType() == typeof(Equipment)) &&
434
                    !IsSameLineNumber(symbol, targetItem))
457
                    !IsSameLineRun(symbol, targetItem))
435 458
                {
436 459
                    SymbolModeling(symbol, targetItem as Symbol, null);
437 460
                    for (int i = 1; i < run.RUNITEMS.Count; i++)
......
449 472

  
450 473
        }
451 474

  
475
        /// <summary>
476
        /// Run에 있는 심볼을 모델링하는데 기준이 Run의 끝점
477
        /// </summary>
478
        /// <param name="symbol"></param>
479
        /// <param name="run"></param>
452 480
        private void SymbolModelingByRunEnd(Symbol symbol, LineRun run)
453 481
        {
454 482
            foreach (var connector in symbol.CONNECTORS)
......
456 484
                object targetItem = SPPIDUtil.FindObjectByUID(document, connector.CONNECTEDITEM);
457 485
                if (targetItem != null &&
458 486
                    (targetItem.GetType() == typeof(Symbol) || targetItem.GetType() == typeof(Equipment)) &&
459
                    !IsSameLineNumber(symbol, targetItem))
487
                    !IsSameLineRun(symbol, targetItem))
460 488
                {
461 489
                    SymbolModeling(symbol, targetItem as Symbol, null);
462 490
                    for (int i = run.RUNITEMS.Count - 2; i >= 0; i--)
......
472 500
            }
473 501
        }
474 502

  
503
        /// <summary>
504
        /// 심볼을 실제로 Modeling 메서드
505
        /// </summary>
506
        /// <param name="symbol"></param>
507
        /// <param name="targetSymbol"></param>
508
        /// <param name="prevSymbol"></param>
475 509
        private void SymbolModeling(Symbol symbol, Symbol targetSymbol, Symbol prevSymbol)
476 510
        {
477 511
            // 임시
......
550 584
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
551 585
        }
552 586

  
587
        /// <summary>
588
        /// Equipment를 실제로 Modeling 메서드
589
        /// </summary>
590
        /// <param name="equipment"></param>
553 591
        private void EquipmentModeling(Equipment equipment)
554 592
        {
555 593
            if (!string.IsNullOrEmpty(equipment.SPPID.RepresentationId))
......
616 654
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
617 655
        }
618 656

  
657
        /// <summary>
658
        /// 심볼을 실제로 Modeling할때 ChildSymbol이 있다면 Modeling하는 메서드
659
        /// </summary>
660
        /// <param name="childSymbol"></param>
661
        /// <param name="parentSymbol"></param>
619 662
        private void CreateChildSymbol(ChildSymbol childSymbol, LMSymbol parentSymbol)
620 663
        {
621 664
            Ingr.RAD2D.Symbol2d symbol2d = radApp.ActiveDocument.ActiveSheet.DrawingObjects[parentSymbol.get_GraphicOID().ToString()];
......
637 680
            ReleaseCOMObjects(_LMSymbol);
638 681
        }
639 682

  
640
        private bool IsSameLineNumber(object item, object targetItem)
683
        /// <summary>
684
        /// item이 TargetItem과 같은 LineRun에 있는지 검사
685
        /// </summary>
686
        /// <param name="item"></param>
687
        /// <param name="targetItem"></param>
688
        /// <returns></returns>
689
        private bool IsSameLineRun(object item, object targetItem)
641 690
        {
642 691
            foreach (var lineNumber in document.LINENUMBERS)
643 692
            {
......
665 714
            return false;
666 715
        }
667 716

  
717
        /// <summary>
718
        /// Line을 실제로 모델링하는 메서드
719
        /// </summary>
720
        /// <param name="lines"></param>
668 721
        private void LineModeling(List<Line> lines)
669 722
        {
670 723
            _LMAItem _LMAItem = _placement.PIDCreateItem(lines[0].SPPID.MAPPINGNAME);
......
780 833
            ReleaseCOMObjects(_LMAItem);
781 834
        }
782 835

  
836
        /// <summary>
837
        /// Symbol이 모델링된 SPPPID Symbol Object를 반환 - 연결된 Symbol이 ChildSymbol일 수도 있기때문에 메서드 개발
838
        /// </summary>
839
        /// <param name="symbol"></param>
840
        /// <param name="line"></param>
841
        /// <returns></returns>
783 842
        private LMSymbol GetTargetSymbol(Symbol symbol, Line line)
784 843
        {
785 844
            LMSymbol _LMSymbol = null;
......
814 873
            return _LMSymbol;
815 874
        }
816 875

  
876
        /// <summary>
877
        /// Connector를 가지고 있는 ChildSymbol Object 반환
878
        /// </summary>
879
        /// <param name="item"></param>
880
        /// <param name="connector"></param>
881
        /// <returns></returns>
817 882
        private ChildSymbol GetChildSymbolByConnector(ChildSymbol item, Connector connector)
818 883
        {
819 884
            foreach (var childSymbol in item.ChildSymbols)
......
827 892
            return null;
828 893
        }
829 894

  
895
        /// <summary>
896
        /// Branch 라인을 다시 모델링하는 진입 메서드
897
        /// </summary>
898
        /// <param name="branch"></param>
830 899
        private void BranchLineModeling(Tuple<string, Line, Line> branch)
831 900
        {
832 901
            List<Line> lines = SPPIDUtil.FindLinesByModelId(document, branch.Item1);
......
935 1004
                ReleaseCOMObjects(item.Key);
936 1005
        }
937 1006

  
1007
        /// <summary>
1008
        /// Branch 라인을 다시 실제로 모델링하는 메서드
1009
        /// </summary>
1010
        /// <param name="branch"></param>
1011
        /// <param name="_Connector"></param>
1012
        /// <param name="points"></param>
1013
        /// <param name="IsStart"></param>
938 1014
        private void BranchLineModelingByConnector(Tuple<string, Line, Line> branch, LMConnector _Connector, List<double[]> points, bool IsStart)
939 1015
        {
940 1016
            List<Line> lines = SPPIDUtil.FindLinesByModelId(document, branch.Item1);
......
1080 1156
                ReleaseCOMObjects(item.Key);
1081 1157
        }
1082 1158

  
1159
        /// <summary>
1160
        /// EndBreak 모델링 메서드
1161
        /// </summary>
1162
        /// <param name="endBreak"></param>
1083 1163
        private void EndBreakModeling(EndBreak endBreak)
1084 1164
        {
1085 1165
            object ownerObj = SPPIDUtil.FindObjectByUID(document, endBreak.OWNER);
......
1094 1174
                
1095 1175
                if (targetLMConnector != null)
1096 1176
                {
1097
                    //double[] point = connectorVertices[targetLMConnector][connectorVertices[targetLMConnector].Count - 1];
1098
                    //Array array = new double[] { 0, point[0], point[1] };
1099 1177
                    Array array = new double[] { 0, endBreak.SPPID.ORIGINAL_X, endBreak.SPPID.ORIGINAL_Y };
1100 1178
                    _LmLabelPersist = _placement.PIDPlaceLabel(endBreak.SPPID.MAPPINGNAME, ref array, Rotation: 0, LabeledItem: targetLMConnector.AsLMRepresentation(), IsLeaderVisible: true);
1101 1179
                }
......
1192 1270
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
1193 1271
        }
1194 1272

  
1273
        /// <summary>
1274
        /// EndBreak 모델링이 실패시 다시 시도하는 메서드
1275
        /// </summary>
1276
        /// <param name="endBreak"></param>
1277
        /// <param name="targetLMConnector"></param>
1195 1278
        private void RetryEndBreakModeling(EndBreak endBreak, LMConnector targetLMConnector)
1196 1279
        {
1197 1280
            bool isZeroLength = Convert.ToBoolean(targetLMConnector.get_IsZeroLength());
......
1285 1368
            ReleaseCOMObjects(_LMAItem);
1286 1369
        }
1287 1370

  
1371
        /// <summary>
1372
        /// FromModelItem을 ToModelItem으로 PipeRunJoin하는 메서드
1373
        /// </summary>
1374
        /// <param name="fromModelItemId"></param>
1375
        /// <param name="toModelItemId"></param>
1288 1376
        private void JoinPipeRun(string fromModelItemId, string toModelItemId)
1289 1377
        {
1290 1378
            LMModelItem modelItem1 = dataSource.GetModelItem(toModelItemId);
......
1316 1404
            }
1317 1405
        }
1318 1406

  
1407
        /// <summary>
1408
        /// PipeRun을 자동으로 Join하는 메서드
1409
        /// </summary>
1410
        /// <param name="modelItemId"></param>
1319 1411
        private void AutoJoinPipeRun(string modelItemId)
1320 1412
        {
1321 1413
            LMModelItem modelItem = dataSource.GetModelItem(modelItemId);
......
1345 1437
            }
1346 1438
        }
1347 1439

  
1440
        /// <summary>
1441
        /// LineRun에 있는 Line들을 Join하는 진입 메서드
1442
        /// </summary>
1443
        /// <param name="run"></param>
1348 1444
        private void JoinRunLine(LineRun run)
1349 1445
        {
1350 1446
            string modelItemId = string.Empty;
......
1361 1457
            }
1362 1458
        }
1363 1459

  
1460
        /// <summary>
1461
        /// PipeRun의 좌표를 가져오는 메서드
1462
        /// </summary>
1463
        /// <param name="modelId"></param>
1464
        /// <returns></returns>
1364 1465
        private Dictionary<LMConnector, List<double[]>> GetPipeRunVertices(string modelId)
1365 1466
        {
1366 1467
            Dictionary<LMConnector, List<double[]>> connectorVertices = new Dictionary<LMConnector, List<double[]>>();
......
1396 1497
            return connectorVertices;
1397 1498
        }
1398 1499

  
1500
        /// <summary>
1501
        /// 좌표로 PipeRun의 Connector중에 어느 Connector에 가까운지/붙을지 가져오는 메서드 - 두점으로 라인의 교차점을 기준으로 구함
1502
        /// </summary>
1503
        /// <param name="connectorVertices"></param>
1504
        /// <param name="connX"></param>
1505
        /// <param name="connY"></param>
1506
        /// <param name="x2"></param>
1507
        /// <param name="y2"></param>
1508
        /// <returns></returns>
1399 1509
        private LMConnector FindTargetLMConnector(Dictionary<LMConnector, List<double[]>> connectorVertices, double connX, double connY, double x2, double y2)
1400 1510
        {
1401 1511
            double length = double.MaxValue;
......
1469 1579
            return targetConnector;
1470 1580
        }
1471 1581

  
1582
        /// <summary>
1583
        /// 좌표로 PipeRun의 Connector중에 어느 Connector에 가까운지/붙을지 가져오는 메서드 - 한점으로 제일 가까운 기준으로 구함(단순)
1584
        /// </summary>
1585
        /// <param name="connectorVertices"></param>
1586
        /// <param name="connX"></param>
1587
        /// <param name="connY"></param>
1588
        /// <returns></returns>
1472 1589
        private LMConnector FindTargetLMConnectorByPoint(Dictionary<LMConnector, List<double[]>> connectorVertices, double connX, double connY)
1473 1590
        {
1474 1591
            double length = double.MaxValue;
......
1491 1608
            return targetConnector;
1492 1609
        }
1493 1610

  
1611
        /// <summary>
1612
        /// 좌표로 PipeRun의 Connector중에 어느 Connector에 가까운지/붙을지 가져오는 메서드 - 조건에 안맞아서 못찾을시 제일 가까운 점으로 가져오는 방식
1613
        /// </summary>
1614
        /// <param name="connectorVertices"></param>
1615
        /// <param name="connX"></param>
1616
        /// <param name="connY"></param>
1617
        /// <returns></returns>
1494 1618
        private LMConnector FindTargetLMConnectorForLabel(Dictionary<LMConnector, List<double[]>> connectorVertices, double connX, double connY)
1495 1619
        {
1496 1620
            double length = double.MaxValue;
......
1550 1674
            return targetConnector;
1551 1675
        }
1552 1676

  
1677
        /// <summary>
1678
        /// Line Number Symbol을 실제로 Modeling하는 메서드
1679
        /// </summary>
1680
        /// <param name="lineNumber"></param>
1553 1681
        private void LineNumberModeling(LineNumber lineNumber)
1554 1682
        {
1555 1683
            Line line = SPPIDUtil.FindObjectByUID(document, lineNumber.CONNLINE) as Line;
......
1581 1709
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
1582 1710
        }
1583 1711

  
1712
        /// <summary>
1713
        /// Line Number 기준으로 모든 Item에 Line Number의 Attribute Input
1714
        /// </summary>
1715
        /// <param name="lineNumber"></param>
1584 1716
        private void InputLineNumberAttribute(LineNumber lineNumber)
1585 1717
        {
1586 1718
            foreach (LineRun run in lineNumber.RUNS)
......
1653 1785
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
1654 1786
        }
1655 1787

  
1788
        /// <summary>
1789
        /// Symbol Attribute 입력 메서드
1790
        /// </summary>
1791
        /// <param name="symbol"></param>
1656 1792
        private void InputSymbolAttribute(Symbol symbol)
1657 1793
        {
1658 1794
            try
......
1719 1855
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
1720 1856
        }
1721 1857

  
1858
        /// <summary>
1859
        /// Text Modeling - Association일 경우는 Text대신 해당 맵핑된 Symbol로 모델링
1860
        /// </summary>
1861
        /// <param name="text"></param>
1722 1862
        private void TextModeling(Text text)
1723 1863
        {
1724 1864
            LMSymbol _LMSymbol = null;
......
1806 1946
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
1807 1947
        }
1808 1948

  
1949
        /// <summary>
1950
        /// Note Modeling
1951
        /// </summary>
1952
        /// <param name="note"></param>
1809 1953
        private void NoteModeling(Note note)
1810 1954
        {
1811 1955
            LMSymbol _LMSymbol = null;
......
1844 1988
            SplashScreenManager.Default.SendCommand(SPPIDSplashScreen.SplashScreenCommand.SetProgress, ++CurrentCount);
1845 1989
        }
1846 1990

  
1991
        /// <summary>
1992
        /// Label의 좌표를 구하는 메서드(ID2 기준의 좌표 -> SPPID 좌표)
1993
        /// </summary>
1994
        /// <param name="x"></param>
1995
        /// <param name="y"></param>
1996
        /// <param name="originX"></param>
1997
        /// <param name="originY"></param>
1998
        /// <param name="SPPIDLabelLocation"></param>
1999
        /// <param name="location"></param>
1847 2000
        private void CalcLabelLocation(ref double x, ref double y, double originX, double originY, SPPIDLabelLocationInfo SPPIDLabelLocation, Location location)
1848 2001
        {
1849 2002
            if (location == Location.None)
......
1871 2024
            }
1872 2025
        }
1873 2026

  
2027
        /// <summary>
2028
        /// ComObject를 Release
2029
        /// </summary>
2030
        /// <param name="objVars"></param>
1874 2031
        public void ReleaseCOMObjects(params object[] objVars)
1875 2032
        {
1876 2033
            int intNewRefCount = 0;

내보내기 Unified diff

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