diff --git a/POWERCAD30/UNITS/form3d.dfm b/POWERCAD30/UNITS/form3d.dfm index fc2fb75..8fde548 100644 --- a/POWERCAD30/UNITS/form3d.dfm +++ b/POWERCAD30/UNITS/form3d.dfm @@ -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 diff --git a/POWERCAD30/UNITS/form3d.pas b/POWERCAD30/UNITS/form3d.pas index 3729344..638db9a 100644 --- a/POWERCAD30/UNITS/form3d.pas +++ b/POWERCAD30/UNITS/form3d.pas @@ -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,7 +11069,9 @@ 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 //FreeAndNil(FSelection); @@ -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; diff --git a/SRC/Main/USCS_Main.dfm b/SRC/Main/USCS_Main.dfm index 33e73ba..3c5afc6 100644 --- a/SRC/Main/USCS_Main.dfm +++ b/SRC/Main/USCS_Main.dfm @@ -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 diff --git a/SRC/Main/USCS_Main.pas b/SRC/Main/USCS_Main.pas index 3840558..2a60ee4 100644 --- a/SRC/Main/USCS_Main.pas +++ b/SRC/Main/USCS_Main.pas @@ -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 diff --git a/SRC/Main/U_Common.pas b/SRC/Main/U_Common.pas index 96093b2..199775c 100644 --- a/SRC/Main/U_Common.pas +++ b/SRC/Main/U_Common.pas @@ -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]); // создать райз на коннекторе diff --git a/SRC/SCSNormBase/U_DMCommon.dfm b/SRC/SCSNormBase/U_DMCommon.dfm index dc3680b..0deafff 100644 --- a/SRC/SCSNormBase/U_DMCommon.dfm +++ b/SRC/SCSNormBase/U_DMCommon.dfm @@ -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 diff --git a/SRC/SCSNormBase/U_MAIN.dfm b/SRC/SCSNormBase/U_MAIN.dfm index 62f1f5f..d639380 100644 --- a/SRC/SCSNormBase/U_MAIN.dfm +++ b/SRC/SCSNormBase/U_MAIN.dfm @@ -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 diff --git a/SRC/SCSNormBase/U_ResourceReport.dfm b/SRC/SCSNormBase/U_ResourceReport.dfm index dffc176..bd67103 100644 --- a/SRC/SCSNormBase/U_ResourceReport.dfm +++ b/SRC/SCSNormBase/U_ResourceReport.dfm @@ -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 diff --git a/SRC/SCSNormBase/Unit_DM_SCS.dfm b/SRC/SCSNormBase/Unit_DM_SCS.dfm index 738139c..1889b27 100644 --- a/SRC/SCSNormBase/Unit_DM_SCS.dfm +++ b/SRC/SCSNormBase/Unit_DM_SCS.dfm @@ -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