First commit

This commit is contained in:
Anatoly 2025-08-20 18:27:00 +03:00
parent 713ddf52b4
commit 000979b6df
9 changed files with 789 additions and 248 deletions

View File

@ -1,10 +1,10 @@
object frm3D: Tfrm3D
Left = -8
Top = -8
Left = 1
Top = 1
BorderIcons = [biSystemMenu]
Caption = #1055#1088#1086#1089#1084#1086#1090#1088' '#1074' 3D'
ClientHeight = 705
ClientWidth = 1360
ClientHeight = 687
ClientWidth = 1342
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@ -35,15 +35,17 @@ object frm3D: Tfrm3D
object panMain: TPanel
Left = 0
Top = 0
Width = 1360
Height = 705
Width = 1342
Height = 687
Align = alClient
Caption = 'Panel2'
TabOrder = 0
ExplicitWidth = 1360
ExplicitHeight = 705
object Splitter1: TSplitter
Left = 1356
Left = 1338
Top = 42
Height = 662
Height = 644
Align = alRight
AutoSnap = False
ResizeStyle = rsUpdate
@ -53,14 +55,15 @@ object frm3D: Tfrm3D
object panUpper: TPanel
Left = 1
Top = 1
Width = 1358
Width = 1340
Height = 41
Align = alTop
BevelOuter = bvNone
Color = 15329769
TabOrder = 0
ExplicitWidth = 1358
DesignSize = (
1358
1340
41)
object SpeedButton1: TSpeedButton
Left = 8
@ -108,7 +111,7 @@ object frm3D: Tfrm3D
OnClick = SpeedButton3Click
end
object lbViewType: TLabel
Left = 1186
Left = 1168
Top = 25
Width = 163
Height = 16
@ -155,7 +158,7 @@ object frm3D: Tfrm3D
OnClick = sbSaveModelClick
end
object sbApplyScsModel: TSpeedButton
Left = 1091
Left = 1073
Top = 13
Width = 161
Height = 22
@ -169,9 +172,10 @@ object frm3D: Tfrm3D
Font.Style = []
ParentFont = False
OnClick = sbApplyScsModelClick
ExplicitLeft = 1091
end
object SpeedButton4: TSpeedButton
Left = 1258
Left = 1240
Top = 8
Width = 94
Height = 22
@ -210,30 +214,34 @@ object frm3D: Tfrm3D
object panScene: TPanel
Left = 1
Top = 42
Width = 1035
Height = 662
Width = 1017
Height = 644
Align = alClient
BevelInner = bvLowered
TabOrder = 1
ExplicitWidth = 1035
ExplicitHeight = 662
object Panel3: TPanel
Left = 2
Top = 2
Width = 1031
Height = 658
Width = 1013
Height = 640
Align = alClient
BevelOuter = bvNone
Ctl3D = False
ParentCtl3D = False
TabOrder = 0
ExplicitWidth = 1031
ExplicitHeight = 658
object GLSceneViewer: TGLSceneViewer
Left = 0
Top = 0
Width = 1031
Height = 613
Width = 1013
Height = 595
Camera = GLCamera
Buffer.BackgroundColor = 15987957
Buffer.AntiAliasing = aa2x
FieldOfView = 124.868827819824200000
FieldOfView = 123.455924987793000000
Align = alClient
OnClick = GLSceneViewerClick
OnDblClick = GLSceneViewerDblClick
@ -241,11 +249,13 @@ object frm3D: Tfrm3D
OnMouseMove = GLSceneViewerMouseMove
OnMouseUp = GLSceneViewerMouseUp
TabOrder = 0
ExplicitWidth = 1031
ExplicitHeight = 613
end
object StatusBar1: TStatusBar
Left = 0
Top = 633
Width = 1031
Top = 615
Width = 1013
Height = 25
Panels = <
item
@ -253,51 +263,59 @@ object frm3D: Tfrm3D
Width = 50
end>
OnDrawPanel = StatusBar1DrawPanel
ExplicitTop = 633
ExplicitWidth = 1031
end
object sbView: TPanel
Left = 0
Top = 613
Width = 1031
Top = 595
Width = 1013
Height = 20
Align = alBottom
Alignment = taLeftJustify
BevelInner = bvLowered
Locked = True
TabOrder = 2
ExplicitTop = 613
ExplicitWidth = 1031
end
end
end
object RzSizePanel1: TRzSizePanel
Left = 1036
Left = 1018
Top = 42
Width = 320
Height = 662
Height = 644
Align = alRight
BorderWidth = 1
HotSpotVisible = True
SizeBarWidth = 7
TabOrder = 2
VisualStyle = vsClassic
ExplicitLeft = 1036
ExplicitHeight = 662
object RzPageControl1: TRzPageControl
AlignWithMargins = True
Left = 16
Top = 4
Width = 300
Height = 654
Height = 636
ActivePage = TabSheet1
ActivePageDefault = TabSheet1
Align = alRight
TabIndex = 0
TabOrder = 0
TabStyle = tsSquareCorners
ExplicitHeight = 654
FixedDimension = 19
object TabSheet1: TRzTabSheet
Caption = #1052#1086#1076#1077#1083#1100
ExplicitHeight = 628
object panObjects: TPanel
Left = 0
Top = 0
Width = 296
Height = 628
Height = 610
Align = alClient
BevelInner = bvLowered
Font.Charset = RUSSIAN_CHARSET
@ -307,9 +325,10 @@ object frm3D: Tfrm3D
Font.Style = []
ParentFont = False
TabOrder = 0
ExplicitHeight = 628
object Splitter2: TSplitter
Left = 2
Top = 173
Top = 155
Width = 292
Height = 3
Cursor = crVSplit
@ -323,20 +342,18 @@ object frm3D: Tfrm3D
Left = 2
Top = 2
Width = 292
Height = 171
Height = 153
ActivePage = TabScsModel
Align = alClient
TabIndex = 1
TabOrder = 0
TabStyle = tsRoundCorners
OnTabClick = pcTreeTabClick
ExplicitHeight = 171
FixedDimension = 19
object TabArchModel: TRzTabSheet
Caption = #1040#1088#1093'. '#1084#1086#1076#1077#1083#1100
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
ExplicitHeight = 145
object cxGroupBox1: TcxGroupBox
Left = 0
Top = 0
@ -391,7 +408,7 @@ object frm3D: Tfrm3D
Left = 0
Top = 47
Width = 288
Height = 98
Height = 80
Align = alClient
BevelOuter = bvNone
BorderStyle = bsNone
@ -418,10 +435,12 @@ object frm3D: Tfrm3D
000000000000000000000001067200650072006500720065002C000000000000
0000000000FFFFFFFFFFFFFFFF00000000000000000000000001077200650072
007200650072006500}
ExplicitHeight = 98
end
end
object TabScsModel: TRzTabSheet
Caption = #1057#1050#1057' '#1084#1086#1076#1077#1083#1100
ExplicitHeight = 145
object cxGroupBox2: TcxGroupBox
Left = 0
Top = 0
@ -476,7 +495,7 @@ object frm3D: Tfrm3D
Left = 0
Top = 47
Width = 288
Height = 98
Height = 80
Align = alClient
BevelOuter = bvNone
BorderStyle = bsNone
@ -503,6 +522,7 @@ object frm3D: Tfrm3D
000000000000000000000001067200650072006500720065002C000000000000
0000000000FFFFFFFFFFFFFFFF00000000000000000000000001077200650072
007200650072006500}
ExplicitHeight = 98
end
object DuplicateNodeTree: TTreeView
Left = 160
@ -516,7 +536,7 @@ object frm3D: Tfrm3D
end
object pcProps: TRzPageControl
Left = 2
Top = 176
Top = 158
Width = 292
Height = 450
ActivePage = TabScsProps
@ -524,13 +544,10 @@ object frm3D: Tfrm3D
TabIndex = 1
TabOrder = 1
TabStyle = tsRoundCorners
ExplicitTop = 176
FixedDimension = 19
object TabArchProps: TRzTabSheet
Caption = #1040#1088#1093'. '#1089#1074#1086#1081#1089#1090#1074#1072
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object Panel1: TPanel
Left = 0
Top = 0
@ -2141,10 +2158,7 @@ object frm3D: Tfrm3D
end
object TabSheet2: TRzTabSheet
Caption = #1053#1072#1089#1090#1088#1086#1081#1082#1080
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
ExplicitHeight = 628
object Label10: TLabel
Left = 5
Top = 71
@ -3404,7 +3418,7 @@ object frm3D: Tfrm3D
Left = 100
Top = 57
Bitmap = {
494C01013A00B000E40210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01013A00B000000310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000F0000000010020000000000000F0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

View File

@ -530,9 +530,14 @@ type
FxObjects: TList;
FNodes: TList;
FCadList: TList; // Tolik 23/07/2025 -- ñïèñîê ëèñòîâ ïðîåêòà
FFloorsHeightArray: Array of double; // ìàññèâ âûñîò ýòàæåé
//Tolik 22/06/2025 --
//Procedure UpdateFaces(Faces: TList; Yh: Double = 0);
Procedure UpdateFaces(Faces: TList; Yh: Double = 0; aFirstLoad: boolean = true);
//Procedure UpdateFaces(Faces: TList; Yh: Double = 0; aFirstLoad: boolean = true);
function getZOrder(aCad:TF_Cad): Double;
Procedure UpdateFaces(Faces: TList; Yh: Double = 0; aFirstLoad: boolean = true; aZOrder: double = -1000);
//
procedure UpdateModelTree;
procedure UpdateScsModelTree;
@ -2007,8 +2012,25 @@ begin
my := y;
end;
function Tfrm3D.getZOrder(aCad:TF_Cad): Double;
var i: integer;
begin
Result := 0;
if FCadList.Count > 1 then
begin
for i := 0 to FCadList.Count - 1 do
begin
if TF_Cad(FCadList[i]) = aCad then
begin
result := FFloorsHeightArray[i];
break;
end;
end;
end;
end;
//procedure Tfrm3D.UpdateFaces(Faces: TList; Yh: Double = 0);
Procedure Tfrm3D.UpdateFaces(Faces: TList; Yh: Double = 0; aFirstLoad: boolean = true);
//Procedure Tfrm3D.UpdateFaces(Faces: TList; Yh: Double = 0; aFirstLoad: boolean = true);
Procedure Tfrm3D.UpdateFaces(Faces: TList; Yh: Double = 0; aFirstLoad: boolean = true; aZOrder: Double = -1000);
//const
// clrBlack : TVector = (0, 0, 0, 1);
var
@ -3949,17 +3971,28 @@ var
p2 := GetPoint(aLine, 2, HalfWidth);
//êîíòóð ïîääîíà ëîòêà Tolik 15/05/2025 --
cp1 := RotatePoint(aLine.ap1, p1^, -PI/2);
cp1.z := p1.z;
//cp1.z := p1.z;
cp1.z := aLine.actualZOrder[1];
cp2 := aLine.ap1;
cp2.z := p1.z;
//cp2.z := p1.z;
cp2.z := aLine.actualZOrder[1];
cp3 := RotatePoint(aLine.ap1, p1^, PI/2);
cp3.z := p1.z;
//cp3.z := p1.z;
cp3.z := aLine.actualZOrder[1];
cp4 := RotatePoint(aLine.ap2, p2^, -PI/2);
cp4.z := p2.z;
//cp4.z := p2.z;
cp4.z := aLine.actualZOrder[2];
cp5 := aLine.ap2;
cp5.z := p2.z;
//cp5.z := p2.z;
cp5.z := aLine.actualZOrder[2];
cp6 := RotatePoint(aLine.ap2, p2^, PI/2);
cp6.z := p2.z;
//cp6.z := p2.z;
cp6.z := aLine.actualZOrder[2];
{
ap1 := RotatePoint(aLine.ap1, p1^, -PI/2);
ap2 := RotatePoint(aLine.ap1, p1^, PI/2);
@ -4766,56 +4799,58 @@ begin
end;
begin
try
bb := TBitmap.Create;
bb.LoadFromFile(ExeDir + '\3DTextures\inner_wall_PE.bmp');
if aFirstLoad then //24/07/2025--
begin
bb := TBitmap.Create;
bb.LoadFromFile(ExeDir + '\3DTextures\inner_wall_PE.bmp');
//TubeList := TList.create;
//bb_jpg := TJPEGImage.Create;
//bb_jpg.LoadFromFile(ExeDir + '\3DTextures\inner_wall_PE.jpg');
//GLS_MAX_RENDERING_CONTEXT_NUM := 16;
//Tolik 06/04/2023 --
CreatedMaterial := nil;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\inner_wall_PE.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('wall_pe', ExeDir + '\3DTextures\inner_wall_PE.bmp');
CreatedMaterial.Material.BackProperties.Diffuse.Alpha := 0.5;
CreatedMaterial.Material.FrontProperties.Diffuse.Alpha := 0.5;
CreatedMaterial.Material.BlendingMode := bmTransparency;
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\inner_wall_PE_selected.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('wall_pe_selected', ExeDir + '\3DTextures\inner_wall_PE_selected.bmp');
CreatedMaterial.Material.BackProperties.Diffuse.Alpha := 0.5;
CreatedMaterial.Material.FrontProperties.Diffuse.Alpha := 0.5;
//CreatedMaterial.Material.BlendingMode := bmTransparency;
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
//CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\floor_PE.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('floor_pe', ExeDir + '\3DTextures\floor_PE.bmp');
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\ceiling_PE.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('ceiling_pe', ExeDir + '\3DTextures\ceiling_PE.bmp');
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\door.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('door', ExeDir + '\3DTextures\door.bmp');
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
end;
TubeList := TList.create;
//bb_jpg := TJPEGImage.Create;
//bb_jpg.LoadFromFile(ExeDir + '\3DTextures\inner_wall_PE.jpg');
//GLS_MAX_RENDERING_CONTEXT_NUM := 16;
//Tolik 06/04/2023 --
CreatedMaterial := nil;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\inner_wall_PE.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('wall_pe', ExeDir + '\3DTextures\inner_wall_PE.bmp');
CreatedMaterial.Material.BackProperties.Diffuse.Alpha := 0.5;
CreatedMaterial.Material.FrontProperties.Diffuse.Alpha := 0.5;
CreatedMaterial.Material.BlendingMode := bmTransparency;
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\inner_wall_PE_selected.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('wall_pe_selected', ExeDir + '\3DTextures\inner_wall_PE_selected.bmp');
CreatedMaterial.Material.BackProperties.Diffuse.Alpha := 0.5;
CreatedMaterial.Material.FrontProperties.Diffuse.Alpha := 0.5;
//CreatedMaterial.Material.BlendingMode := bmTransparency;
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
//CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\floor_PE.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('floor_pe', ExeDir + '\3DTextures\floor_PE.bmp');
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\ceiling_PE.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('ceiling_pe', ExeDir + '\3DTextures\ceiling_PE.bmp');
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
if F3DModel.FFiles.IndexOf(ExeDir + '\3DTextures\door.bmp') = -1 then
begin
CreatedMaterial := MatLib.AddTextureMaterial('door', ExeDir + '\3DTextures\door.bmp');
CreatedMaterial.Material.MaterialOptions := [moNoLighting];
CreatedMaterial.Material.Texture.TextureMode := tmDecal;
end;
TimerOnSelectNodes.OnTimer := nil;
FaceList := Faces;
IsRoof := false;
@ -5126,10 +5161,21 @@ try
for k := 0 to pCnt - 1 do
begin
p := Face.Points[k];
if Face.RecType <> ftNet3DSObject then
Face.Points[k] := DoublePoint(p.x, p.y, p.z + FZOrder * UOMToMetre(1000 / FCAD.PCad.MapScale))
//Tolik 24/7/2025 --
if AFirstLoad then
begin
if Face.RecType <> ftNet3DSObject then
Face.Points[k] := DoublePoint(p.x, p.y, p.z + FZOrder * UOMToMetre(1000 / FCAD.PCad.MapScale))
else
Face.Points[k] := DoublePoint(p.x, p.y + FZOrder * UOMToMetre(1000 / FCAD.PCad.MapScale) * Factor, p.z);
end
else
Face.Points[k] := DoublePoint(p.x, p.y + FZOrder * UOMToMetre(1000 / FCAD.PCad.MapScale) * Factor, p.z);
begin
if Face.RecType <> ftNet3DSObject then
Face.Points[k] := DoublePoint(p.x, p.y, p.z + aZOrder * UOMToMetre(1000 / FCAD.PCad.MapScale))
else
Face.Points[k] := DoublePoint(p.x, p.y + aZOrder * UOMToMetre(1000 / FCAD.PCad.MapScale) * Factor, p.z);
end;
end;
//glCompon.AddNode(x,y,z) - äîáàâëåíèå êîîðäèíàò êîìïîíåíòó,êîòîðûé íàõîäèòüñÿ â DummyCube,
@ -9469,6 +9515,9 @@ var
//
begin
FCadList := TList.Create; // Tolik 23/07/2025 -- ñïèñîê ëèñòîâ ïðîåêòà
SetLength(FFloorsHeightArray, 0); // ìàññèâ âûñîò ýòàæåé
//
//Tolik 27/05/2025 --
// Ñîçäàåì HUD-Dummy, êîòîðûé âñåãäà áóäåò â îäíîì ìåñòå
dummy := TGLDummyCube.Create(GLScene.Objects);
@ -11020,6 +11069,8 @@ end;
procedure Tfrm3D.FormDestroy(Sender: TObject);
var i: integer;
begin
FCadList.Free; // Tolik 23/07/2025 -- ñïèñîê ëèñòîâ ïðîåêòà
SetLength(FFloorsHeightArray, 0); // ìàññèâ âûñîò ýòàæåé
ObjMatList.Free; // Tolik 02/10/2019 --
if FSelection <> nil then
@ -12383,6 +12434,8 @@ var
dp1: T3dPoint;
LineToMove: T3dLine; // Tolik 19/06/2025 --
LastConnID: integer;//
cadheight: double;
SelList: TList; // Tolik 30/07/2025 --
function GetParentConnector(aNode: TTreeNode): T3DConnector;
begin
@ -12603,13 +12656,15 @@ var
if aLine.FSCSObject <> nil then
SCSLine := aLine.FSCSObject; // ñàìà òðàññà íà êàäå
//Tolik 18/07/2025 -- Undo êàäà(åñëè íå áûëî)
if G3dUndoList.IndexOf(TF_CAD(TPowerCad(SCSLine.Owner).Owner)) = -1 then
{
if G3dUndoList.IndexOf(TF_CAD(TPowerCad(SCSLine.Owner).Owner)) = -1 then
begin
UndoAct := TF_CAD(TPowerCad(SCSLine.Owner).Owner).SaveForUndo(uat_None, true, false, 0, false, true);
G3dUndoList.Add(TF_CAD(TPowerCad(SCSLine.Owner).Owner));
if UndoAct <> nil then
G3dUndoActList.Add(UndoAct);
end;
}
//
FaceList := TList.Create;
ObjList := TList.Create;
@ -12840,7 +12895,9 @@ var
begin
for i := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
if LineCatalog.ComponentReferences[i].ComponentType.SysName = ctsntube then
//if LineCatalog.ComponentReferences[i].ComponentType.SysName = ctsntube then
if ((LineCatalog.ComponentReferences[i].ComponentType.SysName = ctsntube) or
(LineCatalog.ComponentReferences[i].ComponentType.SysName = ctsnwiretray)) then
begin
TubeCompon := LineCatalog.ComponentReferences[i];
break;
@ -12870,7 +12927,7 @@ var
NewTraceNode := F_ProjMan.FindComponOrDirInTreeByList(SCSList.Id, JoinedLine.ID, False); //
if NewTraceNode <> nil then
begin
//Ñêîïèðîâàòü òðóáó
//Ñêîïèðîâàòü òðóáó (ëîòîê)
F_ProjMan.RollBackCut;
F_ProjMan.GSDat.ObjectID := PObjectData(ComponNode.Data).ObjectID;
F_ProjMan.GSDat.ItemType := PObjectData(ComponNode.Data).ItemType;
@ -12900,7 +12957,7 @@ var
NewTraceNode := F_ProjMan.FindComponOrDirInTreeByList(SCSList.Id, JoinedLine.ID, False); //
if NewTraceNode <> nil then
begin
//Ñêîïèðîâàòü òðóáó
//Ñêîïèðîâàòü òðóáó (ëîòîê)
F_ProjMan.RollBackCut;
F_ProjMan.GSDat.ObjectID := PObjectData(ComponNode.Data).ObjectID;
F_ProjMan.GSDat.ItemType := PObjectData(ComponNode.Data).ItemType;
@ -13080,7 +13137,8 @@ var
end;
end;
//3D
UpdateFaces(FaceList);
cadheight := getZOrder(TF_CAD(TPowerCad(SCSLine.Owner).Owner));
UpdateFaces(FaceList, 0, false, cadheight);
//restore selection
SelList := TList.Create;
for i := 0 to SCSModelTree.Items.Count - 1 do
@ -13123,6 +13181,51 @@ var
GisChangeFrom3D := True; // 11/07/2025 -- âûñòàâèòü ôëàã, ÷òîá áûëè èçìåíåíèÿ â ïðîåêòå èç 3Ä ...
end;
//
function GetSelList: TList;
var i: integer;
begin
Result := TList.Create;
for i := 0 to FSelection.Count - 1 do
begin
if TglBaseSceneObject(FSelection[i]).TagObject <> nil then
begin
currNode := TTreeNode(TglBaseSceneObject(FSelection[i]).TagObject);
ParentNode := GetParentNode(currNode);
//Åñëè âûáðàí ëèíåéíûé îáúåêò, ïîëó÷àåì òðàññó, è äâèãàåì åå êîííåêòîðû
if TObject(ParentNode.Data).ClassName = 'T3DLine' then
begin
if T3DLine(ParentNode.Data).FGLObject <> nil then
begin
if Result.IndexOf(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector1)) = -1 then
Result.Add(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector1));
if Result.IndexOf(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector2)) = -1 then
Result.Add(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector2));
end
end
else
begin
if TObject(ParentNode.Data).ClassName = 'T3DConnector' then
begin
if T3DConnector(ParentNode.Data).FGLObject <> nil then
begin
if Result.IndexOf(T3DConnector(ParentNode.Data)) = -1 then
Result.Add(T3DConnector(ParentNode.Data));
end;
end;
end;
end;
end;
end;
Procedure MoveSelected(aList: TList);
var i: integer;
begin
for i := 0 to aList.Count - 1 do
begin
Move3DConnector(T3DConnector(aList[i]), dp);
FMovedObjectsList.Remove(T3DConnector(aList[i]));
end;
end;
begin
//if not GLSceneViewer.Focused then
//begin
@ -13548,87 +13651,97 @@ begin
end;
end;
//
if TglBaseSceneObject(FSelection[0]).TagObject <> nil then
if FSelection.Count > 0 then // òóò ïîïðîáóåì ñäåëàòü ìíîæåñòâåííûé ñäâèã
begin
currNode := TTreeNode(TglBaseSceneObject(FSelection[0]).TagObject);
ParentNode := GetParentNode(currNode);
//Åñëè âûáðàí ëèíåéíûé îáúåêò, ïîëó÷àåì òðàññó, è äâèãàåì åå êîííåêòîðû
if TObject(ParentNode.Data).ClassName = 'T3DLine' then
SelList := GetSelList;
MoveSelected(SelList);
SelList.Free;
exit;
end
else
begin
if TglBaseSceneObject(FSelection[0]).TagObject <> nil then
begin
if T3DLine(ParentNode.Data).FGLObject <> nil then
currNode := TTreeNode(TglBaseSceneObject(FSelection[0]).TagObject);
ParentNode := GetParentNode(currNode);
//Åñëè âûáðàí ëèíåéíûé îáúåêò, ïîëó÷àåì òðàññó, è äâèãàåì åå êîííåêòîðû
if TObject(ParentNode.Data).ClassName = 'T3DLine' then
begin
Move3DConnector(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector1), dp);
FMovedObjectsList.Remove(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector1));
Move3DConnector(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector2), dp);
FMovedObjectsList.Remove(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector2));
if T3DLine(ParentNode.Data).FGLObject <> nil then
begin
Move3DConnector(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector1), dp);
FMovedObjectsList.Remove(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector1));
Move3DConnector(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector2), dp);
FMovedObjectsList.Remove(T3DConnector(T3DLine(ParentNode.Data).FJoinConnector2));
{
if TObject(T3DLine(ParentNode.Data).FGLObject).ClassName = 'TGLLines' then
begin
MovedStartPos1.x := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].X + dp.x;
MovedStartPos1.y := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].Y + dp.y;
MovedStartPos1.z := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].Z + dp.z;
MovedStartPos2.x := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[1].X + dp.x;
MovedStartPos2.y := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[1].Y + dp.y;
MovedStartPos2.z := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].Z + dp.z;
end;
Move3DLineEvent(TglBaseSceneObject(T3DLine(ParentNode.Data).FGLObject));
}
end;
{
if TObject(T3DLine(ParentNode.Data).FGLObject).ClassName = 'TGLLines' then
if T3DLine(ParentNode.Data).FSCSCompon <> nil then
begin
MovedStartPos1.x := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].X + dp.x;
MovedStartPos1.y := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].Y + dp.y;
MovedStartPos1.z := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].Z + dp.z;
SCSLine := TOrthoLine(T3DLine(ParentNode.Data).FSCSCompon);
SCSConnector := TConnectorObject(SCSLine.JoinConnector1);
MovedStartPos2.x := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[1].X + dp.x;
MovedStartPos2.y := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[1].Y + dp.y;
MovedStartPos2.z := TGLLines(T3DLine(ParentNode.Data).FGLObject).Nodes[0].Z + dp.z;
ConnToMove1 := nil;
ConnToMove2 := nil;
for j := 0 to ScsModelTree.Items.Count - 1 do
begin
if TObject(TTreeNode(SCSModelTree.Items[j]).Data).ClassName = 'T3DConnector' then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon <> nil then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon.ID = SCSConnector.ID then
begin
ConnToMove1 := T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data);
break;
end;
end;
end;
end;
SCSConnector := TConnectorObject(SCSLine.JoinConnector2);
for j := 0 to ScsModelTree.Items.Count - 1 do
begin
if TObject(TTreeNode(SCSModelTree.Items[j]).Data).ClassName = 'T3DConnector' then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon <> nil then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon.ID = SCSConnector.ID then
begin
ConnToMove2 := T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data);
break;
end;
end;
end;
end;
if ConnToMove1 <> nil then
Move3DConnector(ConnToMove1, dp);
if ConnToMove2 <> nil then
Move3DConnector(ConnToMove2, dp);
end;
Move3DLineEvent(TglBaseSceneObject(T3DLine(ParentNode.Data).FGLObject));
}
end;
{
if T3DLine(ParentNode.Data).FSCSCompon <> nil then
end
else
if TObject(ParentNode.Data).ClassName = 'T3DConnector' then
begin
SCSLine := TOrthoLine(T3DLine(ParentNode.Data).FSCSCompon);
SCSConnector := TConnectorObject(SCSLine.JoinConnector1);
ConnToMove1 := nil;
ConnToMove2 := nil;
for j := 0 to ScsModelTree.Items.Count - 1 do
begin
if TObject(TTreeNode(SCSModelTree.Items[j]).Data).ClassName = 'T3DConnector' then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon <> nil then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon.ID = SCSConnector.ID then
begin
ConnToMove1 := T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data);
break;
end;
end;
end;
end;
SCSConnector := TConnectorObject(SCSLine.JoinConnector2);
for j := 0 to ScsModelTree.Items.Count - 1 do
begin
if TObject(TTreeNode(SCSModelTree.Items[j]).Data).ClassName = 'T3DConnector' then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon <> nil then
begin
if T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data).FSCSCompon.ID = SCSConnector.ID then
begin
ConnToMove2 := T3DConnector(TTreeNode(SCSModelTree.Items[j]).Data);
break;
end;
end;
end;
end;
if ConnToMove1 <> nil then
Move3DConnector(ConnToMove1, dp);
if ConnToMove2 <> nil then
Move3DConnector(ConnToMove2, dp);
Move3DConnector(T3DConnector(ParentNode.Data), dp);
FMovedObjectsList.Remove(T3DConnector(ParentNode.Data));
end;
}
end
else
if TObject(ParentNode.Data).ClassName = 'T3DConnector' then
begin
Move3DConnector(T3DConnector(ParentNode.Data), dp);
FMovedObjectsList.Remove(T3DConnector(ParentNode.Data));
end;
end;
end;
@ -23076,6 +23189,338 @@ var
NextSideConnsList.Free;
SCSLineList.Free;
end;
Procedure CheckRecreateWireTrays;
var SavedGCadForm: TF_Cad;
SCSLine, JoinedLine: TOrthoLine;
i, j: integer;
FaceList, ObjList, Obj3dList: TList;//ñîáðàòü è óäàëèòü âñå îáúåêòû è ñâÿçàííûå ñíèìè óçëû äåðåâüåâ à òàêæå ôåéñû
// ò.ê. èõ íåîáõîäèìî áóäåò ïåðåñîçäàòü
TubeCompon: TSCSComponent;
SCSList: TSCSList;
LineCatalog: TSCSCatalog;
ComponNode, NewTraceNode, CadListNode, xScsNode: TTreeNode;
LineToMove, xLine: T3dLine;
SCSObjList: TList; // ñïèñîê îáúåêòîâ, êîòîðûå íóæíî áóäåò ïåðåïàðñèòü
SelObjClassNAme: string; // save selection
IstubeSel: Boolean; // if is tube select on trace
SelID: integer;
SelList: TList;
selCatalog: TSCSCatalog;
CameraPos: T3DPoint;
UndoAct: TListUndoAction;
SCSConn: TConnectorObject;
LineList, ComponList: TList;
LastConnID: integer;
cadheight: Double;
begin
//XConn.FJoinedLinesList
SCSConn := XConn.FSCSObject;
SCSList := F_ProjMan.GSCSBase.CurrProject.GetListByID(TF_CAD(TPowerCad(SCSConn.Owner).Owner).FCADListID);
//ñîáðàòü äîêó÷è âñå, ÷òî øëåïíåì
if SCSList <> nil then
begin
LineList := TList.Create;
ComponList := TList.Create;
for i := 0 to SCSConn.JoinedOrtholinesList.Count - 1 do
begin
SCSLine := TOrthoLine(SCSConn.JoinedOrtholinesList[i]);
LineCatalog := SCSList.GetCatalogFromReferencesBySCSID(SCSLine.ID);
for j := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin
if LineCatalog.ComponentReferences[j].ComponentType.SysName = ctsnWireTray then
begin
if LineList.IndexOf(SCSLine) = -1 then
LineList.Add(SCSLine);
if ComponList.IndexOf(LineCatalog.ComponentReferences[j]) = -1 then
ComponList.Add(LineCatalog.ComponentReferences[j]);
break;
end;
end;
end;
end;
//26/06/2025 -- save selection
IstubeSel := False;
SelId := -1;
CameraPos.x := GLSceneViewer.Camera.Position.X;
CameraPos.y := GLSceneViewer.Camera.Position.Y;
CameraPos.z := GLSceneViewer.Camera.Position.Z;
if FSelection.Count > 0 then
SelObjClassNAme := TObject(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).ClassName;
if TGLBaseSceneObject(FSelection[0]).TagObject <> nil then
begin
if SelObjClassNAme = 'T3DLineComponent' then
begin
if T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSCompon <> nil then
SelID := T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSCompon.ID;
end
else
if SelObjClassNAme = 'T3DLine' then
begin
if T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSObject <> nil then
SelID := T3DLineComponent(TTreeNode(TGLBaseSceneObject(FSelection[0]).TagObject).Data).FSCSObject.ID;
end;
end;
DeselectGLObjectsT; // drop selection
FaceList := TList.Create;
ObjList := TList.Create;
Obj3dList := TList.Create;
//ñîáèðàåì îáúåêòû(êîòîðûå ïîòîì øëåïíåì)
// ñ òðàññû
for i := 0 to xConn.FJoinedLinesList.Count - 1 do
begin
ObjList.Add(T3dLine(xConn.FJoinedLinesList[i]).FGLObject);
FaceList.Add(T3dLine(xConn.FJoinedLinesList[i]).FFace);
Obj3dList.Add(T3dLine(xConn.FJoinedLinesList[i]));
end;
//ñáðîñ èç îñí. äåðåâà (âñå âìåñòå â îäíîì öèêëå íèççÿ, ò.ê. ïðè óäàëåíèè òðàññû óäàëèòñÿ íå îäèí óçåë à íåñê.,
//ó÷èòûâàÿ äî÷åðíèå è íàåáíåòñÿ ñ÷åò÷èê öèêëà)
SCSModelTree.Items.BeginUpdate;
for i := SCSModelTree.Items.Count - 1 downto 0 do
begin
if TObject(SCSModelTree.Items[i].data).ClassName = 'T3DLine' then
begin
if T3dLine(SCSModelTree.Items[i].data).FSCSObject <> nil then
begin
for j := 0 to xConn.FJoinedLinesList.Count - 1 do
begin
if T3DLine(SCSModelTree.Items[i].data) = T3DLine(xConn.FJoinedLinesList[j]) then
begin
ComponNode := SCSModelTree.Items[i].getFirstChild;
while ComponNode <> nil do
begin
if TObject(ComponNode.data).ClassName = 'T3DLineComponent' then
begin
if T3DLineComponent(ComponNode.data).FGLObject <> nil then
begin
if ObjList.IndexOf(T3DLineComponent(ComponNode.data).FGLObject) = -1 then
ObjList.Add(T3DLineComponent(ComponNode.data).FGLObject);
end;
if T3DLineComponent(ComponNode.data).FFace <> nil then
begin
if FaceList.IndexOf(T3DLineComponent(ComponNode.data).FFace) = -1 then
FaceList.Add(T3DLineComponent(ComponNode.data).FFace);
end;
if Obj3DList.IndexOf(T3DLineComponent(ComponNode.data)) = -1 then
Obj3DList.Add(T3DLineComponent(ComponNode.data));
end;
ComponNode := SCSModelTree.Items[i].GetNextChild(ComponNode);
end;
SCSModelTree.Items.Delete(SCSModelTree.Items[i]);
break;
end;
end;
end;
end;
end;
SCSModelTree.Items.EndUpdate;
//ñ îáîèõ êîííåêòîðîâ îäíèì öèêëîì
DuplicateNodeTree.Items.BeginUpdate;
for i := DuplicateNodeTree.Items.Count - 1 downto 0 do
begin
if TObject(DuplicateNodeTree.Items[i].Data).ClassName = 'T3DLineComponent' then
begin
for j := 0 to ComponList.Count - 1 do
begin
if T3DLineComponent(DuplicateNodeTree.Items[i].Data).FSCSComponID = TSCSComponent(ComponList[j]).id then
begin
if ObjList.IndexOf(T3DLineComponent(DuplicateNodeTree.Items[i].Data).FGLObject) = -1 then
ObjList.Add(T3DLineComponent(DuplicateNodeTree.Items[i].Data).FGLObject);
if Obj3dList.IndexOf(T3DLineComponent(DuplicateNodeTree.Items[i].Data)) = -1 then
Obj3dList.Add(T3DLineComponent(DuplicateNodeTree.Items[i].Data));
if T3DLineComponent(DuplicateNodeTree.Items[i].Data).FFace <> nil then
begin
if FaceList.IndexOf(T3DConnector(DuplicateNodeTree.Items[i].Data).FFace) = -1 then
FaceList.Add(T3DConnector(DuplicateNodeTree.Items[i].Data).FFace);
end;
DuplicateNodeTree.Items.Delete(DuplicateNodeTree.Items[i]);
break;
end;
end;
end;
end;
DuplicateNodeTree.Items.EndUpdate;
//øëåïàåì îáúåêòû
for i := 0 to FaceList.Count - 1 do
begin
TF_CAD(TPowerCad(SCSConn.Owner).Owner).PCad.Faces.Remove(TFaceRecord(FaceList[i]));
TfaceRecord(FaceList[i]).Free;
end;
FaceList.clear;
for i := 0 to ObjList.Count - 1 do
begin
DummyCube.Remove(TGLBaseSceneObject(ObjList[i]), false);
TGLBaseSceneObject(ObjList[i]).Free;
end;
ObjList.Clear;
for i := 0 to Obj3dList.Count - 1 do
begin
if frm3d.F3DModel.FScsObjects.IndexOf(Obj3dList[i]) <> -1 then
frm3d.F3DModel.FScsObjects.Remove(Obj3dList[i]);
TObject(Obj3dList[i]).Free;
end;
//ñîáðàòü ÑÊÑ-îáúåêòû, êîòîðûå çàäåë ñäâèã
SCSObjList := TList.Create;
SCSObjList.Add(SCSConn);
for i := 0 to LineList.Count - 1 do
SCSObjList.Add(LineList[i]);
//ïåðåïàðñèòü
j := frm3d.F3DModel.FScsObjects.Count;
Frm3D.F3DModel.CollectScsModel(FaceList, SCSObjList);
//Çàêèíóòü äåðåâî Tolik 22/06/2025 --
CadListNode := nil;
for i := 0 to SCSModelTree.Items.Count - 1 do
begin
if TObject(SCSModelTree.Items[i].Data).ClassNAme = 'TF_CAD' then
begin
if TF_Cad(SCSModelTree.Items[i].Data).FCADListID = TF_CAD(TPowercad(SCSConn.Owner).Owner).FCADListID then
begin
CadListNode := SCSModelTree.Items[i];
break;
end;
end;
end;
if CadListNode <> nil then
begin
LastConnID := -1;
for i := frm3d.F3DModel.FScsObjects.Count - 1 downto j do
begin
if TObject(frm3d.F3DModel.FScsObjects[i]) is T3DConnector then
begin
xConn := T3DConnector(frm3d.F3DModel.FScsObjects[i]);
if (xConn.FListID <> GCadForm.FCADListID) then
Continue;
if (xConn.FConnType = ct_Empty) then
begin
// Tolik 24/09/2018 - -
//xConn.FFace.F3DObject := xConn;
//Continue;
if not xConn.FisPipeElement then
begin
xConn.FFace.F3DObject := xConn;
Continue;
end
else
begin
//Tolik 07/05/2025 --
if ((xConn.FSCSComponID <> -1) and (xConn.FSCSComponID = LastConnID)) then
begin
xScsNode := DuplicateNodeTree.Items.AddChild(nil, xConn.FName);;
xScsNode.Data := xConn;
xScsNode.ImageIndex := 3;
xScsNode.SelectedIndex := xScsNode.ImageIndex;
xConn.FFace.FTreeNode := xScsNode;
end
else
begin
LastConnID := xConn.FSCSComponID;
xScsNode := ScsModelTree.Items.AddChild(CadListNode, xConn.FName);
xScsNode.Data := xConn;
xScsNode.ImageIndex := 3;
xScsNode.SelectedIndex := xScsNode.ImageIndex;
xConn.FFace.FTreeNode := xScsNode;
end;
end;
end
else
begin
xScsNode := ScsModelTree.Items.AddChild(CadListNode, xConn.FName);
xScsNode.Data := xConn;
xScsNode.ImageIndex := 3;
xScsNode.SelectedIndex := xScsNode.ImageIndex;
xConn.FFace.FTreeNode := xScsNode;
//Tolik 15/10/2018 --
// if xConn.F3dModelFileName <> '' then
xConn.FFace.F3DObject := xConn;
end;
end;
if TObject(frm3d.F3DModel.FScsObjects[i]) is T3DLine then
begin
xLine := T3DLine(frm3d.F3DModel.FScsObjects[i]);
if (xLine.FListID <> FCAD.FCADListID) then
Continue;
xScsNode:= ScsModelTree.Items.AddChild(CadListNode, xLine.FName);
xScsNode.Data := xLine;
xScsNode.ImageIndex := 2;
xScsNode.SelectedIndex := xScsNode.ImageIndex;
xLine.FFace.FTreeNode := xScsNode;
end;
end;
end;
//3D
cadheight := getZOrder(TF_CAD(TPowerCad(SCSLine.Owner).Owner));
UpdateFaces(FaceList, 0, false, cadheight);
//restore selection
SelList := TList.Create;
for i := 0 to SCSModelTree.Items.Count - 1 do
begin
if TObject(TTreeNode(SCSModelTree.Items[i]).data).classname = SelObjClassNAme then
begin
if SelObjClassNAme = 'T3DLineComponent' then
begin
if T3DLineComponent(TTreeNode(SCSModelTree.Items[i]).Data).FSCSCompon.ID = SelID then
begin
SelList.Add(T3DLineComponent(TTreeNode(SCSModelTree.Items[i]).Data).FGLObject);
break;
end;
end
else
if SelObjClassNAme = 'T3DLine' then
begin
if T3DLineComponent(TTreeNode(SCSModelTree.Items[i]).Data).FSCSObject.ID = SelID then
begin
SelList.Add(T3DLine(TTreeNode(SCSModelTree.Items[i]).Data).FGLObject);
break;
end;
end;
end;
end;
if SelList.Count > 0 then
SelectGLObjects(SelList);
FaceList.Free;
ObjList.Free;
Obj3dList.Free;
SelList.Free;
SCSObjList.Free;
LineList.Free;
ComponList.Free;
//Tolik 01/07/2025 -- êàìåðó íà ìåñòî
GLSceneViewer.Camera.Position.X := CameraPos.x;
GLSceneViewer.Camera.Position.y := CameraPos.y;
GLSceneViewer.Camera.Position.z := CameraPos.z;
GCadForm := SavedGCadForm;
GisChangeFrom3D := True; // 11/07/2025 -- âûñòàâèòü ôëàã, ÷òîá áûëè èçìåíåíèÿ â ïðîåêòå èç 3Ä ...
end;
(*
//
//Tolik 21/05/2025--
Procedure CheckRecreateWireTrays; //åñëè íà òðàññàõ áóäóò ïðîâîëî÷íûå ëîòêè, òî èõ âñå íóæíî ïåðåñîçäàòü äëÿ ïåðåñ÷åòà
@ -23666,6 +24111,7 @@ var
end;
end;
end;
*)
//Tolik 05/06/2025-- ïðè ïîïûòêå ñòâèãà êîííåêòîðà íå äàòü íàåõàòü êîííåêòîðó íà âòîðîé êîííåêòîëð òðàññû
// è ñúåõàòü âûøå èëè íèæå òåêóùåãî ýòàæà
@ -23809,8 +24255,12 @@ begin
if not CheckCanMoveConnector(xConn, dp) then
exit;
//
if not CheckCanMoveConn(aObj) then
exit;
//16/08/2025 -- òóò ïðîâåðèòü, èíà÷å ïîëîìàåòñÿ ñäâèã ïóñòîãî êîííåêòîðà (ïðîñòî êîíöåâèêà òðàññû -- íå ñðàáîòàåò)
if xConn.FisPipeElement then
begin
if not CheckCanMoveConn(aObj) then
exit;
end;
// Tolik 26/04/2018 --
{
if dp.y <> 0 then
@ -24381,7 +24831,7 @@ begin
end;
AlignPipeObjects;
AlignRelatedConns;
CheckRecreateWireTrays;//ëîòîê ïðîâîëî÷íûé
//CheckRecreateWireTrays;//ëîòîê ïðîâîëî÷íûé
MovedLineList.free;
OtherSideConnList.free;
RelatedPipeConns.free;

View File

@ -1,8 +1,8 @@
object FSCS_Main: TFSCS_Main
Left = -8
Top = -8
Width = 1380
Height = 744
Left = 1
Top = 1
Width = 1358
Height = 726
HorzScrollBar.Color = clBtnFace
HorzScrollBar.ParentColor = False
VertScrollBar.Color = clBtnFace
@ -33,7 +33,7 @@ object FSCS_Main: TFSCS_Main
object sDiv1: TSplitter
Left = 5
Top = 188
Height = 474
Height = 456
AutoSnap = False
Color = clBtnFace
MinSize = 1
@ -46,9 +46,9 @@ object FSCS_Main: TFSCS_Main
ExplicitHeight = 641
end
object sDiv2: TSplitter
Left = 1356
Left = 1334
Top = 188
Height = 474
Height = 456
Align = alRight
AutoSnap = False
Color = clBtnFace
@ -66,7 +66,7 @@ object FSCS_Main: TFSCS_Main
Left = 0
Top = 188
Width = 5
Height = 474
Height = 456
Align = alLeft
Alignment = taLeftJustify
BevelOuter = bvNone
@ -80,12 +80,13 @@ object FSCS_Main: TFSCS_Main
OnDockOver = PDock1DockOver
OnResize = PDock1Resize
OnUnDock = PDock1UnDock
ExplicitHeight = 474
end
object pDock2: TPanel
Left = 1359
Left = 1337
Top = 188
Width = 5
Height = 474
Height = 456
Align = alRight
Alignment = taRightJustify
BevelOuter = bvNone
@ -98,20 +99,24 @@ object FSCS_Main: TFSCS_Main
OnDockDrop = PDock1DockDrop
OnDockOver = PDock1DockOver
OnUnDock = PDock1UnDock
ExplicitLeft = 1359
ExplicitHeight = 474
end
object pCADList: TPanel
Left = 0
Top = 662
Width = 1364
Top = 644
Width = 1342
Height = 23
Align = alBottom
BevelOuter = bvNone
BorderStyle = bsSingle
TabOrder = 2
ExplicitTop = 662
ExplicitWidth = 1364
object pageCADList: TPageControl
Left = 0
Top = 0
Width = 1362
Width = 1340
Height = 21
Align = alClient
Font.Charset = RUSSIAN_CHARSET
@ -123,13 +128,14 @@ object FSCS_Main: TFSCS_Main
Style = tsFlatButtons
TabOrder = 0
OnChange = pageCADListChange
ExplicitWidth = 1362
end
end
object cbMainPanel: TControlBar
AlignWithMargins = True
Left = 3
Top = 0
Width = 1358
Width = 1336
Height = 136
HelpContext = 76000
Margins.Top = 0
@ -153,6 +159,7 @@ object FSCS_Main: TFSCS_Main
OnBandPaint = cbMainPanelBandPaint
OnDockOver = cbMainPanelDockOver
OnMouseDown = cbMainPanelMouseDown
ExplicitWidth = 1358
object tbFile: TToolBar
Left = 11
Top = 2
@ -1214,7 +1221,7 @@ object FSCS_Main: TFSCS_Main
object pnHintBar: TRzSizePanel
Left = 0
Top = 136
Width = 1364
Width = 1342
Height = 52
Align = alTop
BorderHighlight = clBtnFace
@ -1224,6 +1231,7 @@ object FSCS_Main: TFSCS_Main
TabOrder = 4
VisualStyle = vsClassic
OnHotSpotClick = pnHintBarHotSpotClick
ExplicitWidth = 1364
end
object ActionManager: TActionManager
ActionBars.SessionCount = 1080
@ -5860,7 +5868,7 @@ object FSCS_Main: TFSCS_Main
Left = 496
Top = 232
Bitmap = {
494C0101D2008C01A80310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101D2008C01B80310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000005003000001002000000000000050
0300000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -12870,7 +12878,7 @@ object FSCS_Main: TFSCS_Main
Left = 248
Top = 280
Bitmap = {
494C010123008C01C00320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010123008C01D00320001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000800000009000000001002000000000000020
0100000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -15442,7 +15450,7 @@ object FSCS_Main: TFSCS_Main
Left = 240
Top = 408
Bitmap = {
494C010112008C01B4030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010112008C01C4030E000E00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000038000000460000000100200000000000403D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -19945,7 +19953,7 @@ object FSCS_Main: TFSCS_Main
Left = 240
Top = 344
Bitmap = {
494C0101DE008C019C0618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101DE008C01AC0618001800FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
00000000000036000000280000006000000040050000010020000000000000E0
070000000000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009D9188003D2413003D241300FFFF

View File

@ -20090,8 +20090,9 @@ begin
frm3d.ShowModal;
FreeAndNil(frm3D);
//Tolik 11/07/2025 -- âîññòàíîâèòü ïðîåêò, åñëè áûëè èçìåíåíèÿ ÷åðåç 3Ä...
if GisChangeFrom3D then
{if GisChangeFrom3D then
UndoListInPM(-1, GetPathToSCSUndoUniqDir(true), true, 0, 0);
}
//
// Tolik 23/07/2018 --
GCadForm.PCad.Refresh;
@ -21471,6 +21472,7 @@ var
//tmpCad: TF_Cad;
Dir3dUndoName: string;
UndoAct: TListUndoAction;
cadheight: Double;
{
procedure InsertIntoHList(Cad: TF_CAD);
var
@ -21782,6 +21784,38 @@ begin
GetSortModelLists;
// Tolik 26/04/2018 --
ListOfCadsFor3DModel := TList.Create;
//Tolik 24/7/2025 --
cadHeight := 0;
frm3d.FCadList.Add(SavedGCadForm);
SetLength(frm3d.FFloorsHeightArray, Length(frm3d.FFloorsHeightArray) + 1);
frm3d.FFloorsHeightArray[0] := 0;
if HLists.Count > 0 then
begin
for i := 1 to HLists.Count -1 do
begin
frm3d.FCadList.Add(HLists[i]);
SetLength(frm3d.FFloorsHeightArray, Length(frm3d.FFloorsHeightArray) + 1);
CadHeight := CadHeight + MetreToUOM(TF_CAD(HLists[i -1]).FListSettings.HeightRoom) + 0.01;
frm3d.FFloorsHeightArray[Length(frm3d.FFloorsHeightArray) - 1] := CadHeight;
end;
end;
if LLists.Count > 0 then
begin
cadHeight := 0;
for i := 0 to LLists.Count - 1 do
begin
frm3d.FCadList.Add(LLists[i]);
SetLength(frm3d.FFloorsHeightArray, Length(frm3d.FFloorsHeightArray) + 1);
CadHeight := CadHeight - MetreToUOM(TF_CAD(LLists[i]).FListSettings.HeightRoom) - 0.01;
frm3d.FFloorsHeightArray[Length(frm3d.FFloorsHeightArray) - 1] := CadHeight;
end;
end;
//SetLength(frm3d.FFloorsHeightArray, Length(frm3d.FFloorsHeightArray) + 1);
//frm3d.FFloorsHeightArray[Length(frm3d.FFloorsHeightArray) - 1] := frm3D.FZOrder + MetreToUOM(ListParams.Settings.HeightRoom + 0.01);
//
if HLists.Count > 0 then
begin
HListOfCadsFor3DModel := TList.Create;
@ -21799,6 +21833,9 @@ begin
end;
end;
{ frm3d.FCadList.Add(SavedGCadForm);
SetLength(frm3d.FFloorsHeightArray, Length(frm3d.FFloorsHeightArray) + 1);
frm3d.FFloorsHeightArray[Length(frm3d.FFloorsHeightArray) - 1] := 0;}
//
// Ýòàæè âûøå óðîâíÿ çåìëè
frm3D.FZOrder := 0;
@ -21857,6 +21894,11 @@ begin
begin
ListParams := GetListParams(GCadForm.FCADListID);
frm3D.FZOrder := frm3D.FZOrder + MetreToUOM(ListParams.Settings.HeightRoom + 0.01);
//Tolik 24/7/2025 --
//frm3d.FCadList.Add(GCadForm);
//SetLength(frm3d.FFloorsHeightArray, Length(frm3d.FFloorsHeightArray) + 1);
//frm3d.FFloorsHeightArray[Length(frm3d.FFloorsHeightArray) - 1] := frm3D.FZOrder + MetreToUOM(ListParams.Settings.HeightRoom + 0.01);
//
end;
end
else
@ -21876,7 +21918,10 @@ begin
//Tolik 29/09/2021 --
//frm3D.FZOrder := frm3D.FZOrder - ListParams.Settings.HeightRoom - 0.01;
frm3D.FZOrder := frm3D.FZOrder - MetreToUOM(ListParams.Settings.HeightRoom - 0.01);
//
//Tolik 24/07/2025--
//frm3d.FCadList.Add(GCadForm);
//SetLength(frm3d.FFloorsHeightArray, Length(frm3d.FFloorsHeightArray) + 1);
//frm3d.FFloorsHeightArray[Length(frm3d.FFloorsHeightArray) - 1] := frm3D.FZOrder - MetreToUOM(ListParams.Settings.HeightRoom + 0.01);
end
else
begin

View File

@ -12555,7 +12555,6 @@ begin
if aConnector.ID = ASnapConnector.ID then
exit;
//
SwapConnectors := False;
if CheckIsRaise(ASnapConnector) then
@ -24478,6 +24477,15 @@ var
begin
RaiseLine := Nil;
SnapConn := Nil;
//Tolik 06/08/2025 -- тут дядим возможность создать наклонную трассу
if GCadForm.FAutoPosTraceBetweenRM then // если разрешены наклонные трассы
begin
Result := True;
SnapConn := ASnapConnector;
Snap_Type := 1; // просто коннектор на коннектор -- как есть
exit;
end;
//
if compareValue(AConnector.ActualZOrder[1], ASnapConnector.ActualZOrder[1]) <> 0 then
begin
CreateRaiseOnConnector(AConnector, ASnapConnector.ActualZOrder[1]); // ńîçäŕňü đŕéç íŕ ęîííĺęňîđĺ

View File

@ -2,7 +2,7 @@ object DMCommon: TDMCommon
OldCreateOrder = False
OnCreate = DataModuleCreate
Left = 57
Top = 240
Top = 144
Height = 584
Width = 956
object mtConnectionRelType: TkbmMemTable
@ -286,7 +286,7 @@ object DMCommon: TDMCommon
Left = 394
Top = 25
Bitmap = {
494C01013B004802300110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01013B004802340110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000F0000000010020000000000000F0
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -2278,7 +2278,7 @@ object DMCommon: TDMCommon
Left = 594
Top = 33
Bitmap = {
494C010139003B00C40010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010139003B00C80010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000F0000000010020000000000000F0
00000000000000000000000000000000000000000000BDBDBD00A5A5A5009C9C
9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C9C009C9C

View File

@ -9,7 +9,7 @@ object F_MAIN: TF_MAIN
BorderIcons = [biSystemMenu]
BorderStyle = bsNone
Caption = #1053#1086#1088#1084#1072#1090#1080#1074#1085#1072#1103' '#1073#1072#1079#1072' '#1057#1050#1057' '#1082#1086#1084#1087#1086#1085#1077#1085#1090#1086#1074
ClientHeight = 696
ClientHeight = 689
ClientWidth = 357
Color = clWindow
Constraints.MinWidth = 160
@ -39,7 +39,7 @@ object F_MAIN: TF_MAIN
TextHeight = 13
object Panel_OKCancel: TPanel
Left = 0
Top = 635
Top = 628
Width = 357
Height = 61
Align = alBottom
@ -52,6 +52,7 @@ object F_MAIN: TF_MAIN
ParentFont = False
TabOrder = 0
Visible = False
ExplicitTop = 635
object Label_Kolvo: TLabel
Left = 16
Top = 8
@ -99,7 +100,7 @@ object F_MAIN: TF_MAIN
Left = 0
Top = 0
Width = 357
Height = 635
Height = 628
Align = alClient
BevelOuter = bvNone
DockSite = True
@ -110,9 +111,10 @@ object F_MAIN: TF_MAIN
OnDblClick = Panel_Main1Click
OnResize = Panel_MainResize
OnUnDock = Panel_MainUnDock
ExplicitHeight = 635
object Panel_Addition: TRzSizePanel
Left = 0
Top = 434
Top = 427
Width = 357
Height = 201
Align = alBottom
@ -123,6 +125,7 @@ object F_MAIN: TF_MAIN
SizeBarWidth = 7
TabOrder = 0
VisualStyle = vsClassic
ExplicitTop = 434
object ToolBar_CompData: TToolBar
Left = 0
Top = 47
@ -1294,7 +1297,7 @@ object F_MAIN: TF_MAIN
Left = 0
Top = 0
Width = 357
Height = 434
Height = 427
ActivePage = tsComponents
SaveResources = True
Align = alClient
@ -1321,11 +1324,13 @@ object F_MAIN: TF_MAIN
TabStyle = tsSquareCorners
OnChange = pcObjectsChange
OnMouseMove = pcObjectsMouseMove
ExplicitHeight = 434
FixedDimension = 22
object tsTemplates: TRzTabSheet
Hint = #1054#1073#1098#1077#1082#1090#1099
ImageIndex = 1
Caption = #1054#1073#1098#1077#1082#1090#1099
ExplicitHeight = 434
object lvTemplates: TRzListView
Left = 160
Top = 30
@ -1454,11 +1459,12 @@ object F_MAIN: TF_MAIN
ImageIndex = 2
Caption = #1050#1086#1084#1087#1086#1085#1077#1085#1090#1099
OnResize = tsComponentsResize
ExplicitHeight = 434
object Panel_Tree: TPanel
Left = 0
Top = 0
Width = 332
Height = 434
Height = 427
Align = alClient
BevelOuter = bvNone
Caption = #1055#1072#1087#1082#1080
@ -1476,6 +1482,7 @@ object F_MAIN: TF_MAIN
OnEndDock = Panel_TreeEndDock
OnMouseMove = Panel_TreeMouseMove
OnStartDock = Panel_TreeStartDock
ExplicitHeight = 434
object splFindInTree: TSplitter
Left = 0
Top = 201
@ -1580,7 +1587,7 @@ object F_MAIN: TF_MAIN
Left = 0
Top = 204
Width = 332
Height = 211
Height = 204
Align = alClient
DoubleBuffered = True
DragMode = dmAutomatic
@ -1619,6 +1626,7 @@ object F_MAIN: TF_MAIN
OnMouseMove = Tree_CatalogMouseMove
OnMouseUp = Tree_CatalogMouseUp
OnStartDrag = Tree_CatalogStartDrag
ExplicitHeight = 211
end
object Panel_New: TPanel
Left = -169
@ -1710,10 +1718,6 @@ object F_MAIN: TF_MAIN
FixedDimension = 13
object tsFind: TRzTabSheet
Caption = #1055#1086#1080#1089#1082
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object Panel2: TPanel
Left = 0
Top = 0
@ -2167,13 +2171,14 @@ object F_MAIN: TF_MAIN
end
object pnFilterIsOn: TRzPanel
Left = 0
Top = 415
Top = 408
Width = 332
Height = 19
Align = alBottom
BorderInner = fsFlat
BorderOuter = fsNone
TabOrder = 4
ExplicitTop = 415
object lbFilterIsOn: TRzLabel
Left = 8
Top = 2
@ -2216,6 +2221,7 @@ object F_MAIN: TF_MAIN
Caption = #1043#1088#1091#1087#1087#1099
ParentShowHint = False
ShowHint = False
ExplicitHeight = 434
object Splitter1: TSplitter
Left = 0
Top = 105
@ -2551,7 +2557,7 @@ object F_MAIN: TF_MAIN
Left = 0
Top = 108
Width = 332
Height = 326
Height = 319
SmoothExpandCollapse = False
FitColumnToClientWidth = True
RightClickSelect = True
@ -8298,7 +8304,7 @@ object F_MAIN: TF_MAIN
Left = 200
Top = 152
Bitmap = {
494C010104005001240310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010104005001280310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

View File

@ -1,11 +1,11 @@
object F_ResourceReport: TF_ResourceReport
Left = 251
Top = 5
Top = 0
HelpContext = 87000
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = #1054#1090#1095#1077#1090#1099
ClientHeight = 705
ClientHeight = 689
ClientWidth = 948
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
@ -23,12 +23,13 @@ object F_ResourceReport: TF_ResourceReport
TextHeight = 13
object gbViewClose: TRzGroupBox
Left = 0
Top = 664
Top = 648
Width = 948
Height = 41
Align = alBottom
TabOrder = 2
OnResize = gbViewCloseResize
ExplicitTop = 664
object btShowReport: TRzBitBtn
Left = 112
Top = 13
@ -137,24 +138,26 @@ object F_ResourceReport: TF_ResourceReport
Left = 0
Top = 44
Width = 948
Height = 620
Height = 604
Align = alClient
BorderOuter = fsNone
TabOrder = 1
ExplicitHeight = 620
object splitTarget: TSplitter
Left = 209
Top = 0
Height = 443
Height = 427
ExplicitHeight = 449
end
object pnParamsAndModes: TRzPanel
Left = 0
Top = 443
Top = 427
Width = 948
Height = 177
Align = alBottom
BorderOuter = fsNone
TabOrder = 2
ExplicitTop = 443
object RzGroupBox1: TRzGroupBox
Left = 4
Top = -1
@ -641,6 +644,8 @@ object F_ResourceReport: TF_ResourceReport
object tsMarkPagesParams: TRzTabSheet
TabVisible = False
Caption = 'tsMarkPagesParams'
ExplicitWidth = 0
ExplicitHeight = 0
object lbNoCabinet: TLabel
Left = 256
Top = 64
@ -732,6 +737,8 @@ object F_ResourceReport: TF_ResourceReport
object tsCablePathParams: TRzTabSheet
TabVisible = False
Caption = 'tsCablePathParams'
ExplicitWidth = 0
ExplicitHeight = 0
object Label5: TLabel
Left = 8
Top = 106
@ -867,14 +874,15 @@ object F_ResourceReport: TF_ResourceReport
Left = 212
Top = 0
Width = 736
Height = 443
Height = 427
Align = alClient
TabOrder = 1
ExplicitHeight = 443
object tvReports: TFlyTreeViewPro
Left = 1
Top = 14
Width = 734
Height = 428
Height = 412
SelectedTextColor = clWhite
Align = alClient
PopupMenu = pmReports
@ -899,6 +907,7 @@ object F_ResourceReport: TF_ResourceReport
ShowRoot = False
ShowImages = True
StructureCol = 1
ExplicitHeight = 428
Data = {
29010000010000000610540046006C0079004E006F00640065000F0100000612
430065006C006C00730054006500780074004200000006280D000A0054006600
@ -1113,7 +1122,7 @@ object F_ResourceReport: TF_ResourceReport
060E560069007300690062006C006500D004000001060A570069006400740068
00E40400001302000000000000}
Bitmap = {
494C01010100DC00700210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01010100DC00740210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001002000000000000010
000000000000000000000000000000000000FFFFFF00FF9C0000CE630000CE63
0000CE630000CE630000CE630000CE630000CE630000CE630000CE630000FFFF
@ -1273,10 +1282,11 @@ object F_ResourceReport: TF_ResourceReport
Left = 0
Top = 0
Width = 209
Height = 443
Height = 427
Align = alLeft
Caption = #1054#1090#1095#1077#1090' '#1076#1083#1103'...'
TabOrder = 0
ExplicitHeight = 443
object RzLabel1: TRzLabel
Left = 3
Top = 326
@ -1458,7 +1468,7 @@ object F_ResourceReport: TF_ResourceReport
Left = 16
Top = 224
Bitmap = {
494C01010C00D400740210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01010C00D400780210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000004000000001002000000000000040
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000

View File

@ -3,7 +3,7 @@ object DM: TDM
OnCreate = DataModuleCreate
OnDestroy = DataModuleDestroy
Left = 131
Top = 165
Top = 13
Height = 715
Width = 1022
object Database_SCS: TpFIBDatabase
@ -321,7 +321,7 @@ object DM: TDM
Left = 426
Top = 16
Bitmap = {
494C0101150044005C0110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010115004400600110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000006000000001002000000000000060
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -1126,7 +1126,7 @@ object DM: TDM
Left = 493
Top = 2
Bitmap = {
494C01010200440014011A001900FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01010200440018011A001900FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000068000000190000000100200000000000A028
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -1474,7 +1474,7 @@ object DM: TDM
Left = 492
Top = 41
Bitmap = {
494C01013F0044002C0110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01013F004400300110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000000001000001002000000000000000
0100000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -3652,7 +3652,7 @@ object DM: TDM
object ImageList_InterfType: TImageList
Left = 554
Bitmap = {
494C010101004400140110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010101004400180110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001002000000000000010
0000000000000000000000000000000000004D4F4F004D4F4F00000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -9419,7 +9419,7 @@ object DM: TDM
Left = 600
Top = 16
Bitmap = {
494C010105004400080110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101050044000C0110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -9718,7 +9718,7 @@ object DM: TDM
Left = 480
Top = 80
Bitmap = {
494C010102004400140110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C010102004400180110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001002000000000000010
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -9965,7 +9965,7 @@ object DM: TDM
Left = 1018
Top = 240
Bitmap = {
494C010113004400080110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101130044000C0110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000005000000001002000000000000050
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -10638,7 +10638,7 @@ object DM: TDM
Left = 1109
Top = 234
Bitmap = {
494C01010200440008011A001900FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101020044000C011A001900FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000068000000190000000100200000000000A028
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -10986,7 +10986,7 @@ object DM: TDM
Left = 1210
Top = 240
Bitmap = {
494C010101004400080110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101010044000C0110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001002000000000000010
0000000000000000000000000000000000000000000000000000FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
@ -11129,7 +11129,7 @@ object DM: TDM
Left = 1100
Top = 289
Bitmap = {
494C01013F004400080110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C01013F0044000C0110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000000001000001002000000000000000
0100000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@ -13252,7 +13252,7 @@ object DM: TDM
Left = 1104
Top = 344
Bitmap = {
494C010102004400080110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
494C0101020044000C0110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000001000000001002000000000000010
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000