Object name:O0_TVCurl=Class
Style: X=65.362896 Y=73.026102 A=720 S=1 Color= BGColor= Width= W=45 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 105,160,150,200
PortList lines:1
Name=port1 AR=R X=0 Y=1 Conn=Connection81 Port=End
Object name:O1_TVPort=Class
Style: X=-90 Y=-180 A=720 S=1 Color= BGColor= Width= W=65.431291 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 310.210853,43.987316,375.642144,83.987316
PortList lines:3
Name=port1 AR=R X=0 Y=1 Conn=Connection82 Port=End
Name=port2 AR=R X=0.167151633333333 Y=0.6461373 Conn=Connection84 Port=Start
Name=port3 AR=R X=0.195374073333333 Y=0.569701525 Conn= Port=
Object name:O2_TVTemplate=Class
Style: X=165.646544 Y=184.513522 A=720 S=1 Color= BGColor= Width= W=90 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 95,160,5,200
PortList lines:1
Name=port1 AR=R X=0 Y=1 Conn=Connection80 Port=End
Object name:O3_TVObject=Class
Style: X=-640 Y=-30 A=720 S=1 Color= BGColor= Width= W=150 H=70
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 265,85,415,155
PortList lines:1
Name=port1 AR=R X=0 Y=1 Conn=Connection75 Port=End
Object name:O4_TVConnectionPort=Class
Style: X=-146.005812 Y=70.177541 A=720 S=1 Color= BGColor= Width= W=74.460091 H=39.310493
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 725.539909,-43.786795,800,-4.476302
PortList lines:1
Name=port1 AR=R X=0 Y=1 Conn= Port=
NonPortConnectionList lines:7
NonPortConnectionList lines:6
NonPortConnectionList lines:5
NonPortConnectionList lines:4
NonPortConnectionList lines:3
NonPortConnectionList lines:2
Connection83
Connection83
Object name:O5_TVConnection=Class
Style: X=10 Y=0 A=720 S=1 Color= BGColor= Width= W=87.665121 H=62.678444
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 573.002304,74.333938,660.667425,137.012382
PortList lines:2
Name=port1 AR=R X=0 Y=1 Conn=Connection76 Port=End
Name=port2 AR=R X=0.0121371333333336 Y=0.925809933333333 Conn=Connection84 Port=End
Object name:O6_TVCallout=Class
Style: X=-127.401264 Y=40.850944 A=720 S=1 Color= BGColor= Width= W=125.997802 H=80
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 734.762893,120,860.760695,200
PortList lines:1
Name=port1 AR=R X=0 Y=1 Conn=Connection77 Port=End
Object name:O7_TVGroup=Class
Style: X=-2090 Y=220 A=720 S=1 Color= BGColor= Width= W=150 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 322.5,235,472.5,275
PortList lines:4
Name=port1 AR=R X=0 Y=1 Conn=Connection78 Port=End
Name=port2 AR=R X=0.233333333333333 Y=0.09375 Conn=Connection75 Port=Start
Name=port3 AR=R X=0.45 Y=0.09375 Conn=Connection76 Port=Start
Name=port4 AR=R X=0.683333333333333 Y=0.09375 Conn=Connection77 Port=Start
Object name:O8_TVSelHandle=Class
Style: X=-46.056836 Y=-0.842315999999987 A=720 S=1 Color= BGColor= Width= W=99.398968 H=101.571775
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 653.535835,283.903105,752.934803,385.47488
PortList lines:1
Name=port1 AR=R X=0 Y=1 Conn=Connection79 Port=End
Object name:O9_TVScene=Class
Style: X=-2880 Y=680 A=720 S=1 Color= BGColor= Width= W=150 H=110
DisplayList lines:4
SetColor clBlack
SetBGColor clWhite
SetWidth 1
Rect 320,430,470,540
PortList lines:4
Name=port4 AR=R X=0.308333333333333 Y=0.0340909090909091 Conn=Connection81 Port=Start
Name=port5 AR=R X=0.4 Y=0.0340909090909091 Conn=Connection80 Port=Start
Name=port6 AR=R X=0.508333333333333 Y=0.0340909090909091 Conn=Connection78 Port=Start
Name=port7 AR=R X=0.608333333333333 Y=0.0454545454545455 Conn=Connection79 Port=Start
Object name:GetResponce
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=140
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 2000,0,2150,-140
PortList lines:1
Name=Port_I1 AR=R X=0.5 Y=1 Conn=UpdateCalloutDisplayList_GetResponce_0 Port=End
Object name:RenderConnDisplayList
Style: X=1330 Y=-5040 A=720 S=1 Color= BGColor= Width= W=150 H=120
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 2200,8000,2350,7880
PortList lines:1
Name=Port_O1 AR=R X=0.244444444444444 Y=0.131818181818182 Conn=RenderConnDisplayList_RenderShell_0 Port=Start
Object name:RenderShell
Style: X=2020 Y=-1640 A=720 S=1 Color= BGColor= Width= W=150 H=400
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 2400,4000,2550,3600
PortList lines:12
Name=Port_O1 AR=R X=0.311111111111111 Y=0.161463414634146 Conn=RenderShell_RenderShell_0 Port=Start
Name=Port_I1 AR=R X=0.0833333333333333 Y=1 Conn=RenderConnDisplayList_RenderShell_0 Port=End
Name=Port_I2 AR=R X=0.166666666666667 Y=1 Conn=RenderShell_RenderShell_0 Port=End
Name=Port_I3 AR=R X=0.25 Y=1 Conn=RenderObjectShell_RenderShell_0 Port=End
Name=Port_I4 AR=R X=0.333333333333333 Y=1 Conn=UpdateConnectionDisplayList_RenderShell_0 Port=End
Name=Port_I5 AR=R X=0.416666666666667 Y=1 Conn=UpdateCalloutDisplayList_RenderShell_1 Port=End
Name=Port_I6 AR=R X=0.5 Y=1 Conn=MoveObjectTo_RenderShell_3 Port=End
Name=Port_I7 AR=R X=0.583333333333333 Y=1 Conn=MoveCalloutTo_RenderShell_1 Port=End
Name=Port_I8 AR=R X=0.666666666666667 Y=1 Conn=MoveCalloutTo_RenderShell_4 Port=End
Name=Port_I9 AR=R X=0.75 Y=1 Conn=TVScene.LoadFile_RenderShell_0 Port=End
Name=Port_I10 AR=R X=0.833333333333333 Y=1 Conn=TVScene.LoadFile_RenderShell_2 Port=End
Name=Port_I11 AR=R X=0.916666666666667 Y=1 Conn=TVScene.LoadFile_RenderShell_6 Port=End
Object name:RenderObjectShell
Style: X=-130 Y=-5050 A=720 S=1 Color= BGColor= Width= W=150 H=50
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 2600,8000,2750,7950
PortList lines:2
Name=Port_O1 AR=R X=0.155555555555556 Y=0.236 Conn=RenderObjectShell_RenderShell_0 Port=Start
Name=Port_I1 AR=R X=0.5 Y=1 Conn=MoveObjectTo_RenderObjectShell_1 Port=End
Object name:UpdateConnectionDisplayList
Style: X=-130 Y=-5050 A=720 S=1 Color= BGColor= Width= W=150 H=190
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 2800,8000,2950,7810
PortList lines:10
Name=Port_O1 AR=R X=0.233333333333333 Y=0.0797272727272727 Conn=UpdateConnectionDisplayList_RenderShell_0 Port=Start
Name=Port_I1 AR=R X=0.1 Y=1 Conn=MoveObjectTo_UpdateConnectionDisplayList_4 Port=End
Name=Port_I2 AR=R X=0.2 Y=1 Conn=MoveObjectTo_UpdateConnectionDisplayList_5 Port=End
Name=Port_I3 AR=R X=0.3 Y=1 Conn=MoveObjectTo_UpdateConnectionDisplayList_6 Port=End
Name=Port_I4 AR=R X=0.4 Y=1 Conn=MoveObjectTo_UpdateConnectionDisplayList_7 Port=End
Name=Port_I5 AR=R X=0.5 Y=1 Conn=MoveCalloutTo_UpdateConnectionDisplayList_5 Port=End
Name=Port_I6 AR=R X=0.6 Y=1 Conn=MoveCalloutTo_UpdateConnectionDisplayList_6 Port=End
Name=Port_I7 AR=R X=0.7 Y=1 Conn=MoveCalloutTo_UpdateConnectionDisplayList_7 Port=End
Name=Port_I8 AR=R X=0.8 Y=1 Conn=MoveCalloutTo_UpdateConnectionDisplayList_8 Port=End
Name=Port_I9 AR=R X=0.9 Y=1 Conn=TVScene.LoadFile_UpdateConnectionDisplayList_4 Port=End
Object name:UpdateCalloutDisplayList
Style: X=-130 Y=-5050 A=720 S=1 Color= BGColor= Width= W=150 H=380
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 3000,8000,3150,7620
PortList lines:4
Name=Port_O1 AR=R X=0.311111111111111 Y=0.861239316239316 Conn=UpdateCalloutDisplayList_GetResponce_0 Port=Start
Name=Port_O2 AR=R X=0.2 Y=0.0613247863247863 Conn=UpdateCalloutDisplayList_RenderShell_1 Port=Start
Name=Port_I1 AR=R X=0.333333333333333 Y=1 Conn=MoveObjectTo_UpdateCalloutDisplayList_2 Port=End
Name=Port_I2 AR=R X=0.666666666666667 Y=1 Conn=MoveCalloutTo_UpdateCalloutDisplayList_0 Port=End
Object name:MoveObjectTo
Style: X=-390 Y=-6550 A=720 S=1 Color= BGColor= Width= W=150 H=440
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 3200,12000,3350,11560
PortList lines:9
Name=Port_O1 AR=R X=0.144444444444444 Y=0.783905109489051 Conn=MoveObjectTo_MoveObjectTo_0 Port=Start
Name=Port_O2 AR=R X=0.0333333333333333 Y=0.749051094890511 Conn=MoveObjectTo_RenderObjectShell_1 Port=Start
Name=Port_O3 AR=R X=0.0555555555555556 Y=0.728138686131387 Conn=MoveObjectTo_UpdateCalloutDisplayList_2 Port=Start
Name=Port_O4 AR=R X=0.155555555555556 Y=0.616605839416058 Conn=MoveObjectTo_RenderShell_3 Port=Start
Name=Port_O5 AR=R X=0.122222222222222 Y=0.379598540145985 Conn=MoveObjectTo_UpdateConnectionDisplayList_4 Port=Start
Name=Port_O6 AR=R X=0.122222222222222 Y=0.316861313868613 Conn=MoveObjectTo_UpdateConnectionDisplayList_5 Port=Start
Name=Port_O7 AR=R X=0.122222222222222 Y=0.177445255474453 Conn=MoveObjectTo_UpdateConnectionDisplayList_6 Port=Start
Name=Port_O8 AR=R X=0.122222222222222 Y=0.11470802919708 Conn=MoveObjectTo_UpdateConnectionDisplayList_7 Port=Start
Name=Port_I1 AR=R X=0.5 Y=1 Conn=MoveObjectTo_MoveObjectTo_0 Port=End
Object name:MoveCalloutTo
Style: X=80 Y=-6530 A=720 S=1 Color= BGColor= Width= W=150 H=420
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 3400,12000,3550,11580
PortList lines:10
Name=Port_O1 AR=R X=0.0333333333333333 Y=0.881550387596899 Conn=MoveCalloutTo_UpdateCalloutDisplayList_0 Port=Start
Name=Port_O2 AR=R X=0.2 Y=0.874147286821705 Conn=MoveCalloutTo_RenderShell_1 Port=Start
Name=Port_O3 AR=R X=0.1 Y=0.866744186046512 Conn=MoveCalloutTo_ExecCommand_2 Port=Start
Name=Port_O4 AR=R X=0.144444444444444 Y=0.733488372093023 Conn=MoveCalloutTo_MoveCalloutTo_3 Port=Start
Name=Port_O5 AR=R X=0.155555555555556 Y=0.592829457364341 Conn=MoveCalloutTo_RenderShell_4 Port=Start
Name=Port_O6 AR=R X=0.122222222222222 Y=0.341124031007752 Conn=MoveCalloutTo_UpdateConnectionDisplayList_5 Port=Start
Name=Port_O7 AR=R X=0.122222222222222 Y=0.274496124031008 Conn=MoveCalloutTo_UpdateConnectionDisplayList_6 Port=Start
Name=Port_O8 AR=R X=0.122222222222222 Y=0.126434108527132 Conn=MoveCalloutTo_UpdateConnectionDisplayList_7 Port=Start
Name=Port_O9 AR=R X=0.122222222222222 Y=0.0598062015503876 Conn=MoveCalloutTo_UpdateConnectionDisplayList_8 Port=Start
Name=Port_I1 AR=R X=0.5 Y=1 Conn=MoveCalloutTo_MoveCalloutTo_3 Port=End
Object name:TVCurl.Create
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=30
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 3600,-4000,3750,-4030
Object name:TVCurl.Destroy
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=50
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 3800,-4000,3950,-4050
Object name:TVConnection.Create
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 4000,0,4150,-40
PortList lines:1
Name=Port_I1 AR=R X=0.5 Y=1 Conn=TVScene.LoadFile_TVConnection.Create_3 Port=End
Object name:TVConnection.Destroy
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=80
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 4200,-4000,4350,-4080
Object name:TVTemplate.Create
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 4400,-4000,4550,-4040
Object name:TVTemplate.Destroy
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 4600,-4000,4750,-4040
Object name:TVObject.Create
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=50
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 4800,0,4950,-50
PortList lines:1
Name=Port_I1 AR=R X=0.5 Y=1 Conn=TVScene.LoadFile_TVObject.Create_1 Port=End
Object name:TVObject.Destroy
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=70
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 5000,-4000,5150,-4070
Object name:TVCallout.Create
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 5200,0,5350,-40
PortList lines:1
Name=Port_I1 AR=R X=0.5 Y=1 Conn=TVScene.LoadFile_TVCallout.Create_5 Port=End
Object name:TVCallout.Destroy
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=80
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 5400,-4000,5550,-4080
Object name:TVGroup.Create
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=30
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 5600,0,5750,-30
PortList lines:1
Name=Port_I1 AR=R X=0.5 Y=1 Conn=TVScene.LoadFile_TVGroup.Create_7 Port=End
Object name:TVGroup.Destroy
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=30
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 5800,-4000,5950,-4030
Object name:TVScene.Create
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=50
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 6000,-4000,6150,-4050
Object name:TVScene.Destroy
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=160
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 6200,-4000,6350,-4160
Object name:TVScene.Clear
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=170
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 6400,-4000,6550,-4170
Object name:TVScene.LoadFile
Style: X=-620 Y=-4900 A=720 S=1 Color= BGColor= Width= W=150 H=2500
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 6600,12000,6750,9500
PortList lines:8
Name=Port_O1 AR=R X=0.233333333333333 Y=0.92479375 Conn=TVScene.LoadFile_RenderShell_0 Port=Start
Name=Port_O2 AR=R X=0.2 Y=0.90091875 Conn=TVScene.LoadFile_TVObject.Create_1 Port=Start
Name=Port_O3 AR=R X=0.288888888888889 Y=0.6299375 Conn=TVScene.LoadFile_RenderShell_2 Port=Start
Name=Port_O4 AR=R X=0.311111111111111 Y=0.58338125 Conn=TVScene.LoadFile_TVConnection.Create_3 Port=Start
Name=Port_O5 AR=R X=0.166666666666667 Y=0.412675 Conn=TVScene.LoadFile_UpdateConnectionDisplayList_4 Port=Start
Name=Port_O6 AR=R X=0.277777777777778 Y=0.3888 Conn=TVScene.LoadFile_TVCallout.Create_5 Port=Start
Name=Port_O7 AR=R X=0.355555555555556 Y=0.259875 Conn=TVScene.LoadFile_RenderShell_6 Port=Start
Name=Port_O8 AR=R X=0.322222222222222 Y=0.1142375 Conn=TVScene.LoadFile_TVGroup.Create_7 Port=Start
Object name:TVScene.SaveFile
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=440
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 6800,-4000,6950,-4440
Object name:ShellsAreCrossed
Style: X=-190 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=70
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 7000,0,7150,-70
PortList lines:3
Name=Port_I1 AR=R X=0.25 Y=1 Conn=TVScene.UpdateVisibility_ShellsAreCrossed_0 Port=End
Name=Port_I2 AR=R X=0.5 Y=1 Conn=TVScene.UpdateVisibility_ShellsAreCrossed_2 Port=End
Name=Port_I3 AR=R X=0.75 Y=1 Conn=TVScene.UpdateVisibility_ShellsAreCrossed_4 Port=End
Object name:InfiniteShell
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=50
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 7200,0,7350,-50
PortList lines:4
Name=Port_I1 AR=R X=0.2 Y=1 Conn=TVScene.UpdateVisibility_InfiniteShell_1 Port=End
Name=Port_I2 AR=R X=0.4 Y=1 Conn=TVScene.UpdateVisibility_InfiniteShell_3 Port=End
Name=Port_I3 AR=R X=0.6 Y=1 Conn=TVScene.UpdateVisibility_InfiniteShell_5 Port=End
Name=Port_I4 AR=R X=0.8 Y=1 Conn=TVScene.ExecCommand_InfiniteShell_26 Port=End
Object name:TVScene.UpdateVisibility
Style: X=-370 Y=-3330 A=720 S=1 Color= BGColor= Width= W=150 H=200
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 7400,4000,7550,3800
PortList lines:6
Name=Port_O1 AR=R X=0.155555555555556 Y=0.824916666666667 Conn=TVScene.UpdateVisibility_ShellsAreCrossed_0 Port=Start
Name=Port_O2 AR=R X=0.155555555555556 Y=0.793083333333333 Conn=TVScene.UpdateVisibility_InfiniteShell_1 Port=Start
Name=Port_O3 AR=R X=0.133333333333333 Y=0.586166666666667 Conn=TVScene.UpdateVisibility_ShellsAreCrossed_2 Port=Start
Name=Port_O4 AR=R X=0.111111111111111 Y=0.554333333333333 Conn=TVScene.UpdateVisibility_InfiniteShell_3 Port=Start
Name=Port_O5 AR=R X=0.133333333333333 Y=0.347416666666667 Conn=TVScene.UpdateVisibility_ShellsAreCrossed_4 Port=Start
Name=Port_O6 AR=R X=0.111111111111111 Y=0.315583333333333 Conn=TVScene.UpdateVisibility_InfiniteShell_5 Port=Start
Object name:TVScene.BuildCurlsUnder
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=90
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 7600,-4000,7750,-4090
Object name:TVScene.BuildObjectsUnder
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=90
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 7800,-4000,7950,-4090
Object name:TVScene.BuildConnectionsUnder
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=90
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 8000,-4000,8150,-4090
Object name:TVScene.BuildCalloutsUnder
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=90
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 8200,-4000,8350,-4090
Object name:TVScene.ExecCommand
Style: X=-2090 Y=-2030 A=720 S=1 Color= BGColor= Width= W=150 H=790
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 8400,4000,8550,3210
PortList lines:38
Name=Port_O1 AR=R X=0.2 Y=0.888775100401606 Conn=TVScene.ExecCommand_ExecCommand_0 Port=Start
Name=Port_O2 AR=R X=0.177777777777778 Y=0.877269076305221 Conn=TVScene.ExecCommand_ExecCommand_1 Port=Start
Name=Port_O3 AR=R X=0.177777777777778 Y=0.873433734939759 Conn=TVScene.ExecCommand_ExecCommand_2 Port=Start
Name=Port_O4 AR=R X=0.177777777777778 Y=0.869598393574297 Conn=TVScene.ExecCommand_ExecCommand_3 Port=Start
Name=Port_O5 AR=R X=0.177777777777778 Y=0.865763052208835 Conn=TVScene.ExecCommand_ExecCommand_4 Port=Start
Name=Port_O6 AR=R X=0.177777777777778 Y=0.861927710843373 Conn=TVScene.ExecCommand_ExecCommand_5 Port=Start
Name=Port_O7 AR=R X=0.177777777777778 Y=0.858092369477912 Conn=TVScene.ExecCommand_ExecCommand_6 Port=Start
Name=Port_O8 AR=R X=0.177777777777778 Y=0.85425702811245 Conn=TVScene.ExecCommand_ExecCommand_7 Port=Start
Name=Port_O9 AR=R X=0.222222222222222 Y=0.670160642570281 Conn=TVScene.ExecCommand_ExecCommand_8 Port=Start
Name=Port_O10 AR=R X=0.2 Y=0.658654618473896 Conn=TVScene.ExecCommand_ExecCommand_9 Port=Start
Name=Port_O11 AR=R X=0.2 Y=0.654819277108434 Conn=TVScene.ExecCommand_ExecCommand_10 Port=Start
Name=Port_O12 AR=R X=0.2 Y=0.650983935742972 Conn=TVScene.ExecCommand_ExecCommand_11 Port=Start
Name=Port_O13 AR=R X=0.2 Y=0.64714859437751 Conn=TVScene.ExecCommand_ExecCommand_12 Port=Start
Name=Port_O14 AR=R X=0.2 Y=0.643313253012048 Conn=TVScene.ExecCommand_ExecCommand_13 Port=Start
Name=Port_O15 AR=R X=0.2 Y=0.639477911646586 Conn=TVScene.ExecCommand_ExecCommand_14 Port=Start
Name=Port_O16 AR=R X=0.2 Y=0.635642570281124 Conn=TVScene.ExecCommand_ExecCommand_15 Port=Start
Name=Port_O17 AR=R X=0.144444444444444 Y=0.516746987951807 Conn=TVScene.ExecCommand_ExecCommand_16 Port=Start
Name=Port_O18 AR=R X=0.244444444444444 Y=0.493734939759036 Conn=TVScene.ExecCommand_ExecCommand_17 Port=Start
Name=Port_O19 AR=R X=0.244444444444444 Y=0.482228915662651 Conn=TVScene.ExecCommand_ExecCommand_18 Port=Start
Name=Port_O20 AR=R X=0.177777777777778 Y=0.455381526104418 Conn=TVScene.ExecCommand_ExecCommand_19 Port=Start
Name=Port_O21 AR=R X=0.177777777777778 Y=0.451546184738956 Conn=TVScene.ExecCommand_ExecCommand_20 Port=Start
Name=Port_O22 AR=R X=0.177777777777778 Y=0.447710843373494 Conn=TVScene.ExecCommand_ExecCommand_21 Port=Start
Name=Port_O23 AR=R X=0.177777777777778 Y=0.443875502008032 Conn=TVScene.ExecCommand_ExecCommand_22 Port=Start
Name=Port_O24 AR=R X=0.177777777777778 Y=0.44004016064257 Conn=TVScene.ExecCommand_ExecCommand_23 Port=Start
Name=Port_O25 AR=R X=0.177777777777778 Y=0.436204819277108 Conn=TVScene.ExecCommand_ExecCommand_24 Port=Start
Name=Port_O26 AR=R X=0.177777777777778 Y=0.432369477911647 Conn=TVScene.ExecCommand_ExecCommand_25 Port=Start
Name=Port_O27 AR=R X=0.177777777777778 Y=0.347991967871486 Conn=TVScene.ExecCommand_InfiniteShell_26 Port=Start
Name=Port_O28 AR=R X=0.144444444444444 Y=0.271285140562249 Conn=TVScene.ExecCommand_ExecCommand_27 Port=Start
Name=Port_O29 AR=R X=0.222222222222222 Y=0.255943775100402 Conn=TVScene.ExecCommand_ExecCommand_28 Port=Start
Name=Port_O30 AR=R X=0.222222222222222 Y=0.114036144578313 Conn=TVScene.ExecCommand_ExecCommand_29 Port=Start
Name=Port_O31 AR=R X=0.2 Y=0.102530120481928 Conn=TVScene.ExecCommand_ExecCommand_30 Port=Start
Name=Port_O32 AR=R X=0.2 Y=0.0986947791164659 Conn=TVScene.ExecCommand_ExecCommand_31 Port=Start
Name=Port_O33 AR=R X=0.2 Y=0.094859437751004 Conn=TVScene.ExecCommand_ExecCommand_32 Port=Start
Name=Port_O34 AR=R X=0.2 Y=0.0910240963855422 Conn=TVScene.ExecCommand_ExecCommand_33 Port=Start
Name=Port_O35 AR=R X=0.2 Y=0.0871887550200803 Conn=TVScene.ExecCommand_ExecCommand_34 Port=Start
Name=Port_O36 AR=R X=0.2 Y=0.0833534136546185 Conn=TVScene.ExecCommand_ExecCommand_35 Port=Start
Name=Port_O37 AR=R X=0.2 Y=0.0795180722891566 Conn=TVScene.ExecCommand_ExecCommand_36 Port=Start
Name=Port_O38 AR=R X=0.166666666666667 Y=0.0565060240963855 Conn=TVScene.ExecCommand_ExecCommand_37 Port=Start
Object name:InitModule
Style: X=0 Y=0 A=720 S=1 Color= BGColor= Width= W=150 H=40
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 8600,-4000,8750,-4040
Object name:ExecCommand
Style: X=-2460 Y=10 A=720 S=1 Color= BGColor= Width= W=150 H=50
DisplayList lines:4
SetColor clBlack
SetBGColor clNavy
SetWidth 1
Rect 8800,-50,8950,0
PortList lines:38
Name=Port_I1 AR=R X=0.0256410256410256 Y=1 Conn=MoveCalloutTo_ExecCommand_2 Port=End
Name=Port_I2 AR=R X=0.0512820512820513 Y=1 Conn=TVScene.ExecCommand_ExecCommand_0 Port=End
Name=Port_I3 AR=R X=0.0769230769230769 Y=1 Conn=TVScene.ExecCommand_ExecCommand_1 Port=End
Name=Port_I4 AR=R X=0.102564102564103 Y=1 Conn=TVScene.ExecCommand_ExecCommand_2 Port=End
Name=Port_I5 AR=R X=0.128205128205128 Y=1 Conn=TVScene.ExecCommand_ExecCommand_3 Port=End
Name=Port_I6 AR=R X=0.153846153846154 Y=1 Conn=TVScene.ExecCommand_ExecCommand_4 Port=End
Name=Port_I7 AR=R X=0.179487179487179 Y=1 Conn=TVScene.ExecCommand_ExecCommand_5 Port=End
Name=Port_I8 AR=R X=0.205128205128205 Y=1 Conn=TVScene.ExecCommand_ExecCommand_6 Port=End
Name=Port_I9 AR=R X=0.230769230769231 Y=1 Conn=TVScene.ExecCommand_ExecCommand_7 Port=End
Name=Port_I10 AR=R X=0.256410256410256 Y=1 Conn=TVScene.ExecCommand_ExecCommand_8 Port=End
Name=Port_I11 AR=R X=0.282051282051282 Y=1 Conn=TVScene.ExecCommand_ExecCommand_9 Port=End
Name=Port_I12 AR=R X=0.307692307692308 Y=1 Conn=TVScene.ExecCommand_ExecCommand_10 Port=End
Name=Port_I13 AR=R X=0.333333333333333 Y=1 Conn=TVScene.ExecCommand_ExecCommand_11 Port=End
Name=Port_I14 AR=R X=0.358974358974359 Y=1 Conn=TVScene.ExecCommand_ExecCommand_12 Port=End
Name=Port_I15 AR=R X=0.384615384615385 Y=1 Conn=TVScene.ExecCommand_ExecCommand_13 Port=End
Name=Port_I16 AR=R X=0.41025641025641 Y=1 Conn=TVScene.ExecCommand_ExecCommand_14 Port=End
Name=Port_I17 AR=R X=0.435897435897436 Y=1 Conn=TVScene.ExecCommand_ExecCommand_15 Port=End
Name=Port_I18 AR=R X=0.461538461538462 Y=1 Conn=TVScene.ExecCommand_ExecCommand_16 Port=End
Name=Port_I19 AR=R X=0.487179487179487 Y=1 Conn=TVScene.ExecCommand_ExecCommand_17 Port=End
Name=Port_I20 AR=R X=0.512820512820513 Y=1 Conn=TVScene.ExecCommand_ExecCommand_18 Port=End
Name=Port_I21 AR=R X=0.538461538461538 Y=1 Conn=TVScene.ExecCommand_ExecCommand_19 Port=End
Name=Port_I22 AR=R X=0.564102564102564 Y=1 Conn=TVScene.ExecCommand_ExecCommand_20 Port=End
Name=Port_I23 AR=R X=0.58974358974359 Y=1 Conn=TVScene.ExecCommand_ExecCommand_21 Port=End
Name=Port_I24 AR=R X=0.615384615384615 Y=1 Conn=TVScene.ExecCommand_ExecCommand_22 Port=End
Name=Port_I25 AR=R X=0.641025641025641 Y=1 Conn=TVScene.ExecCommand_ExecCommand_23 Port=End
Name=Port_I26 AR=R X=0.666666666666667 Y=1 Conn=TVScene.ExecCommand_ExecCommand_24 Port=End
Name=Port_I27 AR=R X=0.692307692307692 Y=1 Conn=TVScene.ExecCommand_ExecCommand_25 Port=End
Name=Port_I28 AR=R X=0.717948717948718 Y=1 Conn=TVScene.ExecCommand_ExecCommand_27 Port=End
Name=Port_I29 AR=R X=0.743589743589744 Y=1 Conn=TVScene.ExecCommand_ExecCommand_28 Port=End
Name=Port_I30 AR=R X=0.769230769230769 Y=1 Conn=TVScene.ExecCommand_ExecCommand_29 Port=End
Name=Port_I31 AR=R X=0.794871794871795 Y=1 Conn=TVScene.ExecCommand_ExecCommand_30 Port=End
Name=Port_I32 AR=R X=0.820512820512821 Y=1 Conn=TVScene.ExecCommand_ExecCommand_31 Port=End
Name=Port_I33 AR=R X=0.846153846153846 Y=1 Conn=TVScene.ExecCommand_ExecCommand_32 Port=End
Name=Port_I34 AR=R X=0.871794871794872 Y=1 Conn=TVScene.ExecCommand_ExecCommand_33 Port=End
Name=Port_I35 AR=R X=0.897435897435897 Y=1 Conn=TVScene.ExecCommand_ExecCommand_34 Port=End
Name=Port_I36 AR=R X=0.923076923076923 Y=1 Conn=TVScene.ExecCommand_ExecCommand_35 Port=End
Name=Port_I37 AR=R X=0.948717948717949 Y=1 Conn=TVScene.ExecCommand_ExecCommand_36 Port=End
Name=Port_I38 AR=R X=0.974358974358974 Y=1 Conn=TVScene.ExecCommand_ExecCommand_37 Port=End
Object name:Object45
Style: X=-105 Y=-25 A=720 S=1 Color= BGColor= Width= W=21.25 H=36.25
DisplayList lines:4
SetColor clBlack
SetBGColor $008F8F8F
SetWidth 1
Rect 455,213.75,476.25,177.5
PortList lines:3
Name=port1 AR=R X=0.823529411764706 Y=0.96551724137931 Conn= Port=
Name=port2 AR=R X=0.588235294117647 Y=0.896551724137931 Conn= Port=
Name=port3 AR=R X=0.411764705882353 Y=0.827586206896552 Conn=Connection82 Port=Start
Object name:Object46
Style: X=-115 Y=12.5 A=720 S=1 Color= BGColor= Width= W=20 H=20
DisplayList lines:4
SetColor clBlack
SetBGColor $008F8F8F
SetWidth 1
Rect 492.5,165,512.5,145
Object name:Object47
Style: X=-115 Y=12.5 A=720 S=1 Color= BGColor= Width= W=22.5 H=22.5
DisplayList lines:4
SetColor clBlack
SetBGColor $008F8F8F
SetWidth 1
Rect 520,172.5,542.5,150
Connection name:RenderConnDisplayList_RenderShell_0
Style: Color= BGColor= Width= StartObj=RenderConnDisplayList EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=RenderConnDisplayList:Port_O1
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I1
Connection name:RenderShell_RenderShell_0
Style: Color= BGColor= Width= StartObj=RenderShell EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=RenderShell:Port_O1
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I2
Connection name:RenderObjectShell_RenderShell_0
Style: Color= BGColor= Width= StartObj=RenderObjectShell EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=RenderObjectShell:Port_O1
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I3
Connection name:UpdateConnectionDisplayList_RenderShell_0
Style: Color= BGColor= Width= StartObj=UpdateConnectionDisplayList EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=UpdateConnectionDisplayList:Port_O1
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I4
Connection name:UpdateCalloutDisplayList_GetResponce_0
Style: Color= BGColor= Width= StartObj=UpdateCalloutDisplayList EndObj=GetResponce
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=UpdateCalloutDisplayList:Port_O1
PortType=End AR=R X=100 Y=100 Conn=GetResponce:Port_I1
Connection name:UpdateCalloutDisplayList_RenderShell_1
Style: Color= BGColor= Width= StartObj=UpdateCalloutDisplayList EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=UpdateCalloutDisplayList:Port_O2
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I5
Connection name:MoveObjectTo_MoveObjectTo_0
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=MoveObjectTo
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O1
PortType=End AR=R X=100 Y=100 Conn=MoveObjectTo:Port_I1
Connection name:MoveObjectTo_RenderObjectShell_1
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=RenderObjectShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O2
PortType=End AR=R X=100 Y=100 Conn=RenderObjectShell:Port_I1
Connection name:MoveObjectTo_UpdateCalloutDisplayList_2
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=UpdateCalloutDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O3
PortType=End AR=R X=100 Y=100 Conn=UpdateCalloutDisplayList:Port_I1
Connection name:MoveObjectTo_RenderShell_3
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O4
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I6
Connection name:MoveObjectTo_UpdateConnectionDisplayList_4
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O5
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I1
Connection name:MoveObjectTo_UpdateConnectionDisplayList_5
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O6
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I2
Connection name:MoveObjectTo_UpdateConnectionDisplayList_6
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O7
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I3
Connection name:MoveObjectTo_UpdateConnectionDisplayList_7
Style: Color= BGColor= Width= StartObj=MoveObjectTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveObjectTo:Port_O8
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I4
Connection name:MoveCalloutTo_UpdateCalloutDisplayList_0
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=UpdateCalloutDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O1
PortType=End AR=R X=100 Y=100 Conn=UpdateCalloutDisplayList:Port_I2
Connection name:MoveCalloutTo_RenderShell_1
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O2
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I7
Connection name:MoveCalloutTo_ExecCommand_2
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O3
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I1
Connection name:MoveCalloutTo_MoveCalloutTo_3
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=MoveCalloutTo
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O4
PortType=End AR=R X=100 Y=100 Conn=MoveCalloutTo:Port_I1
Connection name:MoveCalloutTo_RenderShell_4
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O5
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I8
Connection name:MoveCalloutTo_UpdateConnectionDisplayList_5
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O6
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I5
Connection name:MoveCalloutTo_UpdateConnectionDisplayList_6
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O7
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I6
Connection name:MoveCalloutTo_UpdateConnectionDisplayList_7
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O8
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I7
Connection name:MoveCalloutTo_UpdateConnectionDisplayList_8
Style: Color= BGColor= Width= StartObj=MoveCalloutTo EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=MoveCalloutTo:Port_O9
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I8
Connection name:TVScene.LoadFile_RenderShell_0
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O1
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I9
Connection name:TVScene.LoadFile_TVObject.Create_1
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=TVObject.Create
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O2
PortType=End AR=R X=100 Y=100 Conn=TVObject.Create:Port_I1
Connection name:TVScene.LoadFile_RenderShell_2
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O3
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I10
Connection name:TVScene.LoadFile_TVConnection.Create_3
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=TVConnection.Create
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O4
PortType=End AR=R X=100 Y=100 Conn=TVConnection.Create:Port_I1
Connection name:TVScene.LoadFile_UpdateConnectionDisplayList_4
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=UpdateConnectionDisplayList
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O5
PortType=End AR=R X=100 Y=100 Conn=UpdateConnectionDisplayList:Port_I9
Connection name:TVScene.LoadFile_TVCallout.Create_5
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=TVCallout.Create
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O6
PortType=End AR=R X=100 Y=100 Conn=TVCallout.Create:Port_I1
Connection name:TVScene.LoadFile_RenderShell_6
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=RenderShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O7
PortType=End AR=R X=100 Y=100 Conn=RenderShell:Port_I11
Connection name:TVScene.LoadFile_TVGroup.Create_7
Style: Color= BGColor= Width= StartObj=TVScene.LoadFile EndObj=TVGroup.Create
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.LoadFile:Port_O8
PortType=End AR=R X=100 Y=100 Conn=TVGroup.Create:Port_I1
Connection name:TVScene.UpdateVisibility_ShellsAreCrossed_0
Style: Color= BGColor= Width= StartObj=TVScene.UpdateVisibility EndObj=ShellsAreCrossed
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.UpdateVisibility:Port_O1
PortType=End AR=R X=100 Y=100 Conn=ShellsAreCrossed:Port_I1
Connection name:TVScene.UpdateVisibility_InfiniteShell_1
Style: Color= BGColor= Width= StartObj=TVScene.UpdateVisibility EndObj=InfiniteShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.UpdateVisibility:Port_O2
PortType=End AR=R X=100 Y=100 Conn=InfiniteShell:Port_I1
Connection name:TVScene.UpdateVisibility_ShellsAreCrossed_2
Style: Color= BGColor= Width= StartObj=TVScene.UpdateVisibility EndObj=ShellsAreCrossed
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.UpdateVisibility:Port_O3
PortType=End AR=R X=100 Y=100 Conn=ShellsAreCrossed:Port_I2
Connection name:TVScene.UpdateVisibility_InfiniteShell_3
Style: Color= BGColor= Width= StartObj=TVScene.UpdateVisibility EndObj=InfiniteShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.UpdateVisibility:Port_O4
PortType=End AR=R X=100 Y=100 Conn=InfiniteShell:Port_I2
Connection name:TVScene.UpdateVisibility_ShellsAreCrossed_4
Style: Color= BGColor= Width= StartObj=TVScene.UpdateVisibility EndObj=ShellsAreCrossed
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.UpdateVisibility:Port_O5
PortType=End AR=R X=100 Y=100 Conn=ShellsAreCrossed:Port_I3
Connection name:TVScene.UpdateVisibility_InfiniteShell_5
Style: Color= BGColor= Width= StartObj=TVScene.UpdateVisibility EndObj=InfiniteShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.UpdateVisibility:Port_O6
PortType=End AR=R X=100 Y=100 Conn=InfiniteShell:Port_I3
Connection name:TVScene.ExecCommand_ExecCommand_0
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O1
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I2
Connection name:TVScene.ExecCommand_ExecCommand_1
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O2
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I3
Connection name:TVScene.ExecCommand_ExecCommand_2
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O3
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I4
Connection name:TVScene.ExecCommand_ExecCommand_3
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O4
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I5
Connection name:TVScene.ExecCommand_ExecCommand_4
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O5
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I6
Connection name:TVScene.ExecCommand_ExecCommand_5
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O6
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I7
Connection name:TVScene.ExecCommand_ExecCommand_6
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O7
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I8
Connection name:TVScene.ExecCommand_ExecCommand_7
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O8
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I9
Connection name:TVScene.ExecCommand_ExecCommand_8
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O9
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I10
Connection name:TVScene.ExecCommand_ExecCommand_9
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O10
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I11
Connection name:TVScene.ExecCommand_ExecCommand_10
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O11
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I12
Connection name:TVScene.ExecCommand_ExecCommand_11
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O12
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I13
Connection name:TVScene.ExecCommand_ExecCommand_12
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O13
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I14
Connection name:TVScene.ExecCommand_ExecCommand_13
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O14
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I15
Connection name:TVScene.ExecCommand_ExecCommand_14
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O15
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I16
Connection name:TVScene.ExecCommand_ExecCommand_15
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O16
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I17
Connection name:TVScene.ExecCommand_ExecCommand_16
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O17
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I18
Connection name:TVScene.ExecCommand_ExecCommand_17
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O18
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I19
Connection name:TVScene.ExecCommand_ExecCommand_18
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O19
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I20
Connection name:TVScene.ExecCommand_ExecCommand_19
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O20
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I21
Connection name:TVScene.ExecCommand_ExecCommand_20
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O21
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I22
Connection name:TVScene.ExecCommand_ExecCommand_21
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O22
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I23
Connection name:TVScene.ExecCommand_ExecCommand_22
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O23
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I24
Connection name:TVScene.ExecCommand_ExecCommand_23
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O24
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I25
Connection name:TVScene.ExecCommand_ExecCommand_24
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O25
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I26
Connection name:TVScene.ExecCommand_ExecCommand_25
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O26
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I27
Connection name:TVScene.ExecCommand_InfiniteShell_26
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=InfiniteShell
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O27
PortType=End AR=R X=100 Y=100 Conn=InfiniteShell:Port_I4
Connection name:TVScene.ExecCommand_ExecCommand_27
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O28
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I28
Connection name:TVScene.ExecCommand_ExecCommand_28
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O29
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I29
Connection name:TVScene.ExecCommand_ExecCommand_29
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O30
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I30
Connection name:TVScene.ExecCommand_ExecCommand_30
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O31
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I31
Connection name:TVScene.ExecCommand_ExecCommand_31
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O32
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I32
Connection name:TVScene.ExecCommand_ExecCommand_32
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O33
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I33
Connection name:TVScene.ExecCommand_ExecCommand_33
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O34
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I34
Connection name:TVScene.ExecCommand_ExecCommand_34
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O35
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I35
Connection name:TVScene.ExecCommand_ExecCommand_35
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O36
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I36
Connection name:TVScene.ExecCommand_ExecCommand_36
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O37
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I37
Connection name:TVScene.ExecCommand_ExecCommand_37
Style: Color= BGColor= Width= StartObj=TVScene.ExecCommand EndObj=ExecCommand
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=TVScene.ExecCommand:Port_O38
PortType=End AR=R X=100 Y=100 Conn=ExecCommand:Port_I38
Connection name:Connection75
Style: Color= BGColor= Width= StartObj=O7_TVGroup=Class EndObj=O3_TVObject=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O7_TVGroup=Class:port2
PortType=End AR=R X=100 Y=100 Conn=O3_TVObject=Class:port1
Connection name:Connection76
Style: Color= BGColor= Width= StartObj=O7_TVGroup=Class EndObj=O5_TVConnection=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O7_TVGroup=Class:port3
PortType=End AR=R X=100 Y=100 Conn=O5_TVConnection=Class:port1
Connection name:Connection77
Style: Color= BGColor= Width= StartObj=O7_TVGroup=Class EndObj=O6_TVCallout=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O7_TVGroup=Class:port4
PortType=End AR=R X=100 Y=100 Conn=O6_TVCallout=Class:port1
Connection name:Connection78
Style: Color= BGColor= Width= StartObj=O9_TVScene=Class EndObj=O7_TVGroup=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O9_TVScene=Class:port6
PortType=End AR=R X=100 Y=100 Conn=O7_TVGroup=Class:port1
Connection name:Connection79
Style: Color= BGColor= Width= StartObj=O9_TVScene=Class EndObj=O8_TVSelHandle=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O9_TVScene=Class:port7
PortType=End AR=R X=100 Y=100 Conn=O8_TVSelHandle=Class:port1
Connection name:Connection80
Style: Color= BGColor= Width= StartObj=O9_TVScene=Class EndObj=O2_TVTemplate=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O9_TVScene=Class:port5
PortType=End AR=R X=100 Y=100 Conn=O2_TVTemplate=Class:port1
Connection name:Connection81
Style: Color= BGColor= Width= StartObj=O9_TVScene=Class EndObj=O0_TVCurl=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O9_TVScene=Class:port4
PortType=End AR=R X=100 Y=100 Conn=O0_TVCurl=Class:port1
Connection name:Connection82
Style: Color= BGColor= Width= StartObj=Object45 EndObj=O1_TVPort=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=Object45:port3
PortType=End AR=R X=100 Y=100 Conn=O1_TVPort=Class:port1
Connection name:Connection83
Style: Color= BGColor= Width= StartObj=O4_TVConnectionPort=Class EndObj=O4_TVConnectionPort=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O4_TVConnectionPort=Class:
PortType=End AR=R X=100 Y=100 Conn=O4_TVConnectionPort=Class:
Connection name:Connection84
Style: Color= BGColor= Width= StartObj=O1_TVPort=Class EndObj=O5_TVConnection=Class
PortList lines:2
PortType=Start AR=R X=0 Y=0 Conn=O1_TVPort=Class:port2
PortType=End AR=R X=100 Y=100 Conn=O5_TVConnection=Class:port2
Callout name:SrcCallout0
Style:X=0 Y=0 W=45 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O0_TVCurl=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVCurl=Class"
Text:"  TVCurl=Class(TObject)","    Name:String;","    Shell:TShell;","    DisplayList:TStringList;","    OffScreen:Boolean;","    TooSmall:Boolean;","    Constructor Create;","    Destructor Destroy;","  End"
Callout name:CommCallout0
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O0_TVCurl=Class
Text:comment
Callout name:SrcCallout1
Style:X=0 Y=0 W=65.431291 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O1_TVPort=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVPort=Class"
Text:"  TVPort=Class(TObject)","    Name:String;","    AR:String;","    X,Y,AX,AY:Extended;","    Connection:String;","    ConnectionPort:String;","  end"
Callout name:CommCallout1
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O1_TVPort=Class
Text:comment
Callout name:SrcCallout2
Style:X=-81.10938 Y=178.440636 W=90 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O2_TVTemplate=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVTemplate=Class"
Text:"  TVTemplate=Class(TObject)","    Name:String;","    DisplayList:TStringList;","    Shell:TShell;","    OType:Longint; // 0 - just object, 1 - textout, 2 - binary link","    PortList:TStringList;","    Constructor Create;","    Destructor Destroy;","  End"
Callout name:CommCallout2
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O2_TVTemplate=Class
Text:comment
Callout name:SrcCallout3
Style:X=0 Y=0 W=150 H=70 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O3_TVObject=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVObject=Class"
Text:"  TVObject=Class(TOBject)","    Name:String;","    X,Y,A,S:Extended;","    DisplayList:TStringList;","    OffScreen:Boolean;","    TooSmall:Boolean;","    Shell:TShell;","    OType:Longint; // 0 - just object, 1 - textout, 2 - binary link","    PortList:TStringList;","    NonPortConnectionList:TStringList;","    GroupList:TStringList;","    RelatedCAList:TStringList;   // dynamic, updated in unit1.CalloutGUI2Scene CreateRelCASpeedButtonClick LoadDocument","    ActionList:TStringList;","    Constructor Create;","    Destructor Destroy;","  End"
Callout name:CommCallout3
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O3_TVObject=Class
Text:comment
Callout name:SrcCallout4
Style:X=0 Y=0 W=74.460091 H=39.310493 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=2.986672 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O4_TVConnectionPort=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVConnectionPort=Class"
Text:"  TVConnectionPort=Class(TObject)","    PortType:String; // Start ""End"" Text Point","    AR:String;","    X,Y:Extended;AX,AY:Extended;","    ConnectedObject:String;","    ConnectedPort:String;","  end"
Callout name:CommCallout4
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O4_TVConnectionPort=Class
Text:comment
Callout name:SrcCallout5
Style:X=0 Y=0 W=87.665121 H=62.678444 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O5_TVConnection=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVConnection=Class"
Text:"  TVConnection=Class(TObject)","    Name:String;","    StartObj,EndObj:String;","    Style:String;","    X,Y:Extended;","    DisplayList:TStringList;","    OffScreen:Boolean;","    TooSmall:Boolean;","    Shell:TShell;","    OType:Longint; // 0 - just object, 1 - textout, 2 - binary link","    PortList:TStringList;","    GroupList:TStringList;","    Constructor Create;","    Destructor Destroy;","  End"
Callout name:CommCallout5
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O5_TVConnection=Class
Text:comment
Callout name:SrcCallout6
Style:X=0 Y=0 W=125.997802 H=80 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O6_TVCallout=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVCallout=Class"
Text:"  TVCallout=Class(TObject)","    Name:String;","    RelatedObj:String;","    Style:String;","    X,Y:Extended;","    W,H:Extended;","    Source:String;","    Text:String;","    DisplayList:TStringList;","    OffScreen:Boolean;","    TooSmall:Boolean;","    Shell:TShell;","    OType:Longint; // 0 - just object, 1 - textout, 2 - binary link","    PortList:TStringList;","    GroupList:TStringList;","    ActionList:TStringList;","    Constructor Create;","    Destructor Destroy;","  End"
Callout name:CommCallout6
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O6_TVCallout=Class
Text:comment
Callout name:SrcCallout7
Style:X=0 Y=0 W=150 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O7_TVGroup=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVGroup=Class"
Text:"  TVGroup=Class(TObject)","    Name:String;","    Glue:Boolean;","    Active:Boolean;","    Visible:Boolean;","    DisplayList:TStringList; //group is just list of Objects Connection and Callouts - Curls are not allowed. No Display commands here - just names of items","    Constructor Create;","    Destructor Destroy;","  End"
Callout name:CommCallout7
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O7_TVGroup=Class
Text:comment
Callout name:SrcCallout8
Style:X=0 Y=0 W=99.398968 H=101.571775 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O8_TVSelHandle=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVSelHandle=Class"
Text:"  TVSelHandle=Class(TObject)","    Name:String;","    Style:String;","    Xw,Yw:Extended;","    X,Y:Longint;","    //LT MT RT","    //LM MM RM","    //LB MB RB",,"    OffScreen:Boolean;","    TooSmall:Boolean;","    Shell:TShell;","  End"
Callout name:CommCallout8
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O8_TVSelHandle=Class
Text:comment
Callout name:SrcCallout9
Style:X=0 Y=0 W=150 H=110 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=O9_TVScene=Class
Source:self::system_o:sourcehelper CADEngine.pas "TVScene=Class"
Text:"  TVScene=Class(TObject)","    ShowObjectNames:Boolean;","    ShowPortNames:Boolean;","    ShowShells:Boolean;","    VObjectList:TStringList; // List of Objects","    VGroupList:TStringList; // List of groups of display commands - group is that moved together","    VTemplateList:TStringList; // List of models - what's the difference between curl and template???","    VCurlList:TStringList; // List of uncompleted objects","    VConnectionList:TStringList; // List of connections between objects","    VCalloutList:TStringList; // List of text comments for objects","    VHandleList:TStringList; // List of handles for selected objects","    View:TStringList; // Master display list used for visualization      - sequence of drawing","    Drawer:TDrawer;","    Clip:Boolean;","    ClipMax:Boolean;","    ClipSize:Longint;","    MaxDisplayedDepth:Longint;","    ScreenShell:TShell;","    Constructor Create;","    Destructor Destroy;","    Procedure SaveFile(FileName:String);","    Procedure LoadFile(FileName:string);","    Procedure UpdateVisibility;","    Procedure Clear;","    Procedure ExecCommand(Command:String;Acc:TAcceleratedCommand;Depth:Longint);","    Function BuildCurlsUnder(X,Y:Extended):TStringList;","    Function BuildObjectsUnder(X,Y:Extended):TStringList;","    Function BuildConnectionsUnder(X,Y:Extended):TStringList;","    Function BuildCalloutsUnder(X,Y:Extended):TStringList;","  end"
Callout name:CommCallout9
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=O9_TVScene=Class
Text:comment
Callout name:SrcCallout10
Style:X=0 Y=0 W=150 H=140 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=GetResponce
Source:self::system_o:sourcehelper CADEngine.pas "GetResponce"
Text:"Function GetResponce(CLI:String;Var ErrCode:Longint):String;","Var I,Avail:Longint;","  Process:TProcess; ProcessOut:TInputPipeStream;","  CB:String;b,pb,Buf,RequestedOP,AttributeName,AttributeType:String;",Begin,"    ","        Process:=TProcess.Create(Nil);","        Process.Options:=[poUsePipes,poNoConsole,poStderrToOutPut];","        Process.ShowWindow:=swoShow;","        Process.CommandLine:=CLI;","        Try","          Buf:='';","          Process.Execute;","          ProcessOut:=Process.Output;","          Repeat","            Avail:=ProcessOut.NumBytesAvailable;","            If Avail>0 Then Begin","              If Avail>254 Then Repeat","                SetLength(cb,254);","                ProcessOut.Read(CB[1],254);","                Buf:=Buf+CB;","                Avail:=Avail-254;","              Until Avail<=254;","              SetLength(CB,Avail);","              ProcessOut.Read(CB[1],Avail);","              Buf:=Buf+CB;","            End;","         ","          Until ((Not Process.Active) And (ProcessOut.NumBytesAvailable=0)) {Or (StopWaitingResponce)};","        Except LogMessage(0,'Error running '+CLI);End;","        Process.CloseOutput;","    {    If StopWaitingResponce Then Begin","          Result:='cancelled';","          ErrCode:=-1;","        End Else Begin}","          Result:=(Buf);","          ErrCode:=Process.ExitCode;","{        end;}","        Process.Free;",End
Callout name:CommCallout10
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=GetResponce
Text:comment
Callout name:SrcCallout11
Style:X=0 Y=0 W=150 H=120 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=RenderConnDisplayList
Source:self::system_o:sourcehelper CADEngine.pas "RenderConnDisplayList"
Text:"Procedure RenderConnDisplayList(Scene:TVScene;Connection:TVConnection);","//по имени или по хэндлу?","Var I:Longint;","    AccObject:TAccObject;","    Color:String;","    Width:String;","    LineStyle:String;",Begin,,"{   AccObject:=TAccObject.Create;","   AccObject.AcceleratedCommand:=AccelerateCommand('SetColor '+Color);","   Connection.DisplayList.AddObject('SetColor '+ColorToString(BorderColorButton.ButtonColor),AccObject);","   AccObject:=TAccObject.Create;","   AccObject.AcceleratedCommand:=AccelerateCommand('SetBGColor '+ColorToString(BGColorButton.ButtonColor));","   Connection.DisplayList.AddObject('SetBGColor '+ColorToString(BGColorButton.ButtonColor),AccObject);","   AccObject:=TAccObject.Create;","   AccObject.AcceleratedCommand:=AccelerateCommand('SetWidth '+IntToStr(WidthButton1.Tag));","   Connection.DisplayList.AddObject('SetWidth 2',AccObject);","   AccObject:=TAccObject.Create;",,"   NonAccCommand:='MoveTo '+FloatToStr(Xw1)+','+FloatToStr(Yw1);","   AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","   Connection.DisplayList.AddObject(NonAccCommand,AccObject);","   AccObject:=TAccObject.Create;","   NonAccCommand:='LineTo '+FloatToStr(Xw2)+','+FloatToStr(Yw2);",,,"   AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","   Connection.DisplayList.AddObject(NonAccCommand,AccObject);","   E:=GenShift(0,0);","   Connection.Shell:=RenderShell(Scene,Connection.DisplayList,E);"," }",End
Callout name:CommCallout11
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=RenderConnDisplayList
Text:comment
Callout name:SrcCallout12
Style:X=0 Y=0 W=150 H=400 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=RenderShell
Source:self::system_o:sourcehelper CADEngine.pas "RenderShell"
Text:"Function RenderShell(Scene:TVScene;CommandList:TStrings;M:TMatrix2D):TShell;","Var Cmd,Buf,ParsedBuf,fname:String;","    FBuf:TStringList;","    Color:TColor;","    Xs,Ys,Rs:Longint;xws,yws,Rws:String;","    X2s,Y2s:Longint;x2ws,y2ws:String;","    DisplayList:TStringList;","    Angle:Extended;AngleS:String;","    PicScale:Extended;PicScaleS:String;","    Xw,Yw,Rw:Extended;","    X2w,Y2w:Extended;","    R1,R2:TRect;BM:TBitmap;","    SubDrawer:TDrawer;","    I:Longint;Sm,Rm,Scm,tmpm:TMatrix2D;","    FontFace,FontSize,FontColor,BIUS:String;","    TemplateDisplayList:TStringList;","    ShellX1,ShellX2,ShellY1,ShellY2:Extended;","    SubShell:TShell;","    K,N:Longint;E:TMatrix2D;","    p1,p2:TPoint2D;",Begin,"  ShellX1:=Math.maxExtended;","  ShellX2:=-Math.maxExtended+Math.minExtended;","  ShellY1:=Math.MaxExtended;","  ShellY2:=-Math.maxExtended+Math.minExtended;","  E:=GenShift(0,0);","  If CommandList.Count>0 Then","    For K:=0 To CommandList.Count-1 Do Begin","      Buf:=CommandList[K];","      Cmd:=GetNextToken(Buf,ParsedBuf,' ');","      Buf:=ParsedBuf;","      Case LowerCase(Cmd) Of","      'ellipse','rect','roundrect','textrect': Begin","               Xws:=GetNextToken(Buf,ParsedBuf,',');","               Buf:=ParsedBuf;","               Yws:=GetNextToken(Buf,ParsedBuf,',');","               Buf:=ParsedBuf;","               X2ws:=GetNextToken(Buf,ParsedBuf,',');","               Buf:=ParsedBuf;","               Y2ws:=GetNextToken(Buf,ParsedBuf,',');","               Xw:=StrToFloat(Xws);Yw:=StrToFloat(Yws);","               P1[1]:=Xw;P1[2]:=Yw;P1[3]:=1;","               P2:=MulPoint2D(P1,M);","               If P2[1]<ShellX1 Then ShellX1:=P2[1];","               If P2[1]>ShellX2 Then ShellX2:=P2[1];","               If P2[2]<ShellY1 Then ShellY1:=P2[2];","               If P2[2]>ShellY2 Then ShellY2:=P2[2];","               X2w:=StrToFloat(X2ws);Y2w:=StrToFloat(Y2ws);","               P1[1]:=X2w;P1[2]:=Y2w;P1[3]:=1;","               P2:=MulPoint2D(P1,M);","               If P2[1]<ShellX1 Then ShellX1:=P2[1];","               If P2[1]>ShellX2 Then ShellX2:=P2[1];","               If P2[2]<ShellY1 Then ShellY1:=P2[2];","               If P2[2]>ShellY2 Then ShellY2:=P2[2];","             End;","      'lineto','moveto': Begin","               Xws:=GetNextToken(Buf,ParsedBuf,',');","               Yws:=ParsedBuf;","               Xw:=StrToFloat(Xws);Yw:=StrToFloat(Yws);","               P1[1]:=Xw;P1[2]:=Yw;P1[3]:=1;","               P2:=MulPoint2D(P1,M);","               If P2[1]<ShellX1 Then ShellX1:=P2[1];","               If P2[1]>ShellX2 Then ShellX2:=P2[1];","               If P2[2]<ShellY1 Then ShellY1:=P2[2];","               If P2[2]>ShellY2 Then ShellY2:=P2[2];","             End;","      'circle': Begin","               Xws:=GetNextToken(Buf,ParsedBuf,',');","               Buf:=ParsedBuf;","               Yws:=GetNextToken(Buf,ParsedBuf,',');","               Rws:=ParsedBuf;","               Xw:=StrToFloat(Xws);Yw:=StrToFloat(Yws);","               Rw:=StrToFloat(Rws);","               P1[1]:=Xw;P1[2]:=Yw;P1[3]:=1;","               P2:=MulPoint2D(P1,M);","               //probably wrong cause R was not scaled","               If (P2[1]-Rw)<ShellX1 Then ShellX1:=(P2[1]-Rw);","               If (P2[1]+Rw)>ShellX2 Then ShellX2:=(P2[1]+Rw);","               If (P2[2]-Rw)<ShellY1 Then ShellY1:=(P2[2]-Rw);","               If (P2[2]+Rw)>ShellY2 Then ShellY2:=(P2[2]+Rw);","             end;","      'bmp':    Begin","               Xws:=GetNextToken(Buf,ParsedBuf,',');","               Buf:=ParsedBuf;","               Yws:=GetNextToken(Buf,ParsedBuf,',');","               Xw:=StrToFloat(Xws);Yw:=StrToFloat(Yws);","             End;","      'drawtemplate': Begin","               FName:=GetNextToken(Buf,ParsedBuf,' ');","               Buf:=ParsedBuf;","               Xws:=GetNextToken(Buf,ParsedBuf,',');","               Buf:=ParsedBuf;","               Yws:=GetNextToken(Buf,ParsedBuf,',');","               Buf:=ParsedBuf;","               AngleS:=GetNextToken(Buf,ParsedBuf,',');","               PicScaleS:=ParsedBuf;","               Xw:=StrToFloat(Xws);Yw:=StrToFloat(Yws);","               Angle:=StrToFloat(AngleS);","               PicScale:=StrToFloat(PicScaleS);","               Sm:=GenShift(Xw,Yw);","               Rm:=GenRotate(xw,yw,Angle/180*pi);","               Scm:=GenScale(xw,yw,PicScale,PicScale);","               tmpm:=MulMat2D(Sm,Rm);","               tmpm:=MulMat2D(Tmpm,Scm);","               tmpm:=MulMat2D(Tmpm,M);","               N:=Scene.VTemplateList.IndexOf(FName);","               If N>=0 Then Begin","                 TemplateDisplayList:=(Scene.VTemplateList.Objects[N] As TVTemplate).DisplayList;","                 SubShell:=RenderShell(Scene,TemplateDisplayList,tmpm);","                 If SubShell.X1<ShellX1 Then ShellX1:=SubShell.X1;","                 If SubShell.X2>ShellX2 Then ShellX2:=SubShell.X2;","                 If SubShell.Y1<ShellY1 Then ShellY1:=SubShell.Y1;","                 If SubShell.Y2>ShellY2 Then ShellY2:=SubShell.Y2;","               end;","             End;","      //'unscaled' не должны учитываться при расчёте оболочки, чтении и сохранении дисплейных списков","    end;","  end;","  Result.X1:=ShellX1;","  Result.X2:=ShellX2;","  Result.Y1:=ShellY1;","  Result.Y2:=ShellY2;",end
Callout name:CommCallout12
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=RenderShell
Text:comment
Callout name:SrcCallout13
Style:X=0 Y=0 W=150 H=50 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=RenderObjectShell
Source:self::system_o:sourcehelper CADEngine.pas "RenderObjectShell"
Text:"Procedure RenderObjectShell(Scene:TVScene;Obj:TVObject);","Var Sm,Rm,Scm,tmpm,TransM:TMatrix2D;",Begin,"  Sm:=GenShift(Obj.X,Obj.Y);","  Rm:=GenRotate(Obj.X,Obj.Y,Obj.A/180*pi);","  Scm:=GenScale(Obj.X,Obj.Y,Obj.S,Obj.S);","  tmpm:=MulMat2D(Sm,Rm);","  TransM:=MulMat2D(Tmpm,Scm);","  Obj.Shell:=RenderShell(Scene,Obj.DisplayList,TransM);",End
Callout name:CommCallout13
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=RenderObjectShell
Text:comment
Callout name:SrcCallout14
Style:X=0 Y=0 W=150 H=190 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=UpdateConnectionDisplayList
Source:self::system_o:sourcehelper CADEngine.pas "UpdateConnectionDisplayList"
Text:"Procedure UpdateConnectionDisplayList(Scene:TVScene;Connection:TVConnection);","Var I,Index:Longint;","    AccObject:TAccObject;","    Col,BGCol,Width,LineStyle:String;","    NonAccCommand:String;","    ConnPort:TVConnectionPort;","    Obj:TVObject; Port:TVPort;","    E:TMatrix2D;",Begin,"  Col:=GetValByName(Connection.Style,'Color');","  BGCol:=GetValByName(Connection.Style,'BGColor');","  Width:=GetValByName(Connection.Style,'Width');","  LineStyle:=GetValByName(Connection.Style,'LineStyle');","  AccObject:=TAccObject.Create;","  AccObject.AcceleratedCommand:=AccelerateCommand('SetColor '+Col);","  Connection.DisplayList.AddObject('SetColor '+Col,AccObject);","  AccObject:=TAccObject.Create;","  AccObject.AcceleratedCommand:=AccelerateCommand('SetBGColor '+BGCol);","  Connection.DisplayList.AddObject('SetBGColor '+BGCol,AccObject);","  AccObject:=TAccObject.Create;","  AccObject.AcceleratedCommand:=AccelerateCommand('SetWidth '+Width);","  Connection.DisplayList.AddObject('SetWidth '+Width,AccObject);","  If Connection.PortList.Count=0 Then Exit;","  For I:=0 To Connection.PortList.Count-1 Do Begin","    ConnPort:=Connection.PortList.Objects[I] As TVConnectionPort;","    If ConnPort.PortType='Start' Then Begin","      Index:=Scene.VObjectList.IndexOf(ConnPort.ConnectedObject);","      If Index<0 Then Exit;","      Obj:=Scene.VObjectList.Objects[Index] As TVObject;","      AccObject:=TAccObject.Create;","      If ConnPort.ConnectedPort='' Then NonAccCommand:='MoveTo '+FloatToStr(Obj.X)+','+FloatToStr(Obj.Y)","      Else Begin","        Port:=Obj.PortList.Objects[Obj.PortList.IndexOf(ConnPort.ConnectedPort)] As TVPort;","        NonAccCommand:='MoveTo '+FloatToStr(Port.AX)+','+FloatToStr(Port.AY)","      end;","      AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","      Connection.DisplayList.AddObject(NonAccCommand,AccObject);","    End;","    If ConnPort.PortType='End' Then Begin","      Index:=Scene.VObjectList.IndexOf(ConnPort.ConnectedObject);","      If Index<0 Then Exit;","      Obj:=Scene.VObjectList.Objects[Index] As TVObject;","      AccObject:=TAccObject.Create;","      If ConnPort.ConnectedPort='' Then NonAccCommand:='LineTo '+FloatToStr(Obj.X)+','+FloatToStr(Obj.Y)","      Else Begin","        Port:=Obj.PortList.Objects[Obj.PortList.IndexOf(ConnPort.ConnectedPort)] As TVPort;","        NonAccCommand:='LineTo '+FloatToStr(Port.AX)+','+FloatToStr(Port.AY)","      End;","      AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","      Connection.DisplayList.AddObject(NonAccCommand,AccObject);","    End;","  End;","  E:=GenShift(0,0);","  Connection.Shell:=RenderShell(Scene,Connection.DisplayList,E);",end
Callout name:CommCallout14
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=UpdateConnectionDisplayList
Text:comment
Callout name:SrcCallout15
Style:X=0 Y=0 W=150 H=380 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=UpdateCalloutDisplayList
Source:self::system_o:sourcehelper CADEngine.pas "UpdateCalloutDisplayList"
Text:"Procedure UpdateCalloutDisplayList(Scene:TVScene;Callout:TVCallout);","//пока неправильно вообще","Var I,N,Index:Longint;","    AccObject:TAccObject;","    Source,Col,BGCol,Width,LineStyle,BindMode,FontName,FontColor,FontHeight,BIUS,Transparent:String;","    W:Extended;","    NonAccCommand:String;","    ConnPort:TVConnectionPort;","    Obj:TVObject; Port:TVPort;","    E:TMatrix2D;","    BX,BY:Extended;","    FileBuf:TStringList;","    ErrCode:Longint;",Begin,"  Callout.DisplayList.Clear;","{  If Callout.Source<>'' Then Begin","    StrToLinesBuffer.Clear;","    StrToLinesBuffer.Text:=GetResponce(Callout.Source,ErrCode);","    Callout.Text:=StrToLinesBuffer.CommaText;}","{    FileBuf:=TStringList.Create;","    Try","    FileBuf.LoadFromFile(Callout.Source);","    Callout.Text:=FileBuf.CommaText;","    finally","      FileBuf.Free;","    end;","  End;  }","  Col:=GetValByName(Callout.Style,'Color');","  BGCol:=GetValByName(Callout.Style,'BGColor');","  Width:=GetValByName(Callout.Style,'Width');",,"  LineStyle:=GetValByName(Callout.Style,'LineStyle');","  FontName:=GetValByName(Callout.Style,'FontName');","  FontColor:=GetValByName(Callout.Style,'FontColor');","  FontHeight:=GetValByName(Callout.Style,'FontHeight');","  BIUS:=GetValByName(Callout.Style,'BIUS');","  BindMode:=GetValByName(Callout.Style,'BindMode');","  Transparent:=GetValByName(Callout.Style,'Transparent');","  If Callout.RelatedObj<>'' Then Begin","      N:=Scene.VObjectList.IndexOf(Callout.RelatedObj);","      If N>=0 Then Begin","        Obj:=Scene.VObjectList.Objects[N] As TVObject;","        Case BindMode Of","        'Base': Begin","                  BX:=Obj.X;BY:=Obj.Y;","                End;","        'LT': Begin","                  BX:=Obj.Shell.X1;BY:=Obj.Shell.Y2;","              End;","        'RT': Begin","                  BX:=Obj.Shell.X2;BY:=Obj.Shell.Y2;","              End;","        'LB': Begin","                  BX:=Obj.Shell.X1;BY:=Obj.Shell.Y1;","              End;","        'RB': Begin","                  BX:=Obj.Shell.X2;BY:=Obj.Shell.Y1;","              End;","        'Shell': Begin","                  BX:=Obj.Shell.X1;BY:=Obj.Shell.Y2;","                  Callout.W:=Abs(Obj.Shell.X2-Obj.Shell.X1);","                  Callout.H:=Abs(Obj.Shell.Y2-Obj.Shell.Y1);","              End;","         Else Begin","                BX:=0;BY:=0;","              End;","         end;","      end Else Begin","        BX:=0;BY:=0;","      end;","    end Else Begin","      BX:=0;BY:=0;","    end;","  If LowerCase(Transparent)='yes' Then Begin","  End Else Begin","    AccObject:=TAccObject.Create;","    NonAccCommand:='SetColor '+Col;","    AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","    Callout.DisplayList.AddObject(NonAccCommand,AccObject);",,"    AccObject:=TAccObject.Create;","    NonAccCommand:='SetBGColor '+(BGCol);","    AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","    Callout.DisplayList.AddObject(NonAccCommand,AccObject);",,"    AccObject:=TAccObject.Create;","    NonAccCommand:='SetWidth '+Width;","    AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","    Callout.DisplayList.AddObject(NonAccCommand,AccObject);",,"    AccObject:=TAccObject.Create;","    If BindMode='Shell' Then","         NonAccCommand:='Rect '+FloatToStr(BX)+','+FloatToStr(BY)+','+FloatToStr(BX+Callout.W)+','+FloatToStr(BY-Callout.H)","    Else NonAccCommand:='Rect '+FloatToStr(BX+Callout.X)+','+FloatToStr(BY+Callout.Y)+','+FloatToStr(BX+Callout.X+Callout.W)+','+FloatToStr(BY+Callout.Y-Callout.H);","    AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","    Callout.DisplayList.AddObject(NonAccCommand,AccObject);","  End;","  AccObject:=TAccObject.Create;","  NonAccCommand:='SetScaledFont '+FontName+','+(FontHeight)+','+(FontColor)+','+bius;","  AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","  Callout.DisplayList.AddObject(NonAccCommand,AccObject);",,"  AccObject:=TAccObject.Create;","  NonAccCommand:='SetTextStyle Transparent';","  AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","  Callout.DisplayList.AddObject(NonAccCommand,AccObject);",,"  AccObject:=TAccObject.Create;",,"  If BindMode='Shell' Then","       NonAccCommand:='TextRect '+FloatToStr(BX)+','+FloatToStr(BY)+','+FloatToStr(BX+Callout.W)+','+FloatToStr(BY-Callout.H)+','+Callout.Text","  Else NonAccCommand:='TextRect '+FloatToStr(BX+Callout.X)+','+FloatToStr(BY+Callout.Y)+','+FloatToStr(BX+Callout.X+Callout.W)+','+FloatToStr(BY+Callout.Y-Callout.H)+','+Callout.Text;","  AccObject.AcceleratedCommand:=AccelerateCommand(NonAccCommand);","  Callout.DisplayList.AddObject(NonAccCommand,AccObject);","  E:=GenShift(0,0);","  Callout.Shell:=RenderShell(Scene,Callout.DisplayList,E);",end
Callout name:CommCallout15
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=UpdateCalloutDisplayList
Text:comment
Callout name:SrcCallout16
Style:X=0 Y=0 W=150 H=440 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=MoveObjectTo
Source:self::system_o:sourcehelper CADEngine.pas "MoveObjectTo"
Text:"Procedure MoveObjectTo(Scene:TVScene;Obj:TVObject;X,Y:Extended;GroupList:String);","Var I,J,K,N,Index:Longint;","    Obj2:TVObject;","    Conn:TVConnection;","    Port:TVPort;","    AccObject:TAccObject;","    Callout:TVCallout;","    E,Sm,Rm,Scm,tmpm,TransM:TMatrix2D;","    GroupName:String;","    Group:TVGroup;","    Dx,Dy:Extended;",Begin,"  Dx:=X-Obj.X;","  Dy:=Y-Obj.Y;","  Obj.X:=X;","  Obj.Y:=Y;","  //группы Glue","  If Obj.GroupList.Count>0 Then","    For K:=0 To Obj.GroupList.Count-1 Do Begin","      //пропускаем группы, чьи объекты уже подвинуты","      If Pos(Obj.GroupList[K],GroupList)>0 Then Continue; ","      N:=Scene.VGroupList.IndexOf(Obj.GroupList[K]);","      If N>=0 Then Group:=Scene.VGroupList.Objects[N] As TVGroup;","      If Group.Glue Then Begin","        //двигаем все объекты группы","        If Group.DisplayList.Count>0 Then","          For J:=0 To Group.DisplayList.Count-1 Do Begin","            Index:=Scene.VObjectList.IndexOf(Group.DisplayList[J]);","            If Index<0 Then Continue; //не объект, а связь","            Obj2:=Scene.VObjectList.Objects[Index] As TVObject;","            If Obj=Obj2 Then Continue;","            MoveObjectTo(Scene,Obj2,Obj2.X+Dx,Obj2.Y+Dy,GroupList+','+Group.Name);","          end;","      end;","    end;","  //обновляем связанные выноски","  RenderObjectShell(Scene,Obj);","  For K:=0 To Obj.RelatedCAList.Count-1 Do Begin","    Callout:=Obj.RelatedCAList.Objects[K] As TVCallout;","    UpdateCalloutDisplayList(Scene,Callout);","  end;","  //удаляем команды старой отрисовки портов","  For K:=Obj.DisplayList.Count-1 DownTo 0 Do Begin","    AccObject:=Obj.DisplayList.Objects[K] As TAccObject;","    If Pos('Unscaled ',Obj.DisplayList[K])=1 Then Begin","      Obj.DisplayList.Delete(K);","      AccObject.Free;","    End;","  end;","  ","  Sm:=GenShift(Obj.X,Obj.Y);","  Rm:=GenRotate(Obj.X,Obj.Y,Obj.A/180*pi);","  Scm:=GenScale(Obj.X,Obj.Y,Obj.S,Obj.S);","  tmpm:=MulMat2D(Sm,Rm);","  TransM:=MulMat2D(Tmpm,Scm);","  Obj.Shell:=RenderShell(Scene,Obj.DisplayList,TransM);","  If Obj.PortList.Count>0 Then","    For J:=0 To Obj.PortList.Count-1 Do Begin","      Port:=Obj.PortList.Objects[J] As TVPort;","      If Port.AR='A' Then Begin","        //Надо ли сдвигать порты при сдвиге объекта, если они заданы абсолютно?",,,"      End Else Begin","        Port.AX:=Obj.Shell.X1+Port.X*(Obj.Shell.X2-Obj.Shell.X1);","        Port.AY:=Obj.Shell.Y1+Port.Y*(Obj.Shell.Y2-Obj.Shell.Y1);","      End;","      //Добавление портов в DisplayList","      AccObject:=TAccObject.Create;","      AccObject.AcceleratedCommand:=AccelerateCommand('Unscaled '+FloatToStr(Port.Ax)+','+FloatToStr(Port.Ay)+',box,3');","      Obj.DisplayList.AddObject('Unscaled '+FloatToStr(Port.Ax)+','+FloatToStr(Port.Ay)+',box,3',AccObject);","    End;",,,"  ","  If Obj.NonPortConnectionList.Count>0 Then","    For I:=0 To Obj.NonPortConnectionList.Count-1 Do Begin","      Index:=Scene.VConnectionList.IndexOf(Obj.NonPortConnectionList[I]);","      If Index>=0 Then Begin","        Conn:=Scene.VConnectionList.Objects[Index] As TVConnection;","        If Conn.StartObj=Obj.Name Then Begin","          //двигаем начало","         ","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);","        End Else Begin","          //двигаем конец","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);","        End;","      End;","    End;","  ","  If Obj.PortList.Count>0 Then","    For I:=0 To Obj.PortList.Count-1 Do Begin","      Port:=Obj.PortList.Objects[I] As TVPort;","      If Port.Connection<>'' Then Begin","        Index:=Scene.VConnectionList.IndexOf(Port.Connection);","        Conn:=Scene.VConnectionList.Objects[Index] As TVConnection;","        If (Conn.StartObj=Obj.Name)Or(Conn.EndObj=Obj.Name) Then Begin","          //двигаем начало","         ","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);"," {       End Else Begin","          //двигаем конец","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);}","        End;",,"      end;","    end;",,"  ","  ",,End
Callout name:CommCallout16
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=MoveObjectTo
Text:comment
Callout name:SrcCallout17
Style:X=0 Y=0 W=150 H=420 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=MoveCalloutTo
Source:self::system_o:sourcehelper CADEngine.pas "MoveCalloutTo"
Text:"Procedure MoveCalloutTo(Scene:TVScene;Callout:TVCallout;X,Y:Extended;GroupList:String);","//здесь недописанная дичь, возможно процедура не нужна совсем","Var I,J,K,N,Index:Longint;","    Callout2:TVCallout;","    Conn:TVConnection;","    Port:TVPort;","    AccObject:TAccObject;","    Sm,Rm,Scm,tmpm,TransM:TMatrix2D;","    GroupName:String;","    Group:TVGroup;","    Dx,Dy:Extended;",Begin,"  Dx:=X-Callout.X;","  Dy:=Y-Callout.Y;","  Callout.X:=X;","  Callout.Y:=Y;","  UpdateCalloutDisplayList(Scene,Callout);","  Callout.Shell:=RenderShell(Scene,Callout.DisplayList,E);","  Scene.ExecCommand('DrawCallout '+Callout.Name,ZeroAcc,0);","  exit;",,"  //группы Glue","  If Callout.GroupList.Count>0 Then","    For K:=0 To Callout.GroupList.Count-1 Do Begin","      //пропускаем группы, чьи объекты уже подвинуты","      If Pos(Callout.GroupList[K],GroupList)>0 Then Continue; ","      N:=Scene.VGroupList.IndexOf(Callout.GroupList[K]);","      If N>=0 Then Group:=Scene.VGroupList.Objects[N] As TVGroup;","      If Group.Glue Then Begin","        //двигаем все объекты группы","        If Group.DisplayList.Count>0 Then","          For J:=0 To Group.DisplayList.Count-1 Do Begin","            Index:=Scene.VObjectList.IndexOf(Group.DisplayList[J]);","            If Index<0 Then Continue; //не объект, а связь","            Callout2:=Scene.VObjectList.Objects[Index] As TVCallout;","            If Callout=Callout2 Then Continue;","            MoveCalloutTo(Scene,Callout2,Callout2.X+Dx,Callout2.Y+Dy,GroupList+','+Group.Name);","          end;","      end;","    end;"," {","  //удаляем команды старой отрисовки портов","  For K:=Obj.DisplayList.Count-1 DownTo 0 Do Begin","    AccObject:=Obj.DisplayList.Objects[K] As TAccObject;","    If Pos('Unscaled ',Obj.DisplayList[K])=1 Then Begin","      Obj.DisplayList.Delete(K);","      AccObject.Free;","    End;","  end;","  // пересчитать абс коорд портов","  Sm:=GenShift(Obj.X,Obj.Y);","  Rm:=GenRotate(Obj.X,Obj.Y,Obj.A/180*pi);","  Scm:=GenScale(Obj.X,Obj.Y,Obj.S,Obj.S);","  tmpm:=MulMat2D(Sm,Rm);","  TransM:=MulMat2D(Tmpm,Scm);","  Obj.Shell:=RenderShell(Scene,Obj.DisplayList,TransM);","  If Obj.PortList.Count>0 Then","    For J:=0 To Obj.PortList.Count-1 Do Begin","      Port:=Obj.PortList.Objects[J] As TVPort;","      If Port.AR='A' Then Begin","        //Надо ли сдвигать порты при сдвиге объекта, если они заданы абсолютно?","//        Port.X:=(Port.AX-Obj.Shell.X1)/(Obj.Shell.X2-Obj.Shell.X1);","//        Port.Y:=(Port.AY-Obj.Shell.Y1)/(Obj.Shell.Y2-Obj.Shell.Y1);","      End Else Begin","        Port.AX:=Obj.Shell.X1+Port.X*(Obj.Shell.X2-Obj.Shell.X1);","        Port.AY:=Obj.Shell.Y1+Port.Y*(Obj.Shell.Y2-Obj.Shell.Y1);","      End;","      //Добавление портов в DisplayList","      AccObject:=TAccObject.Create;","      AccObject.AcceleratedCommand:=AccelerateCommand('Unscaled '+FloatToStr(Port.Ax)+','+FloatToStr(Port.Ay)+',box,3');","      Obj.DisplayList.AddObject('Unscaled '+FloatToStr(Port.Ax)+','+FloatToStr(Port.Ay)+',box,3',AccObject);","    End;",,,"  // найти подключенные без портов связи","  If Obj.NonPortConnectionList.Count>0 Then","    For I:=0 To Obj.NonPortConnectionList.Count-1 Do Begin","      Index:=Scene.VConnectionList.IndexOf(Obj.NonPortConnectionList[I]);","      If Index>=0 Then Begin","        Conn:=Scene.VConnectionList.Objects[Index] As TVConnection;","        If Conn.StartObj=Obj.Name Then Begin","          //двигаем начало","         // Conn.PortList;","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);","        End Else Begin","          //двигаем конец","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);","        End;","      End;","    End;","  // найти подключенные к портам связи","  If Obj.PortList.Count>0 Then","    For I:=0 To Obj.PortList.Count-1 Do Begin","      Port:=Obj.PortList.Objects[I] As TVPort;","      If Port.Connection<>'' Then Begin","        Index:=Scene.VConnectionList.IndexOf(Port.Connection);","        Conn:=Scene.VConnectionList.Objects[Index] As TVConnection;","        If (Conn.StartObj=Obj.Name)Or(Conn.EndObj=Obj.Name) Then Begin","          //двигаем начало","         // Conn.PortList;","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);"," {       End Else Begin","          //двигаем конец","          If Conn.DisplayList.Count>0 Then","            For J:=Conn.DisplayList.Count-1 Downto 0 Do Begin","              AccObject:=Conn.DisplayList.Objects[J] As TAccObject;","              AccObject.Free;","            end;","          Conn.DisplayList.Clear;","          UpdateConnectionDisplayList(Scene,Conn);}","        End"
Callout name:CommCallout17
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=MoveCalloutTo
Text:comment
Callout name:SrcCallout18
Style:X=0 Y=0 W=150 H=30 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVCurl.Create
Source:self::system_o:sourcehelper CADEngine.pas "TVCurl.Create"
Text:"Constructor TVCurl.Create;",Begin,"  Inherited Create;","  DisplayList:=TStringList.Create;",End
Callout name:CommCallout18
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVCurl.Create
Text:comment
Callout name:SrcCallout19
Style:X=0 Y=0 W=150 H=50 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVCurl.Destroy
Source:self::system_o:sourcehelper CADEngine.pas "TVCurl.Destroy"
Text:"Destructor TVCurl.Destroy;","Var I:Longint;Acc:TAccObject;",Begin,"  If DisplayList.Count>0 Then","    For I:=DisplayList.Count-1 Downto 0 Do Begin","      Acc:=DisplayList.Objects[I] As TAccObject;","      Acc.Free;","    end;","  DisplayList.Free;","  Inherited Destroy;",End
Callout name:CommCallout19
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVCurl.Destroy
Text:comment
Callout name:SrcCallout20
Style:X=0 Y=0 W=150 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVConnection.Create
Source:self::system_o:sourcehelper CADEngine.pas "TVConnection.Create"
Text:"Constructor TVConnection.Create;",Begin,"  Inherited Create;","  PortList:=TStringList.Create;","  DisplayList:=TStringList.Create;","  GroupList:=TStringList.Create;",End
Callout name:CommCallout20
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVConnection.Create
Text:comment
Callout name:SrcCallout21
Style:X=0 Y=0 W=150 H=80 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVConnection.Destroy
Source:self::system_o:sourcehelper CADEngine.pas "TVConnection.Destroy"
Text:"Destructor TVConnection.Destroy;","Var I:Longint;Acc:TAccObject;","    Port:TVConnectionPort;",Begin,"  If DisplayList.Count>0 Then","    For I:=DisplayList.Count-1 Downto 0 Do Begin","      Acc:=DisplayList.Objects[I] As TAccObject;","      Acc.Free;","    end;","  If PortList.Count>0 Then","    For I:=PortList.Count-1 Downto 0 Do Begin","      Port:=PortList.Objects[I] As TVConnectionPort;","      Port.Free;","      PortList.Delete(I);","    end;","  DisplayList.Free;","  PortList.Free;","  GroupList.Free;","  Inherited Destroy;",End
Callout name:CommCallout21
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVConnection.Destroy
Text:comment
Callout name:SrcCallout22
Style:X=0 Y=0 W=150 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVTemplate.Create
Source:self::system_o:sourcehelper CADEngine.pas "TVTemplate.Create"
Text:"Constructor TVTemplate.Create;",Begin,"  Inherited Create;","  DisplayList:=TStringList.Create;","  PortList:=TStringList.Create;",End
Callout name:CommCallout22
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVTemplate.Create
Text:comment
Callout name:SrcCallout23
Style:X=0 Y=0 W=150 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVTemplate.Destroy
Source:self::system_o:sourcehelper CADEngine.pas "TVTemplate.Destroy"
Text:"Destructor TVTemplate.Destroy;",Begin,"  DisplayList.Free;","  PortList.Free;","  Inherited Destroy;",End
Callout name:CommCallout23
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVTemplate.Destroy
Text:comment
Callout name:SrcCallout24
Style:X=0 Y=0 W=150 H=50 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVObject.Create
Source:self::system_o:sourcehelper CADEngine.pas "TVObject.Create"
Text:"Constructor TVObject.Create;",Begin,"  Inherited Create;","  DisplayList:=TStringList.Create;","  PortList:=TStringList.Create;","  NonPortConnectionList:=TStringList.Create;","  GroupList:=TStringList.Create;","  RelatedCAList:=TStringList.Create;","  ActionList:=TStringList.Create;",End
Callout name:CommCallout24
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVObject.Create
Text:comment
Callout name:SrcCallout25
Style:X=0 Y=0 W=150 H=70 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVObject.Destroy
Source:self::system_o:sourcehelper CADEngine.pas "TVObject.Destroy"
Text:"Destructor TVObject.Destroy;","Var I:Longint;Port:TVPort;",Begin,"  DisplayList.Free;","  GroupList.Free;","  RelatedCAList.Free;","  If PortList.Count>0 Then","    For I:=PortList.Count-1 Downto 0 Do Begin","      Port:=PortList.Objects[I] As TVPort;","      Port.Free;","      PortList.Delete(I);","    end;","  PortList.Free;","  NonPortConnectionList.Free;","  ActionList.Free;","  Inherited Destroy;",End
Callout name:CommCallout25
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVObject.Destroy
Text:comment
Callout name:SrcCallout26
Style:X=0 Y=0 W=150 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVCallout.Create
Source:self::system_o:sourcehelper CADEngine.pas "TVCallout.Create"
Text:"Constructor TVCallout.Create;",Begin,"  Inherited Create;","  PortList:=TStringList.Create;","  DisplayList:=TStringList.Create;","  GroupList:=TStringList.Create;","  ActionList:=TStringList.Create;",End
Callout name:CommCallout26
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVCallout.Create
Text:comment
Callout name:SrcCallout27
Style:X=0 Y=0 W=150 H=80 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVCallout.Destroy
Source:self::system_o:sourcehelper CADEngine.pas "TVCallout.Destroy"
Text:"Destructor TVCallout.Destroy;","Var I:Longint;Acc:TAccObject;","    Port:TVConnectionPort;",Begin,"  If DisplayList.Count>0 Then","    For I:=DisplayList.Count-1 Downto 0 Do Begin","      Acc:=DisplayList.Objects[I] As TAccObject;","      Acc.Free;","    end;","  If PortList.Count>0 Then","    For I:=PortList.Count-1 Downto 0 Do Begin","      Port:=PortList.Objects[I] As TVConnectionPort;","      Port.Free;","      PortList.Delete(I);","    end;","  DisplayList.Free;","  PortList.Free;","  GroupList.Free;","  ActionList.Free;","  Inherited Destroy;",End
Callout name:CommCallout27
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVCallout.Destroy
Text:comment
Callout name:SrcCallout28
Style:X=0 Y=0 W=150 H=30 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVGroup.Create
Source:self::system_o:sourcehelper CADEngine.pas "TVGroup.Create"
Text:"Constructor TVGroup.Create;",Begin,"  Inherited Create;","  DisplayList:=TStringList.Create;",End
Callout name:CommCallout28
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVGroup.Create
Text:comment
Callout name:SrcCallout29
Style:X=0 Y=0 W=150 H=30 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVGroup.Destroy
Source:self::system_o:sourcehelper CADEngine.pas "TVGroup.Destroy"
Text:"Destructor TVGroup.Destroy;",Begin,"  DisplayList.Free;","  Inherited Destroy;",End
Callout name:CommCallout29
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVGroup.Destroy
Text:comment
Callout name:SrcCallout30
Style:X=0 Y=0 W=150 H=50 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.Create
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.Create"
Text:"Constructor TVScene.Create;",Begin,"  Inherited Create;","  VObjectList:=TStringList.Create; ","  VGroupList:=TStringList.Create; ","  VTemplateList:=TStringList.Create; ","  VCurlList:=TStringList.Create; ","  VConnectionList:=TStringList.Create;","  VCalloutList:=TStringList.Create;","  VHandleList:=TStringList.Create;","  View:=TStringList.Create; ",End
Callout name:CommCallout30
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.Create
Text:comment
Callout name:SrcCallout31
Style:X=0 Y=0 W=150 H=160 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.Destroy
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.Destroy"
Text:"Destructor TVScene.Destroy;","Var I:Longint;C1:TVCurl;T1:TVTemplate;O1:TVObject;G1:TVGroup;Co1:TVConnection;","    Handle:TVSelHandle;","    Callout:TVCallout;",Begin,"  View.Clear;","  If VGroupList.Count>0 Then","  For I:=VGroupList.Count-1 DownTo 0 Do Begin","    G1:=VGroupList.Objects[I] As TVGroup;","    G1.Destroy;","  end;","  VGroupList.Free; ","  For I:=VObjectList.Count-1 DownTo 0 Do Begin","    O1:=VObjectList.Objects[I] As TVObject;","    O1.Destroy;","  end;","  VObjectList.Free; ","  For I:=VTemplateList.Count-1 DownTo 0 Do Begin","    T1:=VTemplateList.Objects[I] As TVTemplate;","    T1.Destroy;","  end;","  VTemplateList.Free; ","  For I:=VCurlList.Count-1 DownTo 0 Do Begin","    C1:=VCurlList.Objects[I] As TVCurl;","    C1.Destroy;","  end;","  VCurlList.Free; ","  For I:=VConnectionList.Count-1 DownTo 0 Do Begin","    Co1:=VConnectionList.Objects[I] As TVConnection;","    Co1.Destroy;","  end;","  VConnectionList.Free; ","  For I:=VCalloutList.Count-1 DownTo 0 Do Begin","    Callout:=VCalloutList.Objects[I] As TVCallout;","    Callout.Destroy;","  end;","  VCalloutList.Free; ","  For I:=VHandleList.Count-1 DownTo 0 Do Begin","    Handle:=VHandleList.Objects[I] As TVSelHandle;","    Handle.Destroy;","  end;","  VHandleList.Free; ","  View.Free; ","  Inherited Destroy;",End
Callout name:CommCallout31
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.Destroy
Text:comment
Callout name:SrcCallout32
Style:X=0 Y=0 W=150 H=170 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.Clear
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.Clear"
Text:"Procedure TVScene.Clear;","Var I:Longint;C1:TVCurl;T1:TVTemplate;O1:TVObject;G1:TVGroup;Co1:TVConnection;","    Callout:TVCallout; SelHandle:TVSelHandle;",Begin,"  View.Clear;","  If VGroupList.Count>0 Then","  For I:=VGroupList.Count-1 DownTo 0 Do Begin","    G1:=VGroupList.Objects[I] As TVGroup;","    G1.Destroy;","    VGroupList.Delete(I);","  end;","  If VObjectList.Count>0 Then","  For I:=VObjectList.Count-1 DownTo 0 Do Begin","    O1:=VObjectList.Objects[I] As TVObject;","    O1.Destroy;","    VObjectList.Delete(I);","  end;","{  If VTemplateList.Count>0 Then","  For I:=VTemplateList.Count-1 DownTo 0 Do Begin","    T1:=VTemplateList.Objects[I] As TVTemplate;","    T1.Destroy;","    VTemplateList.Delete(I);","  end;}","  If VCurlList.Count>0 Then","  For I:=VCurlList.Count-1 DownTo 0 Do Begin","    C1:=VCurlList.Objects[I] As TVCurl;","    C1.Destroy;","    VCurlList.Delete(I);","  end;","  If VConnectionList.Count>0 Then","    For I:=VConnectionList.Count-1 DownTo 0 Do Begin","      Co1:=VConnectionList.Objects[I] As TVConnection;","      Co1.Destroy;","      VConnectionList.Delete(I);","    end;","  If VCalloutList.Count>0 Then","    For I:=VCalloutList.Count-1 DownTo 0 Do Begin","      Callout:=VCalloutList.Objects[I] As TVCallout;","      Callout.Destroy;","      VCalloutList.Delete(I);","    end;","  If VHandleList.Count>0 Then","    For I:=VHandleList.Count-1 DownTo 0 Do Begin","      SelHandle:=VHandleList.Objects[I] As TVSelHandle;","      SelHandle.Destroy;","      VHandleList.Delete(I);","    end;",,End
Callout name:CommCallout32
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.Clear
Text:comment
Callout name:SrcCallout33
Style:X=0 Y=0 W=150 H=2500 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.LoadFile
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.LoadFile"
Text:"Procedure TVScene.LoadFile(FileName:String);","Var FileContent:TStringList;","    I,J,K,N,ChunkLength:Longint;","    Curl:TVCurl;VObject:TVObject;Port:TVPort;VGroup:TVGroup;","    VConnection:TVConnection;VConnectionPort:TVConnectionPort;","    VCallout:TVCallout;","    CurrentLine,Keyword,Buf,ParsedBuf:String;","    AccObject:TAccObject;","    E,Sm,Rm,Scm,tmpm,TransM:TMatrix2D;",,Begin,"  Clear;","  FileContent:=TStringList.Create;","  FileContent.LoadFromFile(FileName);","  If FileContent.Count=0 Then LogMessage(0,'Empty File') Else Begin","    I:=0;","    Repeat","      CurrentLine:=FileContent[I];","      ","      If Pos('Curl name:',CurrentLine)=1 Then Begin","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        If ParsedBuf='' Then Begin","          LogMessage(0,'Error parsing file. Empty curl name after keyword at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        End;","        If I+1>=FileContent.Count Then Begin","          LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1)+'. Curl chunk length expected');","          FileContent.Free;","          Exit;","        End;",,"        //create curl here","        Curl:=TVcurl.Create;","        Curl.Name:=ParsedBuf;","        VCurlList.AddObject(Curl.Name,Curl);","        CurrentLine:=FileContent[I+1];","        If Pos('Lines:',CurrentLine)<>1 Then Begin","          LogMessage(0,'Error parsing file. Keyword ""Lines:"" expected at line '+IntToStr(I+1)+'.');","          FileContent.Free;","          Exit;","        End;","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try ChunkLength:=StrToInt(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an integer after keyword ""Lines:"" at line '+IntToStr(I+1)+'.');","          FileContent.Free;","          Exit;","        end;","        For J:=1 To ChunkLength Do Begin","          If I+1+J>=FileContent.Count Then Begin","            LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1+J)+'.');","            FileContent.Free;","            Exit;","          End;","          CurrentLine:=FileContent[I+1+J];","          AccObject:=TAccObject.Create;","          AccObject.AcceleratedCommand:=AccelerateCommand(CurrentLine);","          Curl.DisplayList.AddObject(CurrentLine,AccObject);","        End;","        E:=GenShift(0,0);","        Curl.Shell:=RenderShell(Self,Curl.DisplayList,E);","        I:=I+1+J;","        Continue;","      end;","      ","      If Pos('Object name:',CurrentLine)=1 Then Begin","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        If ParsedBuf='' Then Begin","          LogMessage(0,'Error parsing file. Empty curl name after keyword at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        End;","        If I+1>=FileContent.Count Then Begin","          LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1)+'. Curl chunk length expected');","          FileContent.Free;","          Exit;","        End;",,"        //create Object here","        VObject:=TVObject.Create;","        VObject.Name:=ParsedBuf;","        VObjectList.AddObject(VObject.Name,VObject);","        CurrentLine:=FileContent[I+1];","        If Pos('X:',CurrentLine)<>1 Then Begin","                    LogMessage(0,'Error parsing file. Keyword ""X:"" expected at line '+IntToStr(I+1)+'.');","                    FileContent.Free;","                    Exit;","                  End;","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try VObject.X:=StrToFloat(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an float after keyword ""X:"" at line '+IntToStr(I+1)+'.');","          FileContent.Free;","          Exit;","        end;","        CurrentLine:=FileContent[I+2];","        If Pos('Y:',CurrentLine)<>1 Then Begin","                    LogMessage(0,'Error parsing file. Keyword ""Y:"" expected at line '+IntToStr(I+2)+'.');","                    FileContent.Free;","                    Exit;","                  End;","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try VObject.Y:=StrToFloat(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an float after keyword ""Y:"" at line '+IntToStr(I+2)+'.');","          FileContent.Free;","          Exit;","        end;","        CurrentLine:=FileContent[I+3];","        If Pos('A:',CurrentLine)<>1 Then Begin","                    LogMessage(0,'Error parsing file. Keyword ""A:"" expected at line '+IntToStr(I+3)+'.');","                    FileContent.Free;","                    Exit;","                  End;","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try VObject.A:=StrToFloat(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an float after keyword ""A:"" at line '+IntToStr(I+3)+'.');","          FileContent.Free;","          Exit;","        end;","        CurrentLine:=FileContent[I+4];","        If Pos('S:',CurrentLine)<>1 Then Begin","                    LogMessage(0,'Error parsing file. Keyword ""S:"" expected at line '+IntToStr(I+4)+'.');","                    FileContent.Free;","                    Exit;","                  End;","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try VObject.S:=StrToFloat(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an float after keyword ""S:"" at line '+IntToStr(I+4)+'.');","          FileContent.Free;","          Exit;","        end;","        I:=I+5;","        CurrentLine:=FileContent[I];","        If Pos('DisplayList lines:',CurrentLine)<>1 Then Begin","          LogMessage(0,'Error parsing file. Keyword ""DisplayList lines:"" expected at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        End;","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try ChunkLength:=StrToInt(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an integer after keyword ""DisplayList lines:"" at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        end;","        For J:=1 To ChunkLength Do Begin","          If I+1+J>=FileContent.Count Then Begin","            LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1+J)+'.');","            FileContent.Free;","            Exit;","          End;","          CurrentLine:=FileContent[I+J];","          AccObject:=TAccObject.Create;","          AccObject.AcceleratedCommand:=AccelerateCommand(CurrentLine);","          VObject.DisplayList.AddObject(CurrentLine,AccObject);","        End;","        I:=I+1+J;","        CurrentLine:=FileContent[I];","        If Pos('PortList lines:',CurrentLine)<>1 Then Begin","          LogMessage(0,'Error parsing file. Keyword ""PortList lines:"" expected at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        End;","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try ChunkLength:=StrToInt(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an integer after keyword ""PortList lines:"" at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        end;","        If ChunkLength>0 Then Begin","          For J:=1 To ChunkLength Do Begin","            If I+J>=FileContent.Count Then Begin","              LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+J)+'.');","              FileContent.Free;","              Exit;","            End;","            CurrentLine:=FileContent[I+J];","            Port:=TVPort.Create;","            Port.Name:=GetValByName(CurrentLine,'Name');","            Port.AR:=GetValByName(CurrentLine,'AR');","            If Port.AR='A' Then Begin","              Port.AX:=StrToFloat(GetValByName(CurrentLine,'X'));","              Port.AY:=StrToFloat(GetValByName(CurrentLine,'Y'));","              //пересчитать относительные?","            End Else Begin","              Port.X:=StrToFloat(GetValByName(CurrentLine,'X'));","              Port.Y:=StrToFloat(GetValByName(CurrentLine,'Y'));","              //пересчитать абсолютные можно только после расчёта оболочки","            End;","            Port.Connection:=GetValByName(CurrentLine,'Conn');","            Port.ConnectionPort:=GetValByName(CurrentLine,'Port');","            VObject.PortList.AddObject(Port.Name,Port);","          End;","          I:=I+1+J;","        End Else I:=I+1;","        CurrentLine:=FileContent[I];","        If Pos('NonPortConnectionList lines:',CurrentLine)=1 Then Begin","{          LogMessage(0,'Error parsing file. Keyword ""NonPortConnectionList lines:"" expected at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        End;}","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        Try ChunkLength:=StrToInt(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an integer after keyword ""NonPortConnectionList lines:"" at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        end;","        If ChunkLength>0 Then Begin","          For J:=1 To ChunkLength+1 Do Begin","            If I+J>=FileContent.Count Then Begin","              LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+J)+'.');","              FileContent.Free;","              Exit;","            End;","            CurrentLine:=FileContent[I+J-1];","            VObject.NonPortConnectionList.Add(CurrentLine);","          End;","          I:=I+J;","        end Else I:=I+1;","      End;","      CurrentLine:=FileContent[I];","      If Pos('GroupList lines:',CurrentLine)=1 Then Begin","{          LogMessage(0,'Error parsing file. Keyword ""GroupList lines:"" expected at line '+IntToStr(I)+'.');","        FileContent.Free;","        Exit;","      End;}","      Buf:=CurrentLine;","      KeyWord:=GetNextToken(Buf,ParsedBuf,':');","      Try ChunkLength:=StrToInt(ParsedBuf)","      Except","        LogMessage(0,'Error parsing file. Not an integer after keyword ""GroupList lines:"" at line '+IntToStr(I)+'.');","        FileContent.Free;","        Exit;","      end;","      If ChunkLength>0 Then Begin","        For J:=1 To ChunkLength+1 Do Begin","          If I+J>=FileContent.Count Then Begin","            LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+J)+'.');","            FileContent.Free;","            Exit;","          End;","          CurrentLine:=FileContent[I+J-1];","          N:=VGroupList.IndexOf(CurrentLine);","          If N>=0 Then Begin","            VGroup:=VGroupList.Objects[N] As TVGroup;","            VGroup.DisplayList.Add(VObject.Name);","            VObject.GroupList.AddObject(CurrentLine,VGroup);","          end;","        End;","        I:=I+J;","      end Else I:=I+1;","    End;","      CurrentLine:=FileContent[I];","      If Pos('ActionList lines:',CurrentLine)=1 Then Begin","{          LogMessage(0,'Error parsing file. Keyword ""ActionList lines:"" expected at line '+IntToStr(I)+'.');","        FileContent.Free;","        Exit;","      End;}","      Buf:=CurrentLine;","      KeyWord:=GetNextToken(Buf,ParsedBuf,':');","      Try ChunkLength:=StrToInt(ParsedBuf)","      Except","        LogMessage(0,'Error parsing file. Not an integer after keyword ""ActionList lines:"" at line '+IntToStr(I)+'.');","        FileContent.Free;","        Exit;","      end;","      If ChunkLength>0 Then Begin","        For J:=1 To ChunkLength Do Begin","          If I+J>=FileContent.Count Then Begin","            LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+J)+'.');","            FileContent.Free;","            Exit;","          End;","          CurrentLine:=FileContent[I+J];","          VObject.ActionList.Add(CurrentLine);","        End;","        I:=I+J;","      end Else I:=I+1;","    End;",,"        If VObject.DisplayList.Count=0 Then Begin","          //Shell пустого объекта = точке вставки?","          VObject.Shell.X1:=VObject.X;","          VObject.Shell.X2:=VObject.X;","          VObject.Shell.Y1:=VObject.Y;","          VObject.Shell.Y2:=VObject.Y;","        End Else Begin","          //вот тут надо проверить, загружены ли Templatы и если надо - загрузить","          ","          Sm:=GenShift(VObject.X,VObject.Y);","          Rm:=GenRotate(VObject.X,VObject.Y,VObject.A/180*pi);","          Scm:=GenScale(VObject.X,VObject.Y,VObject.S,VObject.S);","          tmpm:=MulMat2D(Sm,Rm);","          TransM:=MulMat2D(Tmpm,Scm);","          VObject.Shell:=RenderShell(Self,VObject.DisplayList,TransM);","          //пересчёт относительных и абсолютных координат портов","          //может только после пересчета оболочки с использованием всех загруженных шаблонов","{          If VObject.PortList.Count>0 Then","            For J:=0 To VObject.PortList.Count-1 Do Begin","              Port:=VObject.PortList.Objects[J] As TVPort;","              If Port.AR='A' Then Begin","                Port.X:=(Port.AX-VObject.Shell.X1)/(VObject.Shell.X2-VObject.Shell.X1);","                Port.Y:=(Port.AY-VObject.Shell.Y1)/(VObject.Shell.Y2-VObject.Shell.Y1);","              End Else Begin","                Port.AX:=VObject.Shell.X1+Port.X*(VObject.Shell.X2-VObject.Shell.X1);","                Port.AY:=VObject.Shell.Y1+Port.Y*(VObject.Shell.Y2-VObject.Shell.Y1);","              End;","              //Добавление портов в DisplayList","              AccObject:=TAccObject.Create;","              AccObject.AcceleratedCommand:=AccelerateCommand('Circle '+FloatToStr(Port.Ax)+','+FloatToStr(Port.Ay)+','+","              FloatToStr((VObject.Shell.X2-VObject.Shell.X1)/10));","              VObject.DisplayList.AddObject('Circle '+FloatToStr(Port.Ax)+','+FloatToStr(Port.Ay)+','+","              FloatToStr((VObject.Shell.X2-VObject.Shell.X1)/10),AccObject);","            end;}","        End;","        Continue;","      end;","      ","            If Pos('Connection name:',CurrentLine)=1 Then Begin","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              If ParsedBuf='' Then Begin","                LogMessage(0,'Error parsing file. Empty connection name after keyword at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              End;","              If I+1>=FileContent.Count Then Begin","                LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1)+'. Connection chunk length expected');","                FileContent.Free;","                Exit;","              End;",,"              //create Connection here","              VConnection:=TVConnection.Create;","              VConnection.Name:=ParsedBuf;","              VConnectionList.AddObject(VConnection.Name,VConnection);","              CurrentLine:=FileContent[I+1];","              If Pos('X:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""X:"" expected at line '+IntToStr(I+1)+'.');","                          FileContent.Free;","                          Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try VConnection.X:=StrToFloat(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not a float after keyword ""X:"" at line '+IntToStr(I+1)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+2];","              If Pos('Y:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""Y:"" expected at line '+IntToStr(I+2)+'.');","                          FileContent.Free;","                          Exit;","                        End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try VConnection.Y:=StrToFloat(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not a float after keyword ""Y:"" at line '+IntToStr(I+2)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+3];","              If Pos('StartObj:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""StartObj:"" expected at line '+IntToStr(I+3)+'.');","                          FileContent.Free;","                          Exit;","                        End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              If ParsedBuf<>'' Then  VConnection.StartObj:=ParsedBuf","              Else Begin","                LogMessage(0,'Error parsing file. Empty Start object at line '+IntToStr(I+3)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+4];","              If Pos('EndObj:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""EndObj:"" expected at line '+IntToStr(I+4)+'.');","                          FileContent.Free;","                          Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              If ParsedBuf<>'' Then VConnection.EndObj:=ParsedBuf","              Else Begin","                LogMessage(0,'Error parsing file. Empty End object at line '+IntToStr(I+4)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+5];","              If Pos('Style:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""Style:"" expected at line '+IntToStr(I+5)+'.');","                          FileContent.Free;","                          Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              If ParsedBuf<>'' Then  VConnection.Style:=ParsedBuf","              Else Begin","                LogMessage(0,'Error parsing file. Empty Style object at line '+IntToStr(I+5)+'.');","                FileContent.Free;","                Exit;","              end;","              I:=I+6;","              CurrentLine:=FileContent[I];","              If Pos('GroupList lines:',CurrentLine)=1 Then Begin","   {            LogMessage(0,'Error parsing file. Keyword ""GroupList lines:"" expected at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              End;}","                Buf:=CurrentLine;","                KeyWord:=GetNextToken(Buf,ParsedBuf,':');","                Try ChunkLength:=StrToInt(ParsedBuf)","                Except","                  LogMessage(0,'Error parsing file. Not an integer after keyword ""GroupList lines:"" at line '+IntToStr(I)+'.');","                  FileContent.Free;","                  Exit;","                end;","                If ChunkLength>0 Then Begin","                  For J:=1 To ChunkLength+1 Do Begin","                    If I+J>=FileContent.Count Then Begin","                    LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+J)+'.');","                    FileContent.Free;","                    Exit;","                  End;","                  CurrentLine:=FileContent[I+J-1];","                  N:=VGroupList.IndexOf(CurrentLine);","                  If N>=0 Then Begin","                    VGroup:=VGroupList.Objects[N] As TVGroup;","                    VGroup.DisplayList.Add(VConnection.Name);","                    VConnection.GroupList.AddObject(CurrentLine,VGroup);","                  end;","                End;","                I:=I+J;","                end Else I:=I+1;","              End;","              CurrentLine:=FileContent[I];","              If Pos('PortList lines:',CurrentLine)<>1 Then Begin","                LogMessage(0,'Error parsing file. Keyword ""PortList lines:"" expected at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try ChunkLength:=StrToInt(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not an integer after keyword ""PortList lines:"" at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              end;","              If ChunkLength>0 Then Begin","                For J:=1 To ChunkLength Do Begin","                  If I+1+J>=FileContent.Count Then Begin","                    LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1+J)+'.');","                    FileContent.Free;","                    Exit;","                  End;","                  CurrentLine:=FileContent[I+J];","                  VConnectionPort:=TVConnectionPort.Create;","                  VConnectionPort.PortType:=GetValByName(CurrentLine,'PortType');","                  VConnectionPort.AR:=GetValByName(CurrentLine,'AR');","                  VConnectionPort.X:=StrToFloat(GetValByName(CurrentLine,'X'));","                  VConnectionPort.Y:=StrToFloat(GetValByName(CurrentLine,'Y'));","                  VConnectionPort.ConnectedObject:=GetNextToken(GetValByName(CurrentLine,'Conn'),","                          VConnectionPort.ConnectedPort,':');","                  VConnection.PortList.AddObject(VConnectionPort.PortType,VConnectionPort);",,"{   FileContent.Add('PortType='+ConnPort.PortType+' AR='+ConnPort.AR+' X='+","               FloatToStr(ConnPort.X)+' Y='+FloatToStr(ConnPort.Y)+' Conn='+ConnPort.ConnectedObject+':'+ConnPort.ConnectedPort);",},"                End;","                I:=I+1+J;","              end Else I:=I+1;","              UpdateConnectionDisplayList(Self,VConnection);","              Continue;","            end;",,,"            If Pos('Callout name:',CurrentLine)=1 Then Begin","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              If ParsedBuf='' Then Begin","                LogMessage(0,'Error parsing file. Empty callout name after keyword at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              End;","              If I+1>=FileContent.Count Then Begin","                LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1)+'. Callout chunk length expected');","                FileContent.Free;","                Exit;","              End;",,"              //create Callout here","              VCallout:=TVCallout.Create;","              VCallout.Name:=ParsedBuf;","              VCalloutList.AddObject(VCallout.Name,VCallout);","              CurrentLine:=FileContent[I+1];","              If Pos('X:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""X:"" expected at line '+IntToStr(I+1)+'.');","                          FileContent.Free;","                          Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try VCallout.X:=StrToFloat(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not a float after keyword ""X:"" at line '+IntToStr(I+1)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+2];","              If Pos('Y:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""Y:"" expected at line '+IntToStr(I+2)+'.');","                          FileContent.Free;","                          Exit;","                        End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try VCallout.Y:=StrToFloat(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not a float after keyword ""Y:"" at line '+IntToStr(I+2)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+3];","              If Pos('W:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""W:"" expected at line '+IntToStr(I+3)+'.');","                          FileContent.Free;","                          Exit;","                        End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try VCallout.W:=StrToFloat(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not a float after keyword ""W:"" at line '+IntToStr(I+3)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+4];","              If Pos('H:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""H:"" expected at line '+IntToStr(I+4)+'.');","                          FileContent.Free;","                          Exit;","                        End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try VCallout.H:=StrToFloat(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not a float after keyword ""H:"" at line '+IntToStr(I+4)+'.');","                FileContent.Free;","                Exit;","              end;","              CurrentLine:=FileContent[I+5];","              If Pos('RelatedObj:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""RelatedObj:"" expected at line '+IntToStr(I+5)+'.');","                          FileContent.Free;","                          Exit;","                        End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              VCallout.RelatedObj:=ParsedBuf;","              //здесь надо найти соответствующий объект и добавить ему в список связанных эту выноску или реализовать это в основной программе","              CurrentLine:=FileContent[I+6];","              If Pos('Style:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""Style:"" expected at line '+IntToStr(I+6)+'.');","                          FileContent.Free;","                          Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              If ParsedBuf<>'' Then VCallout.Style:=ParsedBuf","              Else Begin","                LogMessage(0,'Error parsing file. Empty Style at line '+IntToStr(I+6)+'.');","                FileContent.Free;","                Exit;","              end;","              VCallout.Style:=ParsedBuf;","              CurrentLine:=FileContent[I+7];","              If Pos('Source:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""Source:"" expected at line '+IntToStr(I+7)+'.');","                          FileContent.Free;","                          Exit;","                        End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              VCallout.Source:=ParsedBuf;","              CurrentLine:=FileContent[I+8];","              If Pos('Text:',CurrentLine)<>1 Then Begin","                          LogMessage(0,'Error parsing file. Keyword ""Text:"" expected at line '+IntToStr(I+7)+'.');","                          FileContent.Free;","                          Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              VCallout.Text:=ParsedBuf;",,"               Sm:=GenShift(VCallout.X,VCallout.Y);","               Rm:=GenRotate(VCallout.X,VCallout.Y,0);","               Scm:=GenScale(VCallout.X,VCallout.Y,1,1);","               tmpm:=MulMat2D(Sm,Rm);","               TransM:=MulMat2D(Tmpm,Scm);","               VCallout.Shell:=RenderShell(Self,VCallout.DisplayList,TransM);",,"              I:=I+9;","              CurrentLine:=FileContent[I];","              If Pos('GroupList lines:',CurrentLine)=1 Then Begin","   {            LogMessage(0,'Error parsing file. Keyword ""GroupList lines:"" expected at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              End;}","                Buf:=CurrentLine;","                KeyWord:=GetNextToken(Buf,ParsedBuf,':');","                Try ChunkLength:=StrToInt(ParsedBuf)","                Except","                  LogMessage(0,'Error parsing file. Not an integer after keyword ""GroupList lines:"" at line '+IntToStr(I)+'.');","                  FileContent.Free;","                  Exit;","                end;","                If ChunkLength>0 Then Begin","                  For J:=1 To ChunkLength+1 Do Begin","                    If I+J>=FileContent.Count Then Begin","                    LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+J)+'.');","                    FileContent.Free;","                    Exit;","                  End;","                  CurrentLine:=FileContent[I+J-1];","                  N:=VGroupList.IndexOf(CurrentLine);","                  If N>=0 Then Begin","                    VGroup:=VGroupList.Objects[N] As TVGroup;","                    VGroup.DisplayList.Add(VCallout.Name);","                    VCallout.GroupList.AddObject(CurrentLine,VGroup);","                  end;","                End;","                I:=I+J;","                end Else I:=I+1;","              End;","              CurrentLine:=FileContent[I];","              If Pos('PortList lines:',CurrentLine)<>1 Then Begin","                LogMessage(0,'Error parsing file. Keyword ""PortList lines:"" expected at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              End;","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try ChunkLength:=StrToInt(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not an integer after keyword ""PortList lines:"" at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              end;","              If ChunkLength>0 Then Begin","                For J:=1 To ChunkLength Do Begin","                  If I+1+J>=FileContent.Count Then Begin","                    LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1+J)+'.');","                    FileContent.Free;","                    Exit;","                  End;","                  CurrentLine:=FileContent[I+J];","                  VConnectionPort:=TVConnectionPort.Create;","                  VConnectionPort.PortType:=GetValByName(CurrentLine,'PortType');","                  VConnectionPort.AR:=GetValByName(CurrentLine,'AR');","                  VConnectionPort.X:=StrToFloat(GetValByName(CurrentLine,'X'));","                  VConnectionPort.Y:=StrToFloat(GetValByName(CurrentLine,'Y'));","                  VConnectionPort.ConnectedObject:=GetNextToken(GetValByName(CurrentLine,'Conn'),","                          VConnectionPort.ConnectedPort,':');","                  VCallout.PortList.AddObject(VConnectionPort.PortType,VConnectionPort);",,"{   FileContent.Add('PortType='+ConnPort.PortType+' AR='+ConnPort.AR+' X='+","               FloatToStr(ConnPort.X)+' Y='+FloatToStr(ConnPort.Y)+' Conn='+ConnPort.ConnectedObject+':'+ConnPort.ConnectedPort);",},"                End;","                I:=I+1+J;","              end Else I:=I+1;",,"              CurrentLine:=FileContent[I];","              If Pos('ActionList lines:',CurrentLine)=1 Then Begin","        {          LogMessage(0,'Error parsing file. Keyword ""ActionList lines:"" expected at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              End;}","              Buf:=CurrentLine;","              KeyWord:=GetNextToken(Buf,ParsedBuf,':');","              Try ChunkLength:=StrToInt(ParsedBuf)","              Except","                LogMessage(0,'Error parsing file. Not an integer after keyword ""ActionList lines:"" at line '+IntToStr(I)+'.');","                FileContent.Free;","                Exit;","              end;","              If ChunkLength>0 Then Begin","                For J:=1 To ChunkLength Do Begin","                  If I+J>=FileContent.Count Then Begin","                    LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+J)+'.');","                    FileContent.Free;","                    Exit;","                  End;","                  CurrentLine:=FileContent[I+J];","                  VCallout.ActionList.Add(CurrentLine);","                End;","                I:=I+J;","              end Else I:=I+1;","            End;",,,,"              Continue;","            end;",,"      ","                  If Pos('Group name:',CurrentLine)=1 Then Begin","                    Buf:=CurrentLine;","                    KeyWord:=GetNextToken(Buf,ParsedBuf,':');","                    If ParsedBuf='' Then Begin","                      LogMessage(0,'Error parsing file. Empty group name after keyword at line '+IntToStr(I)+'.');","                      FileContent.Free;","                      Exit;","                    End;","                    If I+1>=FileContent.Count Then Begin","                      LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1)+'. Connection chunk length expected');","                      FileContent.Free;","                      Exit;","                    End;",,"                    //create Group here","                    VGroup:=TVGroup.Create;","                    VGroup.Name:=ParsedBuf;","                    VGroupList.AddObject(VGroup.Name,VGroup);","                    CurrentLine:=FileContent[I+1];",,"                    VGroup.Glue:=GetValByName(CurrentLine,'Glue')='1';","                    VGroup.Visible:=GetValByName(CurrentLine,'Visible')='1';","                    VGroup.Active:=GetValByName(CurrentLine,'Active')='1';",,"                    I:=I+2;","                    CurrentLine:=FileContent[I];","                    Continue;","                  end;",,"      ","      If Pos('View:',CurrentLine)=1 Then Begin","        Buf:=CurrentLine;","        KeyWord:=GetNextToken(Buf,ParsedBuf,':');","        If ParsedBuf='' Then Begin","          LogMessage(0,'Error parsing file. Empty view name after keyword at line '+IntToStr(I)+'.');","          FileContent.Free;","          Exit;","        End;","        If I+1>=FileContent.Count Then Begin","          LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1)+'. View chunk length expected');","          FileContent.Free;","          Exit;","        End;","        CurrentLine:=FileContent[I+1];","        If Pos('Lines:',CurrentLine)<>1 Then Begin","          LogMessage(0,'Error parsing file. Keyword ""Lines:"" expected at line '+IntToStr(I+1)+'.');","          FileContent.Free;","          Exit;","        End;","        Buf:=CurrentLine;","        Keyword:=GetNextToken(Buf,ParsedBuf,':');","        Try ChunkLength:=StrToInt(ParsedBuf)","        Except","          LogMessage(0,'Error parsing file. Not an integer after keyword ""Lines:"" at line '+IntToStr(I+1)+'.');","          FileContent.Free;","          Exit;","        End;","        For J:=1 To ChunkLength Do Begin","          If I+1+J>=FileContent.Count Then Begin","            LogMessage(0,'Error parsing file. Unexpected EOF at line '+IntToStr(I+1+J)+'.');","            FileContent.Free;","            Exit;","          End;","          CurrentLine:=FileContent[I+1+J];","          View.Add(CurrentLine);","        End;","        I:=I+1+J;","      End;","      Inc(I);","    Until I=FileContent.Count;","  end;","  FileContent.Free;",end
Callout name:CommCallout33
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.LoadFile
Text:comment
Callout name:SrcCallout34
Style:X=0 Y=0 W=150 H=440 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.SaveFile
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.SaveFile"
Text:"Procedure TVScene.SaveFile(FileName:String);","Var FileContent:TStringList;","    I,J,JCount:Longint;Curl:TVCurl;","    VObject:TVObject;VConnection:TVConnection;","    VGroup:TVGroup;VCallout:TVCallout;","    Port:TVPort; ConnPort:TVConnectionPort;","    Buf:String;",Begin,"  FileContent:=TStringList.Create; ","  If VGroupList.Count>0 Then","    For I:=0 To VGroupList.Count-1 Do Begin","      VGroup:=VGroupList.Objects[I] As TVGroup;","      FileContent.Add('Group name:'+VGroup.Name);","      If VGroup.Glue Then Buf:='Glue=1' Else Buf:='Glue=0';","      If VGroup.Active Then Buf:=Buf+' Active=1' Else Buf:=Buf+' Active=0';","      If VGroup.Visible Then Buf:=Buf+' Visible=1' Else Buf:=Buf+' Visible=0';","      FileContent.Add(Buf);","{      FileContent.Add('GroupList lines:'+IntToStr(VGroup.DisplayList.Count));","      If VGroup.DisplayList.Count>0 Then","        For J:=0 To VGroup.DisplayList.Count-1 Do Begin","          FileContent.Add(VGroup.DisplayList[J]);","        end;}","    end;",,"  If VCurlList.Count>0 Then","    For I:=0 To VCurlList.Count-1 Do Begin","      Curl:=VCurlList.Objects[I] As TVCurl;","      FileContent.Add('Curl name:'+Curl.Name);","      FileContent.Add('Lines:'+IntToStr(Curl.DisplayList.Count));","      FileContent.AddStrings(Curl.DisplayList);","    end;","  If VObjectList.Count>0 Then","    For I:=0 To VObjectList.Count-1 Do Begin","      VObject:=VObjectList.Objects[I] As TVObject;","      FileContent.Add('Object name:'+VObject.Name);","      FileContent.Add('X:'+FloatToStr(VObject.X));","      FileContent.Add('Y:'+FloatToStr(VObject.Y));","      FileContent.Add('A:'+FloatToStr(VObject.A));","      FileContent.Add('S:'+FloatToStr(VObject.S));","      JCount:=0;","      If VObject.DisplayList.Count>0 Then","        For J:=0 To VObject.DisplayList.Count-1 Do Begin","          If Pos('Unscaled ',VObject.DisplayList[J])=1 Then Continue;","          Inc(JCount);","        End;","      FileContent.Add('DisplayList lines:'+IntToStr(JCount));","      If VObject.DisplayList.Count>0 Then","        For J:=0 To VObject.DisplayList.Count-1 Do Begin","          If Pos('Unscaled ',VObject.DisplayList[J])=1 Then Continue;","          FileContent.Add(VObject.DisplayList[J]);","        End;","      FileContent.Add('PortList lines:'+IntToStr(VObject.PortList.Count));","      If VObject.PortList.Count>0 Then Begin","        For J:=0 To VObject.PortList.Count-1 Do Begin","          Port:=VObject.PortList.Objects[J] As TVPort;","          Buf:='Name='+Port.Name+' '+'AR='+Port.AR;","          If Port.AR='A'","          Then Buf:=Buf+' X='+FloatToStr(Port.AX)+' Y='+FloatToStr(Port.AY)","          Else Buf:=Buf+' X='+FloatToStr(Port.X)+' Y='+FloatToStr(Port.Y);","          Buf:=Buf+' Conn='+Port.Connection+' Port='+Port.ConnectionPort;","          FileContent.Add(Buf);","        End;","      End;","      FileContent.Add('NonPortConnectionList lines:'+IntToStr(VObject.NonPortConnectionList.Count));","      If VObject.NonPortConnectionList.Count>0 Then","      FileContent.AddStrings(VObject.NonPortConnectionList);","      FileContent.Add('GroupList lines:'+IntToStr(VObject.GroupList.Count));","      If VObject.GroupList.Count>0 Then","      FileContent.AddStrings(VObject.GroupList);","      FileContent.Add('ActionList lines:'+IntToStr(VObject.ActionList.Count));","      If VObject.ActionList.Count>0 Then","      FileContent.AddStrings(VObject.ActionList);",,"    end;",,"    If VConnectionList.Count>0 Then","      For I:=0 To VConnectionList.Count-1 Do Begin","        VConnection:=VConnectionList.Objects[I] As TVConnection;","        FileContent.Add('Connection name:'+VConnection.Name);","        FileContent.Add('X:'+FloatToStr(VConnection.X));","        FileContent.Add('Y:'+FloatToStr(VConnection.Y));","        FileContent.Add('StartObj:'+VConnection.StartObj);","        FileContent.Add('EndObj:'+VConnection.EndObj);","        FileContent.Add('Style:'+VConnection.Style);","        FileContent.Add('GroupList lines:'+IntToStr(VConnection.GroupList.Count));","        If VConnection.GroupList.Count>0 Then","          FileContent.AddStrings(VConnection.GroupList);",,"        FileContent.Add('PortList lines:'+IntToStr(VConnection.PortList.Count));","        If VConnection.PortList.Count>0 Then","          For J:=0 To VConnection.PortList.Count-1 Do Begin","            ConnPort:=VConnection.PortList.Objects[J] As TVConnectionPort;","            FileContent.Add('PortType='+ConnPort.PortType+' AR='+ConnPort.AR+' X='+","               FloatToStr(ConnPort.X)+' Y='+FloatToStr(ConnPort.Y)+' Conn='+ConnPort.ConnectedObject+':'+ConnPort.ConnectedPort);","          end;","      end;","    If VCalloutList.Count>0 Then","         For I:=0 To VCalloutList.Count-1 Do Begin","           VCallout:=VCalloutList.Objects[I] As TVCallout;","           FileContent.Add('Callout name:'+VCallout.Name);","           FileContent.Add('X:'+FloatToStr(VCallout.X));","           FileContent.Add('Y:'+FloatToStr(VCallout.Y));","           FileContent.Add('W:'+FloatToStr(VCallout.W));","           FileContent.Add('H:'+FloatToStr(VCallout.H));",,"           FileContent.Add('RelatedObj:'+VCallout.RelatedObj);","           FileContent.Add('Style:'+VCallout.Style);","           FileContent.Add('Source:'+VCallout.Source);","        {   If VCallout.Source='' Then FileContent.Add('Text:'+VCallout.Text)","           Else FileContent.Add('Text:');}","           FileContent.Add('Text:'+VCallout.Text);",,"           FileContent.Add('GroupList lines:'+IntToStr(VCallout.GroupList.Count));","           If VCallout.GroupList.Count>0 Then","             FileContent.AddStrings(VCallout.GroupList);",,"           FileContent.Add('PortList lines:'+IntToStr(VCallout.PortList.Count));","           If VCallout.PortList.Count>0 Then","             For J:=0 To VCallout.PortList.Count-1 Do Begin","               ConnPort:=VCallout.PortList.Objects[J] As TVConnectionPort;","               FileContent.Add('PortType='+ConnPort.PortType+' AR='+ConnPort.AR+' X='+","                  FloatToStr(ConnPort.X)+' Y='+FloatToStr(ConnPort.Y)+' Conn='+ConnPort.ConnectedObject+':'+ConnPort.ConnectedPort);","             end;","           FileContent.Add('ActionList lines:'+IntToStr(VCallout.ActionList.Count));","           If VCallout.ActionList.Count>0 Then","           FileContent.AddStrings(VCallout.ActionList);",,"         end;","  If View.Count>0 Then Begin","    FileContent.Add('View: Main');","    FileContent.Add('Lines:'+IntToStr(View.Count));","    FileContent.AddStrings(View);","  end;",,"  FileContent.SaveToFile(FileName);","  FileContent.Free;",end
Callout name:CommCallout34
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.SaveFile
Text:comment
Callout name:SrcCallout35
Style:X=0 Y=0 W=150 H=70 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=ShellsAreCrossed
Source:self::system_o:sourcehelper CADEngine.pas "ShellsAreCrossed"
Text:"Function ShellsAreCrossed(Shell1,Shell2:TShell):Boolean;","Var S1Xmin,S1XMax,S1Ymin,S1Ymax:Extended;","    S2Xmin,S2XMax,S2Ymin,S2Ymax:Extended;","    XpCross,YpCross:Boolean;",Begin,"  S1Xmin:=Min(Shell1.X1,Shell1.X2);","  S1XMax:=Max(Shell1.X1,Shell1.X2);","  S1Ymin:=Min(Shell1.Y1,Shell1.Y2);","  S1Ymax:=Max(Shell1.Y1,Shell1.Y2);","  S2Xmin:=Min(Shell2.X1,Shell2.X2);","  S2XMax:=Max(Shell2.X1,Shell2.X2);","  S2Ymin:=Min(Shell2.Y1,Shell2.Y2);","  S2Ymax:=Max(Shell2.Y1,Shell2.Y2);","  XPCross:=((S1Xmin<=S2Xmin) And (S2Xmin<=S1Xmax)) Or ((S2Xmin<=S1Xmin) And (S1Xmin<=S2Xmax));","  YPCross:=((S1Ymin<=S2Ymin) And (S2Ymin<=S1Ymax)) Or ((S2Ymin<=S1Ymin) And (S1Ymin<=S2Ymax));","  Result:=XPCross And YpCross;",end
Callout name:CommCallout35
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=ShellsAreCrossed
Text:comment
Callout name:SrcCallout36
Style:X=0 Y=0 W=150 H=50 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=InfiniteShell
Source:self::system_o:sourcehelper CADEngine.pas "InfiniteShell"
Text:"Function InfiniteShell(Shell:TShell):Boolean;",Begin,"  Result:=","   (Shell.X1=Math.maxExtended) Or","   (Shell.X1=-Math.maxExtended+Math.minExtended) Or","   (Shell.Y1=Math.maxExtended) Or","   (Shell.Y1=-Math.maxExtended+Math.minExtended) Or","   (Shell.X2=Math.maxExtended) Or","   (Shell.X2=-Math.maxExtended+Math.minExtended) Or","   (Shell.Y2=Math.maxExtended) Or","   (Shell.Y2=-Math.maxExtended+Math.minExtended);",end
Callout name:CommCallout36
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=InfiniteShell
Text:comment
Callout name:SrcCallout37
Style:X=0 Y=0 W=150 H=200 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.UpdateVisibility
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.UpdateVisibility"
Text:"Procedure TVScene.UpdateVisibility;","Var I:Longint;","    Obj:TVObject;","    Curl:TVCurl;","    Callout:TVCallout;","    ObjDiam:Extended;","    SelHandle:TVSelHandle;",Begin,"  If Self.VCurlList.Count>0 Then","      For I:=0 To Self.VCurlList.Count-1 Do Begin","        Curl:=Self.VCurlList.Objects[I] As TVCurl;","          If ShellsAreCrossed(ScreenShell,Curl.Shell)","          Then Curl.OffScreen:=False Else Curl.OffScreen:=True;","          If InfiniteShell(Curl.Shell)","          Then Begin","            Curl.TooSmall:=False;","          end Else Begin","            If Self.ClipMax Then ObjDiam:=Max(Curl.Shell.X2-Curl.Shell.X1,Curl.Shell.Y2-Curl.Shell.Y1)","            Else ObjDiam:=Min(Curl.Shell.X2-Curl.Shell.X1,Curl.Shell.Y2-Curl.Shell.Y1);","            Curl.TooSmall:=ObjDiam/Self.Drawer.ViewScale<Self.ClipSize;","          end;","      end;",,"  If Self.VObjectList.Count>0 Then","    For I:=0 To Self.VObjectList.Count-1 Do Begin","      Obj:=Self.VObjectList.Objects[I] As TVObject;","        If ShellsAreCrossed(ScreenShell,Obj.Shell)","        Then Obj.OffScreen:=False Else Obj.OffScreen:=True;","      If InfiniteShell(Obj.Shell)","      Then Begin","        Obj.TooSmall:=False;","      end Else Begin","        If Self.ClipMax Then ObjDiam:=Max(Obj.Shell.X2-Obj.Shell.X1,Obj.Shell.Y2-Obj.Shell.Y1)","        Else ObjDiam:=Min(Obj.Shell.X2-Obj.Shell.X1,Obj.Shell.Y2-Obj.Shell.Y1);","        Obj.TooSmall:=ObjDiam/Self.Drawer.ViewScale<Self.ClipSize;","      end;","    end;",,"    If Self.VCalloutList.Count>0 Then","    For I:=0 To Self.VCalloutList.Count-1 Do Begin","      Callout:=Self.VCalloutList.Objects[I] As TVCallout;","        If ShellsAreCrossed(ScreenShell,Callout.Shell)","        Then Callout.OffScreen:=False Else Callout.OffScreen:=True;","      If InfiniteShell(Callout.Shell)","      Then Begin","        Callout.TooSmall:=False;","      end Else Begin","        If Self.ClipMax Then ObjDiam:=Max(Callout.Shell.X2-Callout.Shell.X1,Callout.Shell.Y2-Callout.Shell.Y1)","        Else ObjDiam:=Min(Callout.Shell.X2-Callout.Shell.X1,Callout.Shell.Y2-Callout.Shell.Y1);","        Callout.TooSmall:=ObjDiam/Self.Drawer.ViewScale<Self.ClipSize;","      end;","    end;",,"    If Self.VHandleList.Count>0 Then","    For I:=0 To Self.VHandleList.Count-1 Do Begin","      SelHandle:=Self.VHandleList.Objects[I] As TVSelHandle;","      Self.Drawer.WtoS(SelHandle.Xw,SelHandle.Yw,SelHandle.X,SelHandle.Y);","    end;",,end
Callout name:CommCallout37
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.UpdateVisibility
Text:comment
Callout name:SrcCallout38
Style:X=0 Y=0 W=150 H=90 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.BuildCurlsUnder
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.BuildCurlsUnder"
Text:"Function TVScene.BuildCurlsUnder(X,Y:Extended):TStringList;","Var I,K:Longint;","   ResultList:TStringList;","   Curl:TVCurl;","   ActiveObject:Boolean;",Begin,"    ResultList:=TStringList.Create;","    If VCurlList.Count>0 Then Begin","      For I:=0 To VCurlList.Count-1 Do Begin","        Curl:=VCurlList.Objects[I] As TVCurl;","{        //Dont check objects, belongs to disabled group","        ActiveObject:=True;","        If Curl.GroupList.Count>0 Then","          For K:=0 To Obj.GroupList.Count-1 Do Begin","            If Not (Obj.GroupList.Objects[K] As TVGroup).Active Then ActiveObject:=False;","          end;","        If Not ActiveObject Then Continue;}","        If PointInWRect(X,Y,Curl.Shell.X1,Curl.Shell.Y1,Curl.Shell.X2,Curl.Shell.Y2) Then","          ResultList.AddObject(Curl.Name,Curl);","      End;","    End;","    Result:=ResultList;",end
Callout name:CommCallout38
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.BuildCurlsUnder
Text:comment
Callout name:SrcCallout39
Style:X=0 Y=0 W=150 H=90 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.BuildObjectsUnder
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.BuildObjectsUnder"
Text:"Function TVScene.BuildObjectsUnder(X,Y:Extended):TStringList;","Var I,K:Longint;","   ResultList:TStringList;","   Obj:TVObject;","   ActiveObject:Boolean;",Begin,"    ResultList:=TStringList.Create;","    If VObjectList.Count>0 Then Begin","      For I:=0 To VObjectList.Count-1 Do Begin","        Obj:=VObjectList.Objects[I] As TVObject;","        //Dont check objects, belongs to disabled group","        ActiveObject:=True;","        If Obj.GroupList.Count>0 Then","          For K:=0 To Obj.GroupList.Count-1 Do Begin","            If Not (Obj.GroupList.Objects[K] As TVGroup).Active Then ActiveObject:=False;","          end;","        If Not ActiveObject Then Continue;","        If PointInWRect(X,Y,Obj.Shell.X1,Obj.Shell.Y1,Obj.Shell.X2,Obj.Shell.Y2) Then","          ResultList.AddObject(Obj.Name,Obj);","      End;","    End;","    Result:=ResultList;",end
Callout name:CommCallout39
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.BuildObjectsUnder
Text:comment
Callout name:SrcCallout40
Style:X=0 Y=0 W=150 H=90 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.BuildConnectionsUnder
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.BuildConnectionsUnder"
Text:"Function TVScene.BuildConnectionsUnder(X,Y:Extended):TStringList;","Var I,K:Longint;","   ResultList:TStringList;","   Conn:TVConnection;","   ActiveObject:Boolean;",Begin,"  ","    ResultList:=TStringList.Create;","    If VConnectionList.Count>0 Then Begin","      For I:=0 To VConnectionList.Count-1 Do Begin","        Conn:=VConnectionList.Objects[I] As TVConnection;","        //Dont check objects, belongs to disabled group","        ActiveObject:=True;","        If Conn.GroupList.Count>0 Then","          For K:=0 To Conn.GroupList.Count-1 Do Begin","            If Not (Conn.GroupList.Objects[K] As TVGroup).Active Then ActiveObject:=False;","          end;","        If Not ActiveObject Then Continue;","        If PointInWRect(X,Y,Conn.Shell.X1,Conn.Shell.Y1,Conn.Shell.X2,Conn.Shell.Y2) Then","          ResultList.AddObject(Conn.Name,Conn);","      End;","    End;","    Result:=ResultList;",end
Callout name:CommCallout40
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.BuildConnectionsUnder
Text:comment
Callout name:SrcCallout41
Style:X=0 Y=0 W=150 H=90 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.BuildCalloutsUnder
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.BuildCalloutsUnder"
Text:"Function TVScene.BuildCalloutsUnder(X,Y:Extended):TStringList;","Var I,K:Longint;","   ResultList:TStringList;","   Callout:TVCallout;","   ActiveObject:Boolean;",Begin,"    ResultList:=TStringList.Create;","    If VCalloutList.Count>0 Then Begin","      For I:=0 To VCalloutList.Count-1 Do Begin","        Callout:=VCalloutList.Objects[I] As TVCallout;","        //Dont check objects, belongs to disabled group","        ActiveObject:=True;","        If Callout.GroupList.Count>0 Then","          For K:=0 To Callout.GroupList.Count-1 Do Begin","            If Not (Callout.GroupList.Objects[K] As TVGroup).Active Then ActiveObject:=False;","          end;","        If Not ActiveObject Then Continue;","        If PointInWRect(X,Y,Callout.Shell.X1,Callout.Shell.Y1,Callout.Shell.X2,Callout.Shell.Y2) Then","          ResultList.AddObject(Callout.Name,Callout);","      End;","    End;","    Result:=ResultList;",end
Callout name:CommCallout41
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.BuildCalloutsUnder
Text:comment
Callout name:SrcCallout42
Style:X=0 Y=0 W=150 H=790 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=TVScene.ExecCommand
Source:self::system_o:sourcehelper CADEngine.pas "TVScene.ExecCommand"
Text:"Procedure TVScene.ExecCommand(Command:String; Acc:TAcceleratedCommand; Depth:Longint);","Var I,J,N,N1:Longint; G,GX,Gr,GY,x1,x2,x3,x4,y1,y2,y3,y4,lx,ly,rx,ry:Extended;","    Cmd,TemplName,sX,sY,sA,sS,Buf,ParsedBuf:String;","    Sm,Rm,Scm,tmpm,OldTransM,NewTransM:TMatrix2D;","    DisplayList:TStringList;","    X,Y,A,S:Extended;","    SubDrawer:TDrawer;","    Curl:TVCurl; Obj,Obj1:TVObject; Templ:TVTemplate; Connection:TVConnection; Group:TVGroup; Callout:TVCallout;","    DebugC:String;DebugAcc:TAcceleratedCommand;","    //потом убрать в дравер или ещё куда","    ULx,ULy,URx,URy,LLx,LLy,LRx,LRy:Extended;","    TemplDiam:Extended;",Begin,"  Buf:=Command;","  Cmd:=GetNextToken(Buf,ParsedBuf,' ');","  Buf:=ParsedBuf;","  Case Cmd Of","    'DrawCurl': Begin","      N:=VCurlList.IndexOf(Buf);","      Curl:=VCurlList.Objects[N] As TVCurl;","      If Clip Then Begin","        If Curl.TooSmall Then Exit;","        If Curl.OffScreen Then Exit;","      End;","      DisplayList:=Curl.DisplayList;","      If DisplayList.Count>0 Then","        For J:=0 To DisplayList.Count-1 Do Begin","          DebugC:=DisplayList[J];","          DebugAcc:=(DisplayList.Objects[J] As TAccObject).AcceleratedCommand;","          Drawer.ExecCommand(DebugC,DebugAcc);","        End;","      If ShowShells Then Begin","        Drawer.ExecCommand('SetColor clRed',ZeroAcc);","        Drawer.ExecCommand('SetWidth 1',ZeroAcc);","        Drawer.ExecCommand('MoveTo '+FloatToStr(Curl.Shell.X1)+','+FloatToStr(Curl.Shell.Y1),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Curl.Shell.X1)+','+FloatToStr(Curl.Shell.Y2),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Curl.Shell.X2)+','+FloatToStr(Curl.Shell.Y2),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Curl.Shell.X2)+','+FloatToStr(Curl.Shell.Y1),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Curl.Shell.X1)+','+FloatToStr(Curl.Shell.Y1),ZeroAcc);","      End;","    End;","    'DrawConnection': Begin","        N:=VConnectionList.IndexOf(Buf);","        Connection:=VConnectionList.Objects[N] As TVConnection;","        If Connection.GroupList.Count>0 Then","        For J:=0 To Connection.GroupList.Count-1 Do Begin","          Group:=Connection.GroupList.Objects[J] As TVGroup;","          If Not Group.Visible Then Exit;","        End;","        If Clip Then Begin","          //соединение не рисуется, если оно ведёт к невидимому объекту (отключенный слой)","          N:=VObjectList.IndexOf(Connection.StartObj);","          If N<0 Then Exit;","          Obj:=VObjectList.Objects[N] As TVObject;","          If Obj.TooSmall Then Exit;","          If Obj.GroupList.Count>0 Then","            For J:=0 To Obj.GroupList.Count-1 Do Begin","              Group:=Obj.GroupList.Objects[J] As TVGroup;","              If Not Group.Visible Then Exit;","            End;","          N:=VObjectList.IndexOf(Connection.EndObj);","          If N<0 Then Exit;","          Obj:=VObjectList.Objects[N] As TVObject;","          If Obj.TooSmall Then Exit;","          If Obj.GroupList.Count>0 Then","            For J:=0 To Obj.GroupList.Count-1 Do Begin","              Group:=Obj.GroupList.Objects[J] As TVGroup;","              If Not Group.Visible Then Exit;","            End;","          If {Углы (или оболочка?)экрана не попадают в оболочку и оболочка не попадает в экран}","           ((Not PointInWrect(ScreenShell.X1,ScreenShell.Y1,Connection.Shell.X1,Connection.Shell.Y1,Connection.Shell.X2,Connection.Shell.Y2)) And","            (Not PointInWrect(ScreenShell.X2,ScreenShell.Y2,Connection.Shell.X1,Connection.Shell.Y1,Connection.Shell.X2,Connection.Shell.Y2)) And","            (Not PointInWrect(ScreenShell.X1,ScreenShell.Y2,Connection.Shell.X1,Connection.Shell.Y1,Connection.Shell.X2,Connection.Shell.Y2)) And","            (Not PointInWrect(ScreenShell.X2,ScreenShell.Y1,Connection.Shell.X1,Connection.Shell.Y1,Connection.Shell.X2,Connection.Shell.Y2))) And","           ","           ((Not PointInWrect(Connection.Shell.X1,Connection.Shell.Y1,ScreenShell.X1,ScreenShell.Y1,ScreenShell.X2,ScreenShell.Y2)) And","            (Not PointInWrect(Connection.Shell.X2,Connection.Shell.Y2,ScreenShell.X1,ScreenShell.Y1,ScreenShell.X2,ScreenShell.Y2)) And","            (Not PointInWrect(Connection.Shell.X1,Connection.Shell.Y2,ScreenShell.X1,ScreenShell.Y1,ScreenShell.X2,ScreenShell.Y2)) And","            (Not PointInWrect(Connection.Shell.X2,Connection.Shell.Y1,ScreenShell.X1,ScreenShell.Y1,ScreenShell.X2,ScreenShell.Y2)))","          Then Exit;","        End;","        DisplayList:=Connection.DisplayList;","        If DisplayList.Count>0 Then","          For J:=0 To DisplayList.Count-1 Do Begin","            DebugC:=DisplayList[J];","            DebugAcc:=(DisplayList.Objects[J] As TAccObject).AcceleratedCommand;","            Drawer.ExecCommand(DebugC,DebugAcc);","          End;","        If ShowShells Then Begin","          Drawer.ExecCommand('SetColor clRed',ZeroAcc);","          Drawer.ExecCommand('SetWidth 1',ZeroAcc);","          Drawer.ExecCommand('MoveTo '+FloatToStr(Connection.Shell.X1)+','+FloatToStr(Connection.Shell.Y1),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Connection.Shell.X1)+','+FloatToStr(Connection.Shell.Y2),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Connection.Shell.X2)+','+FloatToStr(Connection.Shell.Y2),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Connection.Shell.X2)+','+FloatToStr(Connection.Shell.Y1),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Connection.Shell.X1)+','+FloatToStr(Connection.Shell.Y1),ZeroAcc);","        End;","      End;","   'DrawObject': Begin","      N:=VObjectList.IndexOf(Buf);","      If N<0 Then Exit;","      Obj:=VObjectList.Objects[N] As TVObject;","      If Obj.GroupList.Count>0 Then","        For J:=0 To Obj.GroupList.Count-1 Do Begin","          Group:=Obj.GroupList.Objects[J] As TVGroup;","          If Not Group.Visible Then Exit;","        End;","      If Clip Then Begin","        If Obj.TooSmall Then Exit;","        If Obj.OffScreen Then Exit;","      End;","      DisplayList:=Obj.DisplayList;","      Sm:=GenShift(Obj.X,Obj.Y);","      Rm:=GenRotate(Obj.X,Obj.Y,Obj.A/180*pi);","      Scm:=GenScale(Obj.X,Obj.Y,Obj.S,Obj.S);","      tmpm:=MulMat2D(Sm,Rm);","      tmpm:=MulMat2D(Tmpm,Scm);","      OldTransM:=Drawer.TransM;","      NewTransM:=MulMat2D(tmpm,Drawer.TransM);","      Drawer.TransM:=NewTransM;","      If DisplayList.Count>0 Then","        For J:=0 To DisplayList.Count-1 Do Begin","          //Acc:=?","          If Pos('DrawTemplate',DisplayList[J])=1 Then Begin","            DebugC:=DisplayList[J];",,"            ExecCommand(DebugC,ZeroAcc,Depth);","          end Else Begin","            DebugC:=DisplayList[J];","            DebugAcc:=(DisplayList.Objects[J] As TAccObject).AcceleratedCommand;","            If Pos('Unscaled',DisplayList[J])=1 Then Begin","              Drawer.TransM:=OldTransM;","              Drawer.ExecCommand(DebugC,DebugAcc);","            End Else Begin","              Drawer.TransM:=NewTransM;","              Drawer.ExecCommand(DebugC,DebugAcc);","            End;","          End;","        End;","      Drawer.TransM:=OldTransM;",,"      If ShowShells Then Begin","        Drawer.ExecCommand('SetColor clRed',ZeroAcc);","        Drawer.ExecCommand('SetWidth 1',ZeroAcc);","        Drawer.ExecCommand('MoveTo '+FloatToStr(Obj.Shell.X1)+','+FloatToStr(Obj.Shell.Y1),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Obj.Shell.X1)+','+FloatToStr(Obj.Shell.Y2),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Obj.Shell.X2)+','+FloatToStr(Obj.Shell.Y2),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Obj.Shell.X2)+','+FloatToStr(Obj.Shell.Y1),ZeroAcc);","        Drawer.ExecCommand('LineTo '+FloatToStr(Obj.Shell.X1)+','+FloatToStr(Obj.Shell.Y1),ZeroAcc);","      End;","    End;","   'DrawTemplate': Begin","      If Depth>MaxDisplayedDepth Then Exit;","      TemplName:=GetNextToken(Buf,ParsedBuf,' ');","      Buf:=ParsedBuf;","      sX:=GetNextToken(Buf,ParsedBuf,',');","      Buf:=ParsedBuf;","      sY:=GetNextToken(Buf,ParsedBuf,',');","      Buf:=ParsedBuf;","      sA:=GetNextToken(Buf,ParsedBuf,',');","      sS:=ParsedBuf;","      X:=StrToFloat(sX);","      Y:=StrToFloat(sY);","      A:=StrToFloat(sA);","      S:=StrToFloat(sS);","      N1:=VTemplateList.IndexOf(TemplName);","      If N1<0 Then exit;","      Templ:=VTemplateList.Objects[N1] As TVTemplate;","      If Self.Clip Then Begin",,"        If not InfiniteShell(Templ.Shell) Then","          If Self.ClipMax Then TemplDiam:=Max(Templ.Shell.X2-Templ.Shell.X1,Templ.Shell.Y2-Templ.Shell.Y1)","          Else TemplDiam:=Min(Templ.Shell.X2-Templ.Shell.X1,Templ.Shell.Y2-Templ.Shell.Y1);","          ","            ","      end;","      DisplayList:=Templ.DisplayList;","      Sm:=GenShift(X,Y);","      Rm:=GenRotate(X,Y,A/180*pi);","      Scm:=GenScale(X,Y,S,S);","      tmpm:=MulMat2D(Sm,Rm);","      tmpm:=MulMat2D(Tmpm,Scm);","      OldTransM:=Drawer.TransM;","      Drawer.TransM:=MulMat2D(tmpm,Drawer.TransM);","      If DisplayList.Count>0 Then","        For J:=0 To DisplayList.Count-1 Do Begin","          ","          If Pos('DrawTemplate',DisplayList[J])=1 Then Begin","            DebugC:=DisplayList[J];","            DebugAcc:=(DisplayList.Objects[J] As TAccObject).AcceleratedCommand;","            ExecCommand(DebugC,DebugAcc,Depth+1);","          end Else Begin","            DebugC:=DisplayList[J];","            DebugAcc:=(DisplayList.Objects[J] As TAccObject).AcceleratedCommand;","            Drawer.ExecCommand(DebugC,DebugAcc);","          end;","        End;","      Drawer.TransM:=OldTransM;","    End;","    'DrawCallout': Begin","        N:=VCalloutList.IndexOf(Buf);","        Callout:=VCalloutList.Objects[N] As TVCallout;","        If Callout.GroupList.Count>0 Then","        For J:=0 To Callout.GroupList.Count-1 Do Begin","          Group:=Callout.GroupList.Objects[J] As TVGroup;","          If Not Group.Visible Then Exit;","        End;","        If Clip Then Begin","          If Clip Then Begin","            If Callout.TooSmall Then Exit;","            If Callout.OffScreen Then Exit;","          End;","        End;",,"          //выноска не рисуется, если оно ведёт к невидимому объекту (отключенный слой)","          N:=VObjectList.IndexOf(Callout.RelatedObj);","          If N>=0 Then Begin","            Obj:=VObjectList.Objects[N] As TVObject;","            If Obj.TooSmall Then Exit;","            If Obj.GroupList.Count>0 Then","              For J:=0 To Obj.GroupList.Count-1 Do Begin","                Group:=Obj.GroupList.Objects[J] As TVGroup;","                If Not Group.Visible Then Exit;","              End;","          end;",,"        DisplayList:=Callout.DisplayList;","        If DisplayList.Count>0 Then","          For J:=0 To DisplayList.Count-1 Do Begin","            DebugC:=DisplayList[J];","            DebugAcc:=(DisplayList.Objects[J] As TAccObject).AcceleratedCommand;","            Drawer.ExecCommand(DebugC,DebugAcc);","          End;","        If ShowShells Then Begin","          Drawer.ExecCommand('SetColor clRed',ZeroAcc);","          Drawer.ExecCommand('SetWidth 1',ZeroAcc);","          Drawer.ExecCommand('MoveTo '+FloatToStr(Callout.Shell.X1)+','+FloatToStr(Callout.Shell.Y1),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Callout.Shell.X1)+','+FloatToStr(Callout.Shell.Y2),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Callout.Shell.X2)+','+FloatToStr(Callout.Shell.Y2),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Callout.Shell.X2)+','+FloatToStr(Callout.Shell.Y1),ZeroAcc);","          Drawer.ExecCommand('LineTo '+FloatToStr(Callout.Shell.X1)+','+FloatToStr(Callout.Shell.Y1),ZeroAcc);","        End;","      End;",,,,"  Else Drawer.ExecCommand(Cmd,Acc);","  End;",End
Callout name:CommCallout42
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=TVScene.ExecCommand
Text:comment
Callout name:SrcCallout43
Style:X=0 Y=0 W=150 H=40 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=InitModule
Source:self::system_o:sourcehelper CADEngine.pas "InitModule"
Text:"Procedure InitModule;",Begin,"{  DispatcherForm.ModulesList.Items.Add('CADEngine');","  ICommands:=TStringList.Create;}",,End
Callout name:CommCallout43
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=InitModule
Text:comment
Callout name:SrcCallout44
Style:X=0 Y=0 W=150 H=50 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clYellow FontHeight=3 BIUS= Transparent=Yes BindMode=Shell RelatedObj=ExecCommand
Source:self::system_o:sourcehelper CADEngine.pas "ExecCommand"
Text:"Function ExecCommand(Command:String):String;","var B,PB,Obj,Cmd,Attr,AttrType,AttrName,AttrValue:String;","    oid,Path,Module,ClassPath,ClassName:String;",Begin,"  Obj:=GetNextToken(Command,PB,':');","  B:=PB;","  Cmd:=GetNextToken(B,PB,':');","  Attr:=PB;","  If Obj='' Then Begin",,"    If LowerCase(Cmd)='drawcurl' Then Begin","      Path:=GetNextToken(Attr,PB,'#:');","      B:=PB;","      Module:=GetNextToken(B,PB,':');","      ClassPath:=PB;","      If Module='' Then Module:='0';","      If ClassPath='' Then ClassPath:=OSPath(Path+'\metadata');","      Try",,"      Except On EConvertError Do","        LogMessage(1,'bad Module value:'+Module);","      End;","      Result:='';","    End;","  End;",End
Callout name:CommCallout44
Style:X=0 Y=0 W=50 H=30 Color=clBlack BGColor=clWhite Width=1 FontName=Tahoma FontColor=clBlack FontHeight=3 BIUS= Transparent=No BindMode=RT RelatedObj=ExecCommand
Text:comment
Callout name:Callout91
Style:X=0 Y=138.75 W=21.25 H=36.25 Color=clBlack BGColor=clSilver Width=1 FontName=Tahoma FontColor=clBlack FontHeight=1.8 BIUS= Transparent=Yes BindMode=Shell RelatedObj=Object45
Text:"имя порта ссылка на порт","имя порта ссылка на порт","имя порта ссылка на порт","имя порта ссылка на порт"
Callout name:Callout92
Style:X=141.43725 Y=701.38425 W=132.5 H=42.5 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=17.97341 BIUS= Transparent=No BindMode=None
Text:Интерфейс
Callout name:Callout93
Style:X=629.705495 Y=717.41596 W=127.5 H=40 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=17.97341 BIUS= Transparent=No BindMode=None
Text:Интерпретатор
Callout name:Callout94
Style:X=266.561988 Y=-39.5087490000001 W=72.5 H=32.5 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=15.484497 BIUS= Transparent=No BindMode=None
Text:Файлы
Callout name:Callout95
Style:X=485.035021 Y=-41.720808 W=105 H=30 Color=clBlack BGColor=$00FFFFB7 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=15.484497 BIUS= Transparent=No BindMode=None
Text:"Сетевой сервер"
Callout name:Callout96
Style:X=368.145395 Y=720.003607 W=152.5 H=47.5 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=17.97341 BIUS= Transparent=No BindMode=None
Text:"Отрисовка на экран"
Callout name:Callout97
Style:X=374.044251 Y=695.776033 W=70 H=42.5 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=5.898856 BIUS= Transparent=No BindMode=None
Text:полная,DrawScene,(Drawer:TDrawer;,"Buffer:Boolean);  "
Callout name:Callout98
Style:X=451.045908 Y=695.776033 W=60 H=35 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=5.898856 BIUS= Transparent=No BindMode=None
Text:обновление,затертого
Callout name:Callout99
Style:X=214.358834 Y=655.787236 W=72.5 H=25 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=5.898856 BIUS= Transparent=No BindMode=None
Text:"изменение масштаба/","начала координат"
Callout name:Callout100
Style:X=0 Y=145 W=20 H=20 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=1.459464 BIUS= Transparent=Yes BindMode=Shell RelatedObj=Object46
Text:"имя выноски ссылка на TVCallout"
Callout name:Callout101
Style:X=0 Y=150 W=22.5 H=22.5 Color=clBlack BGColor=clNavy Width=1 FontName=Tahoma FontColor=clBlack FontHeight=1.327169 BIUS= Transparent=Yes BindMode=Shell RelatedObj=Object47
Text:"имя группы ссылка на TVGroup"
Callout name:Callout102
Style:X=121.138743 Y=657.630631 W=67.5 H=30 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=5.898856 BIUS= Transparent=No BindMode=None
Text:"редактирование параметров","в инспекторе"
Callout name:Callout103
Style:X=122.532706 Y=613.726087 W=65 H=20 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=5.898856 BIUS= Transparent=No BindMode=None
Text:Callout/Object/Connection,GUI2Scene
Callout name:Callout104
Style:X=215.545624 Y=617.124951 W=70 H=22.5 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=5.898856 BIUS= Transparent=No BindMode=None
Text:Scene.UpdateVisibility
Callout name:Callout105
Style:X=415.001875 Y=645.735625 W=137.5 H=55 Color=clBlack BGColor=$00FFFF80 Width=1 FontName=Tahoma FontColor=clBlack FontHeight=7.783592 BIUS= Transparent=No BindMode=None
Text:DrawingPanel.Canvas.CopyRect(,"Rect(0,0,Form1.DrawingPanel.ClientWidth,","Form1.DrawingPanel.ClientHeight),","BufBitMap.Canvas,","Rect(0,0,Form1.DrawingPanel.ClientWidth,",Form1.DrawingPanel.ClientHeight));
View: Main
Lines:48
DrawObject O0_TVCurl=Class
DrawObject O1_TVPort=Class
DrawObject O2_TVTemplate=Class
DrawObject O3_TVObject=Class
DrawObject O4_TVConnectionPort=Class
DrawObject O5_TVConnection=Class
DrawObject O6_TVCallout=Class
DrawObject O7_TVGroup=Class
DrawObject O8_TVSelHandle=Class
DrawObject O9_TVScene=Class
DrawObject GetResponce
DrawObject RenderConnDisplayList
DrawObject RenderShell
DrawObject RenderObjectShell
DrawObject UpdateConnectionDisplayList
DrawObject UpdateCalloutDisplayList
DrawObject MoveObjectTo
DrawObject MoveCalloutTo
DrawObject TVCurl.Create
DrawObject TVCurl.Destroy
DrawObject TVConnection.Create
DrawObject TVConnection.Destroy
DrawObject TVTemplate.Create
DrawObject TVTemplate.Destroy
DrawObject TVObject.Create
DrawObject TVObject.Destroy
DrawObject TVCallout.Create
DrawObject TVCallout.Destroy
DrawObject TVGroup.Create
DrawObject TVGroup.Destroy
DrawObject TVScene.Create
DrawObject TVScene.Destroy
DrawObject TVScene.Clear
DrawObject TVScene.LoadFile
DrawObject TVScene.SaveFile
DrawObject ShellsAreCrossed
DrawObject InfiniteShell
DrawObject TVScene.UpdateVisibility
DrawObject TVScene.BuildCurlsUnder
DrawObject TVScene.BuildObjectsUnder
DrawObject TVScene.BuildConnectionsUnder
DrawObject TVScene.BuildCalloutsUnder
DrawObject TVScene.ExecCommand
DrawObject InitModule
DrawObject ExecCommand
DrawObject Object45
DrawObject Object46
DrawObject Object47
