프로젝트

일반

사용자정보

개정판 dd46ca83

IDdd46ca83606938007ed6e111a52b783c25db9923
상위 9b5d4527
하위 300486fb

Gyusu 이(가) 6년 이상 전에 추가함

issue #654 Branch Line Update

차이점 보기:

DTI_PID/SPPIDConverter/Main.vb
405 405
                Dim sSymbolUid As String = oSymbolInfo(_XML_SYMBOL_UID).ToString()
406 406
                Dim dConn1Pos_x As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN1_POINT_X)
407 407
                Dim dConn1Pos_y As Double = oSymbolInfo(_XML_SYMBOL_DWG_CONN1_POINT_Y)
408

  
409 408
                Dim sConn1Uid As String = ""
410 409
                Dim sConn2Uid As String = ""
411

  
412 410
                sConn1Uid = FindConnection(oLine_Dt, oSymbol_Dt, sSymbolUid, dConn1Pos_x, dConn1Pos_y)
413 411
                If sConn1Uid <> "" Then
414 412
                    oSymbolInfo(_XML_SYMBOL_Conn1_Uid) = sConn1Uid
......
2368 2366
                        End If
2369 2367
                        If sID_1 <> "" And sID_2 <> "" Then
2370 2368
                            'PipeRun 합치기
2371
                            JoinPipeRun(sID_1, sID_2)
2369

  
2372 2370

  
2373 2371
                            If bCheckBranchItem Then
2374 2372
                                '모델링 된 PipeLine 데이터 테이블 저장
2375 2373
                                AddModelingDT(sUid, oCurrentConnector.ModelItemID, oCurrentConnector, dStart_Dwg_x, dStart_Dwg_y, dEnd_Dwg_x, dEnd_Dwg_y)
2376 2374
                            Else
2375
                                JoinPipeRun(sID_1, sID_2)
2377 2376
                                '모델링 된 PipeLine 데이터 테이블 저장
2378 2377
                                AddModelingDT(sUid, sID_1, oAddConnector, dStart_Dwg_x, dStart_Dwg_y, dEnd_Dwg_x, dEnd_Dwg_y)
2379 2378
                            End If
......
2381 2380
                            '모델링 된 PipeLine 데이터 테이블 저장
2382 2381
                            AddModelingDT(sUid, oCurrentConnector.ModelItemID, oCurrentConnector, dStart_Dwg_x, dStart_Dwg_y, dEnd_Dwg_x, dEnd_Dwg_y)
2383 2382
                        End If
2384
                        If bCheckBranchItem Then
2383
                        If bCheckBranchItem = False Then
2385 2384
                            '//2018.09.07 LMControl에 따라서 inconsitency가 달라지는듯 확인
2386 2385
                            If sStartConnectionUid <> "" Then
2387 2386
                                Dim oChangeRow() As DataRow = _ModelingLine_Dt.Select(_XML_LINE_UID & " = '" & sStartConnectionUid & "'")
......
3615 3614

  
3616 3615
    Private Function UpdateCheckBranchLine(ByRef dX As Double, ByRef dY As Double,
3617 3616
                                  ByRef oLMConnector As LMConnector, ByRef sUid As String) As Boolean
3617
        Dim oDataSource As LMADataSource = _Placement.PIDDataSource
3618 3618
        Dim bCheckBranchItem As Boolean = False
3619 3619
        Dim iGapCheck As Integer = 0
3620 3620
        Try
......
3634 3634
                d기준x = (dModelStartX + dModelEndX) / 2
3635 3635
                d기준y = (dModelStartY + dModelEndY) / 2
3636 3636

  
3637

  
3638

  
3639 3637
                Dim dMax_X As Double = 0.0
3640 3638
                Dim dMax_Y As Double = 0.0
3641 3639
                Dim dMin_X As Double = 0.0
......
3664 3662
                        dX = dMax_X
3665 3663
                    End If
3666 3664

  
3667

  
3668 3665
                    Try
3669 3666
                        Dim sModelItemID As String = oModelrow(_XML_LINE_SPID).ToString()
3670 3667
                        sUid = oModelrow(_XML_LINE_UID).ToString()
3671
                        oRun = _Placement.PIDDataSource.GetPipeRun(sModelItemID)
3668
                        oRun = oDataSource.GetPipeRun(sModelItemID)
3672 3669
                        oLMConnector = oModelrow(_XML_LINE_LMCONNECTOR)
3673 3670
                    Catch ex As Exception
3674 3671
                    End Try
3675 3672
                    Try
3676 3673
                        If oRun IsNot Nothing Then
3677 3674
                            Dim dResultCalc As Double = -1
3678

  
3675
                            Dim bBranchFlag As Boolean = False
3676
                            Dim dBranchX As Double = 0
3677
                            Dim dBranchY As Double = 0
3679 3678
                            For Each objRep In oRun.Representations
3680
                                Dim sAttriName As String
3681
                                For Each objAttr In objRep.Attributes
3682
                                    sAttriName = objAttr.name
3683
                                Next
3679
                                '  Dim sAttriName As String
3680
                                'For Each objAttr In objRep.Attributes
3681
                                '    sAttriName = objAttr.name
3682
                                'Next
3683
                                'MsgBox(objRep.RepresentationType)
3684 3684
                                If objRep.RepresentationType = "Connector" Then
3685
                                    Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
3686
                                    Dim sItemStatus As String = objConnector.Attributes("ItemStatus").Value
3687
                                    Dim sModelTypeName As String = objConnector.ModelItemObject.Attributes("ItemTypeName").Value
3685
                                    Dim objConnector As LMConnector = oDataSource.GetConnector(objRep.ID)
3686
                                    '     Dim sItemStatus As String = objConnector.Attributes("ItemStatus").Value
3687
                                    '   Dim sModelTypeName As String = objConnector.ModelItemObject.Attributes("ItemTypeName").Value
3688 3688

  
3689 3689
                                    'Dim dConn_SX As Double = 0
3690 3690
                                    'Dim dConn_SY As Double = 0
......
3703 3703
                                        '    dConn_EY = objConnectorVertex.Attributes("YCoordinate").Value
3704 3704
                                        'End If
3705 3705
                                        Dim dCalc As Double = Math.Abs(dConn_X - dX) + Math.Abs(dConn_Y - dY)
3706
                                        If dResultCalc = -1 Or dResultCalc > dCalc Then
3707
                                            dResultCalc = dCalc
3708
                                            oLMConnector = objConnector
3709
                                            bCheckBranchItem = True
3706
                                        If bBranchFlag = False Then
3707
                                            If dResultCalc = -1 Or dResultCalc > dCalc Then
3708
                                                dResultCalc = dCalc
3709
                                                oLMConnector = objConnector
3710
                                                bCheckBranchItem = True
3711
                                            End If
3712
                                        Else
3713
                                            If (dConn_X >= dX And dBranchX <= dX And dConn_Y >= dY And dBranchY <= dY) Or
3714
                                               (dConn_X <= dX And dBranchX >= dX And dConn_Y <= dY And dBranchY >= dY) Then
3715
                                                If dResultCalc = -1 Or dResultCalc > dCalc Then
3716
                                                    dResultCalc = dCalc
3717
                                                    oLMConnector = objConnector
3718
                                                    bCheckBranchItem = True
3719
                                                End If
3720
                                            End If
3710 3721
                                        End If
3711 3722

  
3723

  
3712 3724
                                        'If dConn_EX <> 0 And dConn_EY <> 0 Then
3713 3725
                                        '    If dConn_SX >= dX And dConn_EX <= dX And dConn_SY >= dY And dConn_EY <= dY Then
3714 3726
                                        '        oLMConnector = objConnector
......
3728 3740
                                    'If oLMConnector IsNot Nothing Then
3729 3741
                                    '    Exit For
3730 3742
                                    'End If
3743
                                ElseIf objRep.RepresentationType = "Branch" Then
3744
                                    Dim objConnector As LMSymbol = oDataSource.GetSymbol(objRep.ID)
3745
                                    dBranchX = objConnector.Attributes("XCoordinate").Value
3746
                                    dBranchY = objConnector.Attributes("YCoordinate").Value
3747
                                    bBranchFlag = True
3731 3748
                                End If
3732 3749
                                'If objRep.Attributes("RepresentationType").Value = "Connector" And objRep.Attributes("ItemStatus").Value = "Active" Then
3733 3750
                                '    Dim objConnector As LMConnector = _Placement.PIDDataSource.GetConnector(objRep.ID)
......
3848 3865
        '오차범위를 줘서 현재선을 통과하는지 체크
3849 3866
        '통과하는 상대라인 갯수를 먼저 구한다음 라인 갯수만큼 라인을 그린다.
3850 3867
        Dim bCheckBranchLine As Boolean = False
3851
        'Dim sCurrentDirection As String = ""
3852

  
3853
        'Dim oModel_Dt As New DataTable()
3854
        'oModel_Dt.Columns.Add("X")
3855
        'oModel_Dt.Columns.Add("Y")
3856
        'oModel_Dt.Columns.Add("Type")
3857
        'oModel_Dt.Columns.Add("SPID")
3858
        'Dim dGap = 0.001
3859
        'If Math.Abs(dStartX - dEndX) > Math.Abs(dStartY - dEndY) Then
3860
        '    sCurrentDirection = "X"
3861
        '    If dStartX > dEndX Then
3862
        '        Dim dTempX As Double = dEndX
3863
        '        dEndX = dStartX
3864
        '        dStartX = dTempX
3865
        '        Dim dTempY As Double = dEndY
3866
        '        dEndY = dStartY
3867
        '        dStartY = dTempY
3868
        '    End If
3869
        '    '현재선이 X축방향
3870
        '    Try
3871
        '        For Each oModelrow In _ModelingLine_Dt.Rows
3872
        '            Dim dModelStart_X As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3873
        '            Dim dModelStart_Y As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3874
        '            Dim dModelEnd_X As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3875
        '            Dim dModelEnd_Y As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3876
        '            Dim sSPID As String = oModelrow(_XML_LINE_SPID)
3877
        '            If dStartX < dModelStart_X And dStartX < dModelEnd_X And
3878
        '               dEndX > dModelStart_X And dEndX > dModelEnd_X Then
3879
        '                Dim dAddX As Double = 0
3880
        '                Dim dAddY As Double = dStartY
3881
        '                Dim sType As String = ""
3882
        '                If dStartY = dModelStart_Y Then
3883
        '                    dAddX = dModelStart_X
3884
        '                ElseIf dStartY = dModelEnd_Y Then
3885
        '                    dAddX = dModelEnd_X
3886
        '                ElseIf dStartY <= dModelStart_Y + dGap And dStartY >= dModelStart_Y - dGap Then
3887
        '                    dAddX = dModelStart_X
3888
        '                    If dStartY > dModelStart_Y Then
3889
        '                        sType = "AddLine"
3890
        '                    End If
3891
        '                ElseIf dStartY <= dModelEnd_Y + dGap And dStartY >= dModelEnd_Y - dGap Then
3892
        '                    dAddX = dModelEnd_X
3893
        '                    If dStartY > dModelEnd_Y Then
3894
        '                        sType = "AddLine"
3895
        '                    End If
3896
        '                End If
3897
        '                If dAddX <> 0 Then
3898
        '                    Dim oDatarow As DataRow = oModel_Dt.NewRow()
3899
        '                    oDatarow("X") = dAddX
3900
        '                    oDatarow("Y") = dAddY
3901
        '                    oDatarow("Type") = sType
3902
        '                    oDatarow("SPID") = sSPID
3903
        '                    oModel_Dt.Rows.Add(oDatarow)
3904
        '                End If
3905
        '            End If
3906
        '        Next
3907
        '    Catch ex As Exception
3908
        '    End Try
3909
        'Else
3910
        '    '현재선이 y축방향
3911
        '    sCurrentDirection = "Y"
3912
        '    Try
3913
        '        For Each oModelrow In _ModelingLine_Dt.Rows
3914
        '            Dim dModelStart_X As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3915
        '            Dim dModelStart_Y As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3916
        '            Dim dModelEnd_X As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3917
        '            Dim dModelEnd_Y As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3918
        '            Dim sSPID As String = oModelrow(_XML_LINE_SPID)
3919
        '            If dStartY < dModelStart_Y And dStartY < dModelEnd_Y And
3920
        '               dEndY > dModelStart_Y And dEndY > dModelEnd_Y Then
3921
        '                Dim dAddX As Double = dStartX
3922
        '                Dim dAddY As Double = 0
3923
        '                Dim sType As String = ""
3924
        '                If dStartX = dModelStart_X Then
3925
        '                    dAddY = dModelStart_Y
3926
        '                ElseIf dStartX = dModelEnd_X Then
3927
        '                    dAddY = dModelEnd_Y
3928
        '                ElseIf dStartX <= dModelStart_X + dGap And dStartX >= dModelStart_X - dGap Then
3929
        '                    dAddY = dModelStart_Y
3930
        '                    If dStartX > dModelStart_X Then
3931
        '                        sType = "AddLine"
3932
        '                    End If
3933
        '                ElseIf dStartX <= dModelEnd_X + dGap And dStartX >= dModelEnd_X - dGap Then
3934
        '                    dAddY = dModelEnd_Y
3935
        '                    If dStartX > dModelEnd_X Then
3936
        '                        sType = "AddLine"
3937
        '                    End If
3938
        '                End If
3939
        '                If dAddX <> 0 Then
3940
        '                    Dim oDatarow As DataRow = oModel_Dt.NewRow()
3941
        '                    oDatarow("X") = dAddX
3942
        '                    oDatarow("Y") = dAddY
3943
        '                    oDatarow("Type") = sType
3944
        '                    oDatarow("SPID") = sSPID
3945
        '                    oModel_Dt.Rows.Add(oDatarow)
3946
        '                End If
3947
        '            End If
3948
        '        Next
3949
        '    Catch ex As Exception
3950
        '    End Try
3951
        'End If
3952
        'If oModel_Dt.Rows.Count > 0 Then
3953
        '    If sCurrentDirection = "X" Then
3954
        '        'X좌표 정렬
3955
        '        oModel_Dt.DefaultView.Sort = "X desc"
3956
        '        oModel_Dt = oModel_Dt.DefaultView.ToTable(True)
3957
        '    Else
3958
        '        'Y좌표 정렬
3959
        '        oModel_Dt.DefaultView.Sort = "Y desc"
3960
        '        oModel_Dt = oModel_Dt.DefaultView.ToTable(True)
3961
        '    End If
3962
        '    Dim oLMConnector As LMConnector = Nothing
3963
        '    Dim oPreLMConnector As LMConnector = Nothing
3964
        '    Dim dStartFlag As Boolean = True
3965
        '    For Each oModelRow In oModel_Dt.Rows
3966
        '        Dim objInputs As PlaceRunInputs
3967
        '        objInputs = New PlaceRunInputs
3968
        '        Dim dX As Double = oModelRow("X")
3969
        '        Dim dY As Double = oModelRow("Y")
3970
        '        Dim sType As String = oModelRow("Type")
3971
        '        Dim sUid As String = ""
3972
        '        CheckConnectionLine(dX, dY, oLMConnector, sUid)
3973
        '        If oLMConnector IsNot Nothing Then
3974
        '            If dStartFlag Then
3975
        '                objInputs.AddPoint(dStartX, dStartY)
3976
        '                objInputs.AddConnectorTarget(oLMConnector, dX, dY)
3977
        '            Else
3978
        '                objInputs.AddConnectorTarget(oPreLMConnector, dStartX, dStartY)
3979
        '                objInputs.AddConnectorTarget(oLMConnector, dX, dY)
3980
        '            End If
3981
        '            oPreLMConnector = LineModeling(objInputs, sSystemPath)
3982
        '            '모델링후 StartX를 현재 X로 변경
3983
        '            dStartX = dX
3984
        '            dStartY = dY
3985
        '        End If
3986
        '    Next
3987
        '    If oPreLMConnector IsNot Nothing Then
3988
        '        Dim objInputs As PlaceRunInputs
3989
        '        objInputs = New PlaceRunInputs
3990
        '        objInputs.AddConnectorTarget(oPreLMConnector, dStartX, dStartY)
3991
        '        objInputs.AddPoint(dEndX, dEndY)
3992
        '        LineModeling(objInputs, sSystemPath)
3993
        '    End If
3994
        'End If
3868
        Dim sCurrentDirection As String = ""
3869

  
3870
        Dim oModel_Dt As New DataTable()
3871
        oModel_Dt.Columns.Add("X")
3872
        oModel_Dt.Columns.Add("Y")
3873
        oModel_Dt.Columns.Add("Type")
3874
        oModel_Dt.Columns.Add("SPID")
3875
        Dim dGap = 0.001
3876
        If Math.Abs(dStartX - dEndX) > Math.Abs(dStartY - dEndY) Then
3877
            sCurrentDirection = "X"
3878
            If dStartX > dEndX Then
3879
                Dim dTempX As Double = dEndX
3880
                dEndX = dStartX
3881
                dStartX = dTempX
3882
                Dim dTempY As Double = dEndY
3883
                dEndY = dStartY
3884
                dStartY = dTempY
3885
            End If
3886
            '현재선이 X축방향
3887
            Try
3888
                For Each oModelrow In _ModelingLine_Dt.Rows
3889
                    Dim dModelStart_X As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3890
                    Dim dModelStart_Y As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3891
                    Dim dModelEnd_X As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3892
                    Dim dModelEnd_Y As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3893
                    Dim sSPID As String = oModelrow(_XML_LINE_SPID)
3894
                    If dStartX < dModelStart_X And dStartX < dModelEnd_X And
3895
                       dEndX > dModelStart_X And dEndX > dModelEnd_X Then
3896
                        Dim dAddX As Double = 0
3897
                        Dim dAddY As Double = dStartY
3898
                        Dim sType As String = ""
3899
                        If dStartY = dModelStart_Y Then
3900
                            dAddX = dModelStart_X
3901
                        ElseIf dStartY = dModelEnd_Y Then
3902
                            dAddX = dModelEnd_X
3903
                        ElseIf dStartY <= dModelStart_Y + dGap And dStartY >= dModelStart_Y - dGap Then
3904
                            dAddX = dModelStart_X
3905
                            If dStartY > dModelStart_Y Then
3906
                                sType = "AddLine"
3907
                            End If
3908
                        ElseIf dStartY <= dModelEnd_Y + dGap And dStartY >= dModelEnd_Y - dGap Then
3909
                            dAddX = dModelEnd_X
3910
                            If dStartY > dModelEnd_Y Then
3911
                                sType = "AddLine"
3912
                            End If
3913
                        End If
3914
                        If dAddX <> 0 Then
3915
                            Dim oDatarow As DataRow = oModel_Dt.NewRow()
3916
                            oDatarow("X") = dAddX
3917
                            oDatarow("Y") = dAddY
3918
                            oDatarow("Type") = sType
3919
                            oDatarow("SPID") = sSPID
3920
                            oModel_Dt.Rows.Add(oDatarow)
3921
                        End If
3922
                    End If
3923
                Next
3924
            Catch ex As Exception
3925
            End Try
3926
        Else
3927
            '현재선이 y축방향
3928
            sCurrentDirection = "Y"
3929
            Try
3930
                For Each oModelrow In _ModelingLine_Dt.Rows
3931
                    Dim dModelStart_X As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_X)
3932
                    Dim dModelStart_Y As Double = oModelrow(_XML_LINE_DWG_STARTPOINT_Y)
3933
                    Dim dModelEnd_X As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_X)
3934
                    Dim dModelEnd_Y As Double = oModelrow(_XML_LINE_DWG_ENDPOINT_Y)
3935
                    Dim sSPID As String = oModelrow(_XML_LINE_SPID)
3936
                    If dStartY < dModelStart_Y And dStartY < dModelEnd_Y And
3937
                       dEndY > dModelStart_Y And dEndY > dModelEnd_Y Then
3938
                        Dim dAddX As Double = dStartX
3939
                        Dim dAddY As Double = 0
3940
                        Dim sType As String = ""
3941
                        If dStartX = dModelStart_X Then
3942
                            dAddY = dModelStart_Y
3943
                        ElseIf dStartX = dModelEnd_X Then
3944
                            dAddY = dModelEnd_Y
3945
                        ElseIf dStartX <= dModelStart_X + dGap And dStartX >= dModelStart_X - dGap Then
3946
                            dAddY = dModelStart_Y
3947
                            If dStartX > dModelStart_X Then
3948
                                sType = "AddLine"
3949
                            End If
3950
                        ElseIf dStartX <= dModelEnd_X + dGap And dStartX >= dModelEnd_X - dGap Then
3951
                            dAddY = dModelEnd_Y
3952
                            If dStartX > dModelEnd_X Then
3953
                                sType = "AddLine"
3954
                            End If
3955
                        End If
3956
                        If dAddX <> 0 Then
3957
                            Dim oDatarow As DataRow = oModel_Dt.NewRow()
3958
                            oDatarow("X") = dAddX
3959
                            oDatarow("Y") = dAddY
3960
                            oDatarow("Type") = sType
3961
                            oDatarow("SPID") = sSPID
3962
                            oModel_Dt.Rows.Add(oDatarow)
3963
                        End If
3964
                    End If
3965
                Next
3966
            Catch ex As Exception
3967
            End Try
3968
        End If
3969

  
3970
        '//못미치는 라인은 라인길이를 더한후 나머지 모델링(2018.09.27)
3971

  
3972
        If oModel_Dt.Rows.Count > 0 Then
3973
            If sCurrentDirection = "X" Then
3974
                'X좌표 정렬
3975
                oModel_Dt.DefaultView.Sort = "X desc"
3976
                oModel_Dt = oModel_Dt.DefaultView.ToTable(True)
3977
            Else
3978
                'Y좌표 정렬
3979
                oModel_Dt.DefaultView.Sort = "Y desc"
3980
                oModel_Dt = oModel_Dt.DefaultView.ToTable(True)
3981
            End If
3982
            Dim oLMConnector As LMConnector = Nothing
3983
            Dim oPreLMConnector As LMConnector = Nothing
3984
            Dim dStartFlag As Boolean = True
3985
            For Each oModelRow In oModel_Dt.Rows
3986
                Dim objInputs As PlaceRunInputs
3987
                objInputs = New PlaceRunInputs
3988
                Dim dX As Double = oModelRow("X")
3989
                Dim dY As Double = oModelRow("Y")
3990
                Dim sType As String = oModelRow("Type")
3991
                Dim sUid As String = ""
3992
                CheckConnectionLine(dX, dY, oLMConnector, sUid)
3993
                If oLMConnector IsNot Nothing Then
3994
                    If dStartFlag Then
3995
                        objInputs.AddPoint(dStartX, dStartY)
3996
                        objInputs.AddConnectorTarget(oLMConnector, dX, dY)
3997
                    Else
3998
                        objInputs.AddConnectorTarget(oPreLMConnector, dStartX, dStartY)
3999
                        objInputs.AddConnectorTarget(oLMConnector, dX, dY)
4000
                    End If
4001
                    oPreLMConnector = LineModeling(objInputs, sSystemPath)
4002
                    '모델링후 StartX를 현재 X로 변경
4003
                    dStartX = dX
4004
                    dStartY = dY
4005
                End If
4006
            Next
4007
            If oPreLMConnector IsNot Nothing Then
4008
                Dim objInputs As PlaceRunInputs
4009
                objInputs = New PlaceRunInputs
4010
                objInputs.AddConnectorTarget(oPreLMConnector, dStartX, dStartY)
4011
                objInputs.AddPoint(dEndX, dEndY)
4012
                LineModeling(objInputs, sSystemPath)
4013
            End If
4014
        End If
3995 4015
        Return bCheckBranchLine
3996 4016
    End Function
3997 4017

  

내보내기 Unified diff